diff --git a/src/main/java/com/github/_1c_syntax/bsl/parser/description/MethodDescription.java b/src/main/java/com/github/_1c_syntax/bsl/parser/description/MethodDescription.java index 9641fa66..dc1b861d 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/parser/description/MethodDescription.java +++ b/src/main/java/com/github/_1c_syntax/bsl/parser/description/MethodDescription.java @@ -118,6 +118,11 @@ public static MethodDescription create(List comments) { return MethodDescriptionReader.read(comments); } + @Override + public String format(String lang, int maxLineLen) { + return ""; + } + private List computeAllElements() { List allElements = new ArrayList<>(keywords); parameters.forEach(parameter -> allElements.addAll(parameter.allElements())); diff --git a/src/main/java/com/github/_1c_syntax/bsl/parser/description/SourceDefinedSymbolDescription.java b/src/main/java/com/github/_1c_syntax/bsl/parser/description/SourceDefinedSymbolDescription.java index e43b3aec..cf599b02 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/parser/description/SourceDefinedSymbolDescription.java +++ b/src/main/java/com/github/_1c_syntax/bsl/parser/description/SourceDefinedSymbolDescription.java @@ -86,6 +86,24 @@ public interface SourceDefinedSymbolDescription { */ List getElements(); + /** + * Генерирует отформатированное описание на основании прочитанной информации + * + * @param lang Язык (ru/en) для ключевых слов + * @param maxLineLen Максимальная длина строки (для переноса) + * @return Строка отформатированного описания + */ + String format(String lang, int maxLineLen); + + /** + * Генерирует отформатированное описание на основании прочитанной информации с параметрами по умолчанию: ru / 120 + * + * @return Строка отформатированного описания + */ + default String format() { + return format("ru", 120); + } + /** * Проверяет вхождение области заданной двумя пограничными токенами в область описания * diff --git a/src/main/java/com/github/_1c_syntax/bsl/parser/description/VariableDescription.java b/src/main/java/com/github/_1c_syntax/bsl/parser/description/VariableDescription.java index 237d6f54..e3bff1a0 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/parser/description/VariableDescription.java +++ b/src/main/java/com/github/_1c_syntax/bsl/parser/description/VariableDescription.java @@ -32,6 +32,7 @@ import java.util.List; import java.util.Optional; +import java.util.StringJoiner; /** * Класс-описание переменной. @@ -88,4 +89,25 @@ public static VariableDescription create(List comments) { public static VariableDescription create(List comments, Optional trailingComment) { return VariableDescriptionReader.read(comments, trailingComment); } + + @Override + public String format(String lang, int maxLineLen) { + var sj = new StringJoiner("\n//\t", "//\t", ""); + if (deprecated) { + if (deprecationInfo.isEmpty()) { + sj.add("Устарела."); + } else { + sj.add("Устарела. " + deprecationInfo.trim()); + } + } + + if (!purposeDescription.isEmpty()) { + if (sj.length() > 0) { + sj.add(""); + } + purposeDescription.lines().forEach(string -> sj.add(string.trim())); + } + + return sj.toString(); + } } diff --git a/src/main/java/com/github/_1c_syntax/bsl/parser/description/reader/MethodDescriptionReader.java b/src/main/java/com/github/_1c_syntax/bsl/parser/description/reader/MethodDescriptionReader.java index d5ceb75b..39bbcaf4 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/parser/description/reader/MethodDescriptionReader.java +++ b/src/main/java/com/github/_1c_syntax/bsl/parser/description/reader/MethodDescriptionReader.java @@ -49,19 +49,19 @@ import static java.util.Objects.requireNonNull; /** - * Вспомагательный класс для чтения описания метода. + * Вспомогательный класс для чтения описания метода. */ public final class MethodDescriptionReader extends BSLDescriptionParserBaseVisitor { private final MethodDescription.MethodDescriptionBuilder builder; /** - * сдвиг номера строки относительно исходного текста + * Сдвиг номера строки относительно исходного текста */ private final int lineShift; /** - * сдвиг номера символа относительно исходного текста (только для первой строки) + * Сдвиг номера символа относительно исходного текста (только для первой строки) */ private final int firstLineCharShift; @@ -75,7 +75,7 @@ private MethodDescriptionReader(SimpleRange range) { } /** - * Читает описание метода из списока токенов комментария. + * Читает описание метода из списка токенов комментария. * * @param comments Список токенов комментария. * @return Описание метода. @@ -161,7 +161,8 @@ public ParseTree visitExamplesBlock(BSLDescriptionParser.ExamplesBlockContext ct @Override public ParseTree visitCallOptionsBlock(BSLDescriptionParser.CallOptionsBlockContext ctx) { - builder.keyword(newElement(ctx.callOptionsHead().CALL_OPTIONS_KEYWORD(), DescriptionElement.Type.CALL_OPTIONS_KEYWORD)); + builder.keyword(newElement(ctx.callOptionsHead().CALL_OPTIONS_KEYWORD(), + DescriptionElement.Type.CALL_OPTIONS_KEYWORD)); var strings = ctx.callOptionsString(); if (strings != null) { builder.callOptions(strings.stream() diff --git a/src/main/java/com/github/_1c_syntax/bsl/parser/description/reader/VariableDescriptionReader.java b/src/main/java/com/github/_1c_syntax/bsl/parser/description/reader/VariableDescriptionReader.java index f9dd14ec..0f5722bd 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/parser/description/reader/VariableDescriptionReader.java +++ b/src/main/java/com/github/_1c_syntax/bsl/parser/description/reader/VariableDescriptionReader.java @@ -43,12 +43,12 @@ public final class VariableDescriptionReader extends BSLDescriptionParserBaseVis private final VariableDescription.VariableDescriptionBuilder builder; /** - * сдвиг номера строки относительно исходного текста + * Сдвиг номера строки относительно исходного текста */ private final int lineShift; /** - * сдвиг номера символа относительно исходного текста (только для первой строки) + * Сдвиг номера символа относительно исходного текста (только для первой строки) */ private final int firstLineCharShift;