Class EventContractFormatter

java.lang.Object
com.github._1c_syntax.bsl.languageserver.hover.EventContractFormatter

@Component public class EventContractFormatter extends Object
Отрисовка контракта платформенного события в hover'е: шапка обработчика и его параметры с типами и описаниями из синтакс-помощника.

Вынесено из DescriptionFormatter: тот рисует описание, написанное человеком в шапке-комментарии, а здесь — то, что о методе знает платформа. Разные источники, разные зависимости; вместе они тянули в один класс и реестр типов, и индекс контрактов, и роли обработчиков формы.

Строки ресурсов берутся из бандла DescriptionFormatter: секции у hover'а общие, и заводить второй набор переводов ради одного заголовка незачем.

  • Constructor Details

  • Method Details

    • getEventHandlerSection

      public String getEventHandlerSection(@Nullable MethodSymbol method, MemberDescriptor event)
      Секция-шапка «Обработчик события платформы: <имя>» с платформенным описанием события; к нему подмешивается пользовательское описание метода из шапки-комментария. Платформенное описание идёт первым, пользовательское — следом.

      Обработчик команды формы событием не является, поэтому и называется иначе — и назван в шапке именем команды, а не процедуры: имя процедуры и так стоит в сигнатуре выше.

    • getParametersSection

      public String getParametersSection(@Nullable MethodSymbol method, MemberDescriptor eventContract)
      Секция «Параметры» по контракту события: имя, типы и описание каждого параметра из синтакс-помощника. К описанию параметра подмешивается пользовательское из шапки-комментария метода, если оно есть: платформенное идёт первым.
    • getEventHandlerParameterDescription

      public String getEventHandlerParameterDescription(VariableSymbol symbol)
      Описание параметра-обработчика платформенного события из контракта (bsl-context): сопоставление по позиции — имена параметров обработчика задаёт пользователь, в коде они могут не совпадать с именами в контракте. При выходе за длину контракта возвращаем пусто, если последний параметр контракта не variadic.