Skip to content

Commit

Permalink
Еще дока
Browse files Browse the repository at this point in the history
  • Loading branch information
nixel2007 committed Nov 15, 2024
1 parent 6308eae commit 9418452
Show file tree
Hide file tree
Showing 9 changed files with 97 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
// или методом установки значения.
//
// Параметры:
// Значение - Строка - Имя внедряемого желудя. Если не заполнено, используется имя параметра конструктора/поля класса
// или часть имени метода для установки значения.
// Тип - Строка - Тип внедряемого желудя. В случае передачи значения "Желудь", будет внедрен желудь как таковой.
// Значение - Строка - Имя прилепляемого желудя. Если не заполнено, используется имя параметра конструктора/поля
// класса или часть имени метода для установки значения.
// Тип - Строка - Тип прилепляемого желудя. В случае передачи значения "Желудь", будет внедрен желудь как таковой.
// Так же может быть указан тип "Массив", "ТаблицаЗначений" и другие. Полный список доступных типов
// см. в библиотеке [autumn-collections](https://github.com/autumn-library/autumn-collections).
// Блестяшка - Произвольный - Повторяемый параметр. Передаваемые в прилепляемый желудь произвольные значения.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
// Порядок, заданный аннотацией.
//
// Возвращаемое значение:
// Число - Заданный порядок.
// Число
//
Функция Значение() Экспорт
Возврат _Значение;
Expand Down
12 changes: 12 additions & 0 deletions src/internal/Классы/АннотацияПриемка.os
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
// Аналог &Напильника для `ОпределениеЖелудя`. Срабатывает каждый раз, когда в контекст добавляется новое
// определение желудя. При добавлении самой Приемки в контекст, все ранее добавленные определения желудей
// передаются в Приемку для проверки.
//
// Класс, помеченный аннотацией `&Приемка` должен реализовать следующий интерфейс:
// * `Процедура ПриДобавленииОпределенияЖелудя(ОпределениеЖелудя) Экспорт`
//
// Каждая `&Приемка` так же имеет `&Характер("Компанейский")`, `&Прозвище("Приемка")` и `&Спецификация("Инициализация")`
//
// Параметры:
// Значение - Строка - Имя желудя, под которым приемка добавляется в контекст Поделки.
//
&Аннотация("Приемка")
&Прозвище("Приемка")
&Характер("Компанейский")
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

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

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

Если СостоянияПриложения.Значения().Найти(_Значение) = Неопределено Тогда
ТекстСообщения = СтрШаблон(
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

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

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Процедуры, помеченные аннотацией "ФинальныйШтрих" будут вызваны в конце инициализации желудя,
// после отработки конструктора/метода завязи и всех напильников, применяемых на желуде.
// Во время выполнения процедуры доступны все зависимости, внедренняемые как через конструктор, так и через поля класса
// и методы-сеттеры.
// Во время выполнения процедуры доступны все прилепляемые частицы, прилепленные как через конструктор,
// так и через поля класса и методы-сеттеры.
//
// Желудь может содержать несколько процедур, помеченных аннотацией "ФинальныйШтрих".
// Порядок их вызова не гарантируется.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,10 @@
// Значение - Строка - Характер желудя.
//
// Пример:
// 1. &Характер("Одиночка")
// 2. &Характер("Компанейский")
// &Характер("Компанейский")
// &Желудь
// Процедура ПриСозданииОбъекта()
// КонецПроцедуры
//
&Аннотация("Характер")
Процедура ПриСозданииОбъекта(Значение)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@
ИначеЕсли УправляющийПрилепляемымиКоллекциями.ЕстьПрилепляемаяКоллекция(ТипЖелудя) Тогда
ПрилепляемаяЧастица = Поделка.НайтиЖелуди(ИмяЧастицы, ПрилепляемыеЧастицы, ТипЖелудя);
Иначе
ВызватьИсключение "Неизвестный тип внедряемого через &Пластилин значения";
ВызватьИсключение "Неизвестный тип прилепляемого через &Пластилин значения";
КонецЕсли;

ИначеЕсли ТипЧастицы = ТипыПрилепляемыхЧастиц.Деталька() Тогда
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
Перем Значения;

Функция Инициализация() Экспорт
Возврат "Инициализация";
КонецФункции

Функция Выполнение() Экспорт
Возврат "Выполнение";
КонецФункции

Функция Значения() Экспорт
Возврат Значения;
КонецФункции

Значения = Новый Массив;

Значения.Добавить(Инициализация());
Значения.Добавить(Выполнение());

Значения = Новый ФиксированныйМассив(Значения);
Перем Значения;

Функция Инициализация() Экспорт
Возврат "Инициализация";
КонецФункции

Функция Выполнение() Экспорт
Возврат "Выполнение";
КонецФункции

Функция Значения() Экспорт
Возврат Значения;
КонецФункции

Значения = Новый Массив;

Значения.Добавить(Инициализация());
Значения.Добавить(Выполнение());

Значения = Новый ФиксированныйМассив(Значения);

0 comments on commit 9418452

Please sign in to comment.