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

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

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
22 changes: 22 additions & 0 deletions src/internal/Классы/АннотацияДуб.os
Original file line number Diff line number Diff line change
@@ -1,3 +1,25 @@
// Помечает указанный класс как фабрику компонентов - дуб, из которого появляются желуди.
// `&Дуб` сам по себе тоже является желудем, то есть может запрашивать прилепление частиц,
// является объектом для обработки `&Напильник`ом, может иметь `&Спецификация` и так далее.
//
// Дуб обычно содержит методы, помеченные аннотацией `&Завязь`, которые возвращают желуди, но
// может содержать и другие методы, не связанные непосредственно с созданием желудей.
//
// Размещается над конструктором класса.
//
// Параметры:
// Значение - Строка - Имя желудя. По умолчанию будет использовано имя типа объекта,
// как оно возвращается функцией `ТипЗнч`.
// Пример:
// &Дуб
// Процедура ПриСозданииОбъекта()
// КонецПроцедуры
// .
// &Завязь
// Функция ПользовательскийЖелудь() Экспорт
// . Возврат Новый ПользовательскийЖелудь();
// КонецФункции
//
&Аннотация("Дуб")
Процедура ПриСозданииОбъекта(Значение = "")

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

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

Expand Down
20 changes: 20 additions & 0 deletions src/internal/Классы/АннотацияЗаготовка.os
Original file line number Diff line number Diff line change
@@ -1,3 +1,23 @@
// Специальный тип желудя для выполнения дополнительных действий в момент помещения класса в контекст Поделки.
//
// Может использоваться для добавления динамической загрузки новых классов в систему типов OneScript или
// дополнительных импортов библиотек через директиву `#Использовать`.
//
// Каждая `&Заготовка` дополнительно имеет `&Прозвище("Заготовка")` и &Спецификация("Инициализация").
//
// Желудь, помеченный аннотацией `&Заготовка`, должен реализовать следующий интерфейс:
// * `Процедура ПриИнициализацииПоделки(Поделка) Экспорт`
//
// Размещается над конструктором класса.
//
// Параметры:
// Значение - Строка - Имя желудя, под которым заготовка добавляется в контекст Поделки.
//
// Пример:
// &Заготовка
// Процедура ПриСозданииОбъекта()
// КонецПроцедуры
//
&Аннотация("Заготовка")
&Прозвище("Заготовка")
&Спецификация("Инициализация")
Expand Down
34 changes: 34 additions & 0 deletions src/internal/Классы/АннотацияНапильник.os
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,15 @@

Перем _ПрименяетсяТолькоНа;

// Проверить, может ли текущий напильник применяться на указанном желуде.
//
// Параметры:
// ОпределениеЖелудя - ОпределениеЖелудя - Определение желудя, для которого проверяется
// применимость текущего напильника.
//
// Возвращаемое значение:
// Булево - Истина, если напильник может применяться на указанном желуде, иначе Ложь.
//
Функция МожетПрименятьсяНа(ОпределениеЖелудя) Экспорт

НапильникМожетПрименяться = Ложь;
Expand All @@ -24,6 +33,31 @@

КонецФункции

// Специальный тип желудя для дополнительной обработки других желудей в процессе их создания.
//
// Может использоваться для добавления дополнительных действий или свойств создаваемым желудям. Метод `ОбработатьЖелудь`
// **может** возвращать другой объект, который подменит текущий желудь, или обертку-декоратор над текущим желудем.
//
// Каждый `&Напильник` дополнительно имеет `&Прозвище("Напильник")`.
//
// Напильник сам по себе является желудем, однако в силу своей специфики он может запрашивать прилепление только
// &Деталек и Поделки.
//
// Желудь, помеченный аннотацией `&Напильник`, должен реализовать следующий интерфейс:
// * `Функция ОбработатьЖелудь(Желудь, ОпределениеЖелудя) Экспорт`
//
// Размещается над конструктором класса.
//
// Параметры:
// Значение - Строка - Имя желудя, под которым напильник добавляется в контекст Поделки.
// ПрименяетсяТолькоНа - Строка - Повторяемый параметр. Ограничивает применение напильника только на желудях
// с указанными именами.
//
// Пример:
// &Напильник
// Процедура ПриСозданииОбъекта()
// КонецПроцедуры
//
&Аннотация("Напильник")
&Прозвище("Напильник")
Процедура ПриСозданииОбъекта(Значение = "", &Повторяемый ПрименяетсяТолькоНа = Неопределено)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,14 @@
Перем _ПрименятьТолькоНапильники;
Перем _НеПрименятьНапильники;

// Проверяет, может ли указанный напильник применяться над желудем, помеченным аннотацией `&ОсобоеОбращение`.
//
// Параметры:
// ИмяНапильника - Строка - Имя напильника для проверки применимости.
//
// Возвращаемое значение:
// Булево - Истина, если напильник может применяться на текущем желуде, иначе Ложь.
//
Функция НапильникМожетПрименяться(ИмяНапильника) Экспорт

Если _ОтключитьВсеНапильники Тогда
Expand All @@ -18,6 +26,19 @@

КонецФункции

// Маркерная аннотация, показывающая, что желудь требует изменений в процессе своего создания.
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.

я хотел оставить общее описание аннотации максимально generic, чтобы оставить возможность напихать туда параметров для других компонентов. Смысл аннотации в том, что желудь требует особого обращения к себе, а вот в чем именно заключается это особое обращение уже перечислено в параметрах аннотации. WDYT?

//
// Параметры аннотации конфликтуют между собой. Если отключаются все напильники, то нельзя задавать ограничения на
// применение конкретных напильников или отключение конкретных напильников. Если задано ограничение на применение только
// конкретных напильников, то нельзя задавать ограничение на отключение конкретных напильников (и наоборот).
//
// Размещается над конструктором класса или над методом `&Завязи`.
//
// Параметры:
// ОтключитьВсеНапильники - Булево - Не применять на желуде никакие напильники.
// ПрименятьТолькоНапильник - Строка - Повторяемый параметр. Применять на желуде только напильник с указанным именем.
// НеПрименятьНапильник - Строка - Повторяемый параметр. Не применять на желуде напильник с указанным именем.
//
&Аннотация("ОсобоеОбращение")
Процедура ПриСозданииОбъекта(
ОтключитьВсеНапильники = Ложь,
Expand Down
39 changes: 39 additions & 0 deletions src/internal/Классы/АннотацияПластилин.os
Original file line number Diff line number Diff line change
@@ -1,3 +1,42 @@
// Маркерная аннотация для указания, что прилепляемая частица
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 в явном виде (исключая модуль с типами прилепляемых частиц и класса ПрилепляторЧастиц). Если уж расписывать, то расписывать и здесь, и в детальке, и в блестяшке. Либо описывать термин где-то отдельно, "ссылаясь" на него.

// является желудем. Основной способ связывания желудей между собой.
//
// Может быть использована над параметром конструктора/метода завязи желудя, полем класса
// или методом установки значения.
//
// Параметры:
// Значение - Строка - Имя прилепляемого желудя. Если не заполнено, используется имя параметра конструктора/поля
// класса или часть имени метода для установки значения.
// Тип - Строка - Тип прилепляемого желудя. В случае передачи значения "Желудь", будет внедрен желудь как таковой.
// Так же может быть указан тип-коллекция: "Массив", "ТаблицаЗначений" и другие. Полный список
// доступных типов см. в библиотеке
// [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)
_Значение = Значение;
КонецПроцедуры
КонецПроцедуры
Loading