Class MultilingualStringAnalyser

java.lang.Object
com.github._1c_syntax.bsl.languageserver.utils.MultilingualStringAnalyser

public final class MultilingualStringAnalyser extends Object
Анализатор многоязычных строк НСтр (NStr) и строковых шаблонов СтрШаблон (StrTemplate).

Проверяет наличие всех объявленных языков в многоязычных строках и анализирует использование в шаблонах.

Также предоставляет статические методы для поиска языковых ключей и плейсхолдеров в строках для целей семантической подсветки.

  • Field Details

    • NSTR_METHOD_NAME_PATTERN

      public static final Pattern NSTR_METHOD_NAME_PATTERN
      Паттерн для распознавания вызова метода НСтр/NStr.
    • TEMPLATE_METHOD_NAME_PATTERN

      public static final Pattern TEMPLATE_METHOD_NAME_PATTERN
      Паттерн для распознавания вызова метода СтрШаблон/StrTemplate.
    • NSTR_LANG_PATTERN

      public static final Pattern NSTR_LANG_PATTERN
      Паттерн для поиска языковых ключей в строках НСтр (например, ru=', en=").
    • STR_TEMPLATE_PLACEHOLDER_PATTERN

      public static final Pattern STR_TEMPLATE_PLACEHOLDER_PATTERN
      Паттерн для поиска плейсхолдеров в строках СтрШаблон (%1-%10 или %(1)-%(10)). Учитывает экранирование %%.
  • Constructor Details

    • MultilingualStringAnalyser

      public MultilingualStringAnalyser(String declaredLanguages)
      Создать анализатор многоязычных строк.
      Parameters:
      declaredLanguages - Строка с объявленными языками через запятую
  • Method Details

    • isNStrCall

      public static boolean isNStrCall(BSLParser.GlobalMethodCallContext ctx)
      Проверить, является ли вызов метода вызовом НСтр/NStr.
      Parameters:
      ctx - Контекст вызова глобального метода
      Returns:
      true, если это вызов НСтр/NStr
    • isStrTemplateCall

      public static boolean isStrTemplateCall(BSLParser.GlobalMethodCallContext ctx)
      Проверить, является ли вызов метода вызовом СтрШаблон/StrTemplate.
      Parameters:
      ctx - Контекст вызова глобального метода
      Returns:
      true, если это вызов СтрШаблон/StrTemplate
    • findLanguageKeyPositions

      public static List<MultilingualStringAnalyser.MatchPosition> findLanguageKeyPositions(String text)
      Найти позиции всех языковых ключей в строке НСтр.
      Parameters:
      text - Текст строки
      Returns:
      Список позиций языковых ключей
    • findPlaceholderPositions

      public static List<MultilingualStringAnalyser.MatchPosition> findPlaceholderPositions(String text)
      Найти позиции всех плейсхолдеров в строке СтрШаблон.
      Parameters:
      text - Текст строки
      Returns:
      Список позиций плейсхолдеров
    • parse

      public boolean parse(BSLParser.GlobalMethodCallContext ctx)
      Разобрать вызов метода НСтр/NStr.
      Parameters:
      ctx - Контекст вызова глобального метода
      Returns:
      true, если это вызов НСтр/NStr и он успешно разобран
    • hasNotAllDeclaredLanguages

      public boolean hasNotAllDeclaredLanguages()
      Проверить, что не все объявленные языки присутствуют в строке.
      Returns:
      true, если какие-то языки отсутствуют
    • getMissingLanguages

      public String getMissingLanguages()
      Получить список отсутствующих языков.
      Returns:
      Строковое представление списка отсутствующих языков
    • isParentTemplate

      public boolean isParentTemplate()
      Проверить, используется ли строка в родительском шаблоне.
      Returns:
      true, если строка используется в шаблоне