Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Докуметация по API #109

Merged
merged 10 commits into from
Nov 19, 2024
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions src/internal/Классы/АннотацияБлестяшка.os
Original file line number Diff line number Diff line change
@@ -1,3 +1,18 @@
// Маркерная аннотация для указания, что прилепляемая частица
// является произвольным значением, передавамым кодом.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Передаваемым в конструктор жёлудя вероятно (да у завязи это формально метод а не конструктор, но метод завязи суть конструктор жёлудя)

//
// Может быть использована только над параметром конструктора/метода завязи желудя.
//
// Пример:
//
// 1.
// &Желудь
// Процедура ПриСозданииОбъекта(&Блестяшка ПроизвольноеЗначение)
//
// 2.
// &Завязь
// Функция МойЖелудь(&Блестяшка ПроизвольноеЗначение) Экспорт
//
&Аннотация("Блестяшка")
Процедура ПриСозданииОбъекта()

Expand Down
10 changes: 10 additions & 0 deletions src/internal/Классы/АннотацияВерховный.os
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
// Помечает желудь как имеющий приоритет среди других желудей с таким же именем или `&Прозвищем`.
// В случае конфликта имен при получении желудей или их регистрации, будет использован желудь с аннотацией `&Верховный`.
//
// При наличии нескольких желудей с одним и тем же прозвищем позволяет определить, какой из них следует возвращать
// при поиске единственного желудя по его прозвищу.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

При поиске одного/конкретного верялрно, а то слово "единственный" после слова "несколько" как то слух режет

//
// Если несколько желудей с одним и тем же именем/прозвищем имеют аннотацию `&Верховный`, будет вызвано исключение.
//
// Размещается над определением желудя - конструктором или методом &Завязи.
//
&Аннотация("Верховный")
Процедура ПриСозданииОбъекта()

Expand Down
35 changes: 35 additions & 0 deletions src/internal/Классы/АннотацияДеталька.os
Original file line number Diff line number Diff line change
@@ -1,3 +1,38 @@
// Маркерная аннотация для указания, что прилепляемая частица
// является настройкой приложения.
//
// Может быть использована над параметром конструктора/метода завязи желудя, полем класса
// или методом установки значения.
//
// Параметры:
// Значение - Строка - Ключ настройки. См. библиотеку [configor](https://github.com/oscript-library/configor)
// для полного описания синтаксиса.
// Если не заполнено, используется имя параметра конструктора/поля класса
// или часть имени метода для установки значения.
// ЗначениеПоУмолчанию - Произвольный - Значение, которое принимает деталька, если не задано из-вне.
//
// Пример:
//
// 1.
// &Деталька
// Перем ПутьКФайлу;
//
// 2.
// &Деталька(Значение = "Настройки.ПутьКФайлу", ЗначениеПоУмолчанию = "./file.txt")
// Перем ПутьКФайлу;
//
// 3.
// &Желудь
// Процедура ПриСозданииОбъекта(&Деталька ПутьКФайлу)
//
// 4.
// &Деталька
// Процедура УстановитьПутьКФайлу(Значение) Экспорт
//
// 5.
// &Завязь
// Функция МойЖелудь(&Деталька ПутьКФайлу) Экспорт
//
&Аннотация("Деталька")
Процедура ПриСозданииОбъекта(Значение = "", ЗначениеПоУмолчанию = Неопределено)

Expand Down
8 changes: 8 additions & 0 deletions src/internal/Классы/АннотацияЖелудь.os
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
// Помечает указанный класс как желудь - компонент, жизненным циклом которого управляет фреймворк ОСень.
//
// Размещается над конструктором класса.
//
// Параметры:
// Значение - Строка- Имя желудя. По умолчанию будет использовано имя типа объекта,
// как оно возвращается функцией `ТипЗнч`.
//
&Аннотация("Желудь")
Процедура ПриСозданииОбъекта(Значение = "")

Expand Down
38 changes: 38 additions & 0 deletions src/internal/Классы/АннотацияПластилин.os
Original file line number Diff line number Diff line change
@@ -1,3 +1,41 @@
// Маркерная аннотация для указания, что прилепляемая частица
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Мне кажется описание не внесло никакой ясности, стоит я думаю сразу ноэа входе описать что это маркер который загрузит в поле/параметр жёлудь зарегистрированный в системе типов осени, или что-то типа того вероятно

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Я тут использовал термин "прилепление частиц", который есть в документации, но которого нет в API в явном виде (исключая модуль с типами прилепляемых частиц и класса ПрилепляторЧастиц). Если уж расписывать, то расписывать и здесь, и в детальке, и в блестяшке. Либо описывать термин где-то отдельно, "ссылаясь" на него.

// является желудем. Основной способ связывания желудей между собой.
//
// Может быть использована над параметром конструктора/метода завязи желудя, полем класса
// или методом установки значения.
//
// Параметры:
// Значение - Строка - Имя прилепляемого желудя. Если не заполнено, используется имя параметра конструктора/поля
// класса или часть имени метода для установки значения.
// Тип - Строка - Тип прилепляемого желудя. В случае передачи значения "Желудь", будет внедрен желудь как таковой.
// Так же может быть указан тип "Массив", "ТаблицаЗначений" и другие. Полный список доступных типов
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Так же может быть указан тип-коллекция

// см. в библиотеке [autumn-collections](https://github.com/autumn-library/autumn-collections).
// Блестяшка - Произвольный - Повторяемый параметр. Передаваемые в прилепляемый желудь произвольные значения.
//
// Пример:
//
// 1.
// &Желудь
// Процедура ПриСозданииОбъекта(&Пластилин ДругойЖелудь)
//
// 2.
// &Желудь
// Процедура ПриСозданииОбъекта(
// . &Пластилин(Значение = "ДругойЖелудь", Тип = "Массив", Блестяшка = "Парам1", Блестяшка = "Парам2") Зависимость
// )
//
// 3.
// &Пластилин
// Перем ДругойЖелудь;
//
// 4.
// &Завязь
// Функция МойЖелудь(&Пластилин ДругойЖелудь) Экспорт
//
// 5.
// &Пластилин
// Процедура УстановитьДругойЖелудь(Зависимость) Экспорт
//
&Аннотация("Пластилин")
Процедура ПриСозданииОбъекта(Значение = "", Тип = "", &Повторяемый Блестяшка = Неопределено)

Expand Down
19 changes: 18 additions & 1 deletion src/internal/Классы/АннотацияПорядок.os
Original file line number Diff line number Diff line change
@@ -1,10 +1,27 @@
Перем _Значение;

// Порядок, заданный аннотацией.
//
// Возвращаемое значение:
// Число
//
Функция Значение() Экспорт
Возврат _Значение;
КонецФункции

// Управляет порядком инициализации и использования желудя. Не может быть меньше 1 или больше 999998.
//
// Если размещается над обычным `&Желудем` или `&Завязью`, то влияет на порядок сортировки, при получении
// коллекции желудей по прозвищу.
//
// Если размещается над `&Напильником`, влияет на порядок применения напильников к желудям.
//
// Если размещается над `&Рогаткой`, влияет на порядок запуска рогаток при старте приложения.
//
// Параметры:
// Значение - Число - Задаваемый порядок.
//
nixel2007 marked this conversation as resolved.
Show resolved Hide resolved
&Аннотация("Порядок")
Процедура ПриСозданииОбъекта(Значение = 1)
_Значение = Значение;
КонецПроцедуры
КонецПроцедуры
24 changes: 24 additions & 0 deletions src/internal/Классы/АннотацияПриемка.os
Original file line number Diff line number Diff line change
@@ -1,3 +1,27 @@
// Специальный тип желудя для обработки определений желудей.

Check warning on line 1 in src/internal/Классы/АннотацияПриемка.os

View check run for this annotation

sonar.openbsl.ru qa-bot / autumn Sonarqube Results

src/internal/Классы/АннотацияПриемка.os#L1

Программные модули не должны иметь закомментированных фрагментов кода
//
// Аналог &Напильника для `ОпределениеЖелудя`. Срабатывает каждый раз, когда в контекст добавляется новое
// определение желудя. При добавлении самой Приемки в контекст, все ранее добавленные определения желудей
// передаются в Приемку для проверки.
//
// Класс, помеченный аннотацией `&Приемка`, должен реализовать следующий интерфейс:
// * `Процедура ПриДобавленииОпределенияЖелудя(ОпределениеЖелудя) Экспорт`
//
// Каждая `&Приемка` так же имеет `&Характер("Компанейский")`, `&Прозвище("Приемка")` и `&Спецификация("Инициализация")`
//
// Параметры:
// Значение - Строка - Имя желудя, под которым приемка добавляется в контекст Поделки.
//
// Пример:
//
// Процедура ПриДобавленииОпределенияЖелудя(ОпределениеЖелудя) Экспорт
// . Сообщить("Определение желудя: " + ОпределениеЖелудя.Имя());
// КонецПроцедуры
// .
// &Приемка
// Процедура ПриСозданииОбъекта()
// КонецПроцедуры
//
&Аннотация("Приемка")
&Прозвище("Приемка")
&Характер("Компанейский")
Expand Down
32 changes: 32 additions & 0 deletions src/internal/Классы/АннотацияРогатка.os
Original file line number Diff line number Diff line change
@@ -1,14 +1,46 @@
Перем _ЗапускатьВФоне;
Перем _ОжидатьЗавершения;

// Флаг необходимости запуска рогатки в фоновом задании.
//
// Возвращаемое значение:
// Булево
//
Функция ЗапускатьВФоне() Экспорт
Возврат _ЗапускатьВФоне;
КонецФункции

// Флаг необходимости ожидания завершения рогатки при ее запуске в фоновом задании.
//
// Возвращаемое значение:
// Булево
//
Функция ОжидатьЗавершения() Экспорт
Возврат _ОжидатьЗавершения;
КонецФункции

// Специальный тип желудя, автоматически выполняемый при запуске приложения (`Поделка.ЗапуститьПриложение()`).

Check warning on line 22 in src/internal/Классы/АннотацияРогатка.os

View check run for this annotation

sonar.openbsl.ru qa-bot / autumn Sonarqube Results

src/internal/Классы/АннотацияРогатка.os#L22

Программные модули не должны иметь закомментированных фрагментов кода
//
// Класс, помеченный аннотацией `&Рогатка`, должен реализовать следующий интерфейс:
// * `Процедура ПриЗапускеПриложения() Экспорт`
//
// Каждая `&Рогатка` дополнительно имеет `&Прозвище("Рогатка")`.
//
// Параметры:
// Значение - Строка - Имя желудя, под которым рогатка добавляется в контекст Поделки.
// ЗапускатьВФоне - Булево - Если Истина, то рогатка будет запущена в фоновом задании.
// Если Ложь, то рогатка будет запущена в текущем потоке.
// ОжидатьЗавершения - Булево - Если Истина и `ЗапускатьВФоне` = Истина,
// то после запуска рогатки будет ожидаться её завершение.
// Пример:
// Процедура ПриЗапускеПриложения() Экспорт
// . Сообщить("Привет из рогатки!");
// КонецПроцедуры
// .
// &Рогатка
// Процедура ПриСозданииОбъекта()
// КонецПроцедуры
//
&Аннотация("Рогатка")
&Прозвище("Рогатка")
Процедура ПриСозданииОбъекта(Значение = "", ЗапускатьВФоне = Истина, ОжидатьЗавершения = Истина)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,36 @@
Перем _Значение;

// Сохраненное значение спецификации.
//
// Возвращаемое значение:
// Строка
//
Функция Значение() Экспорт
Возврат _Значение;
КонецФункции

// `@unstable`

Check warning on line 12 in src/internal/Классы/АннотацияСпецификация.os

View check run for this annotation

sonar.openbsl.ru qa-bot / autumn Sonarqube Results

src/internal/Классы/АннотацияСпецификация.os#L12

Программные модули не должны иметь закомментированных фрагментов кода
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Чиво?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ну а вот так. Я не уверен ещё. А ты?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Я даже не уверен, что она работает, если честно.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Как и &Приемка - смысл работает, а вот над названием не уверен.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Я скорее к тому что это какая-то новая сущность которой ни в каком конвеншене нет, и мне кажется просто так вешать какой-то тег без объяснений и надеяться что тебя поймут затея сомнительная.)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Я такое вешал в entity, и указывал в доке, что это такое х)

//
// Аннотация для указания жизненого цикла приложения, начиная с которого разрешено создавать желудь.
//
// По умолчанию все желуди имеют спецификацию "Выполнение", означающую, что желудь может быть создан только после вызова
// `Поделка.ЗапуститьПриложение()`.
//
// К желудям со специкацией "Инициализация" не применяются напильники.
//
// Параметры:
// Значение - Строка - Состояние приложения, на котором разрешено создавать желудь. См. СостоянияПриложения.
//
// Пример:
// &Спецификация("Инициализация")
// &Желудь
// Процедура ПриСозданииОбъекта()
// КонецПроцедуры
//
&Аннотация("Спецификация")
Процедура ПриСозданииОбъекта(Значение)
Процедура ПриСозданииОбъекта(Значение = "Выполнение")

Если Значение = Неопределено Тогда
_Значение = "Выполнение";
Иначе
_Значение = Значение;
КонецЕсли;
_Значение = Значение;

Если СостоянияПриложения.Значения().Найти(_Значение) = Неопределено Тогда
ТекстСообщения = СтрШаблон(
Expand Down
29 changes: 29 additions & 0 deletions src/internal/Классы/АннотацияТабакерка.os
Original file line number Diff line number Diff line change
@@ -1,3 +1,32 @@
// Пометка, что прилепляемая частица прилепляется не непосредственно, а через специальный объект

Check warning on line 1 in src/internal/Классы/АннотацияТабакерка.os

View check run for this annotation

sonar.openbsl.ru qa-bot / autumn Sonarqube Results

src/internal/Классы/АннотацияТабакерка.os#L1

Программные модули не должны иметь закомментированных фрагментов кода
// типа `Табакерка`, который позволяет получить частицу программно.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Я бы ещё указал что отложенно, т.е передает управление временем создания жёлудя внутрь жёлудя

//
// Может использоваться для внедрения компанейских желудей, внедрения желудя самого в себя,
// для разрыва циклических зависимостей, для передачи дополнительных параметров прилепляемого желудя и т.п.
//
// Используется совместно с аннотациями `&Пластилин` и `&Деталька`.
//
// Пример:
//
// 1.
// &Табакерка
// &Пластилин("ДругойЖелудь")
// Перем ТабакеркаСДругимЖелудем;
// .
// ДругойЖелудь = ТабакеркаСДругимЖелудем.Достать();
// ДругойЖелудь.КакойТоМетод();
// ...
// 2.
// &Табакерка
// &Пластилин("ДругойЖелудь")
// Перем ТабакеркаСДругимЖелудем;
// .
// МассивБлестяшек = Новый Массив;
// МассивБлестяшек.Добавить("Парам1");
// .
// ДругойЖелудь = ТабакеркаСДругимЖелудем.Достать(МассивБлестяшек);
// ДругойЖелудь.КакойТоМетод();
//
&Аннотация("Табакерка")
Процедура ПриСозданииОбъекта()

Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,24 @@
// Процедуры, помеченные аннотацией "ФинальныйШтрих" будут вызваны в конце инициализации желудя,

Check warning on line 1 in src/internal/Классы/АннотацияФинальныйШтрих.os

View check run for this annotation

sonar.openbsl.ru qa-bot / autumn Sonarqube Results

src/internal/Классы/АннотацияФинальныйШтрих.os#L1

Программные модули не должны иметь закомментированных фрагментов кода
// после отработки конструктора/метода завязи и всех напильников, применяемых на желуде.
// Во время выполнения процедуры доступны все прилепляемые частицы, прилепленные как через конструктор,
// так и через поля класса и методы-сеттеры.
//
// Желудь может содержать несколько процедур, помеченных аннотацией "ФинальныйШтрих".
// Порядок их вызова не гарантируется.
//
// Процедура должна быть помечена `Экспорт`ная.
//
// Пример:
//
// &ФинальныйШтрих
// Процедура ПостИнициализация() Экспорт
// . Сообщить("Я выполнилась после конструктора объекта");
// КонецПроцедуры
// .
// &Желудь
// Процедура ПриСозданииОбъекта()
// КонецПроцедуры
//
&Аннотация("ФинальныйШтрих")
Процедура ПриСозданииОбъекта()

nixel2007 marked this conversation as resolved.
Show resolved Hide resolved
Expand Down
22 changes: 22 additions & 0 deletions src/internal/Классы/АннотацияХарактер.os
Original file line number Diff line number Diff line change
@@ -1,3 +1,25 @@
// Задает способ управления жизненным циклом желудя.

Check warning on line 1 in src/internal/Классы/АннотацияХарактер.os

View check run for this annotation

sonar.openbsl.ru qa-bot / autumn Sonarqube Results

src/internal/Классы/АннотацияХарактер.os#L1

Программные модули не должны иметь закомментированных фрагментов кода
//
// ОСень содержит два базовых характера желудя: "Одиночка" и "Компанейский".
//
// По умолчанию все желуди имеют характер "Одиночка", означающий, что желудь
// инициализируется один раз. При каждом запросе желудя будет возвращаться один и тот же
// экземпляр.
//
// Характер "Компанейский" означает, что каждый раз при запросе желудя будет создаваться
// новый экземпляр.
//
// Размещается над конструктором класса или над методом `&Завязи`.
//
// Параметры:
// Значение - Строка - Характер желудя.
//
// Пример:
// &Характер("Компанейский")
// &Желудь
// Процедура ПриСозданииОбъекта()
// КонецПроцедуры
//
&Аннотация("Характер")
Процедура ПриСозданииОбъекта(Значение)

Expand Down
Loading