Skip to content

Commit

Permalink
Выделение библиотеки annotations
Browse files Browse the repository at this point in the history
  • Loading branch information
nixel2007 committed Aug 27, 2023
1 parent de55e35 commit 708624a
Show file tree
Hide file tree
Showing 9 changed files with 45 additions and 627 deletions.
4 changes: 1 addition & 3 deletions packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
.ВключитьФайл("tests")
.ВключитьФайл("LICENSE.md")
.ВключитьФайл("README.md")
// .ЗависитОт("annotations", "1.0.0")
.ЗависитОт("asserts", "1.4.0")
.ЗависитОт("configor", "0.7.1")
.ЗависитОт("logos", "1.4.0")
Expand All @@ -27,14 +28,11 @@
.РазработкаЗависитОт("fs")

.ОпределяетКласс("Поделка", "src/Классы/Поделка.os")
.ОпределяетКласс("РазворачивательАннотаций", "src/Классы/РазворачивательАннотаций.os")
.ОпределяетКласс("Завязь", "src/Классы/Завязь.os")
.ОпределяетКласс("ОпределениеЖелудя", "src/Классы/ОпределениеЖелудя.os")
.ОпределяетКласс("ОпределениеАннотации", "src/Классы/ОпределениеАннотации.os")
.ОпределяетКласс("ПрилепляемаяЧастица", "src/Классы/ПрилепляемаяЧастица.os")
.ОпределяетКласс("Табакерка", "src/Классы/Табакерка.os")
.ОпределяетМодуль("Осень", "src/Модули/Осень.os")
.ОпределяетМодуль("РаботаСАннотациями", "src/Модули/РаботаСАннотациями.os")
.ОпределяетМодуль("ТипыПрилепляемыхЖелудей", "src/Модули/ТипыПрилепляемыхЖелудей.os")
.ОпределяетМодуль("ТипыПрилепляемыхЧастиц", "src/Модули/ТипыПрилепляемыхЧастиц.os")
.ОпределяетМодуль("ХарактерыЖелудей", "src/Модули/ХарактерыЖелудей.os")
Expand Down

This file was deleted.

10 changes: 10 additions & 0 deletions src/internal/Классы/СлужебныйДубОсени.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
&Завязь
Функция РазворачивательАннотаций()
// TODO: Зависимость от КонтейнерАннотаций/Поделка?
Возврат Неопределено;
КонецФункции

&Дуб
Процедура ПриСозданииОбъекта()

КонецПроцедуры
69 changes: 2 additions & 67 deletions src/internal/Классы/ФабрикаЖелудей.os
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#Использовать annotations
#Использовать asserts
#Использовать fluent
#Использовать reflector
Expand All @@ -9,11 +10,6 @@
// РазворачивательАннотаций - разворачиватель аннотаций свойств и методов желудей.
Перем РазворачивательАннотаций;

// Соответствие, в котором хранятся все определения аннотаций.
// * Ключ - Строка - имя аннотации.
// * Значение - ОпределениеАннотации - определение аннотации.
Перем ОпределенияАннотаций;

// Соответствие, в котором хранятся все определения желудей.
// * Ключ - Строка - имя желудя.
// * Значение - ОпределениеЖелудя - определение желудя.
Expand Down Expand Up @@ -43,10 +39,6 @@
Возврат Новый ФиксированноеСоответствие(ОпределенияЖелудейПоИмени);
КонецФункции

Функция ПолучитьОпределенияАннотаций() Экспорт
Возврат Новый ФиксированноеСоответствие(ОпределенияАннотаций);
КонецФункции

Функция ПолучитьОпределениеЖелудя(Имя) Экспорт
НайденноеОпределение = ОпределенияЖелудейПоИмени.Получить(Имя);
Если НайденноеОпределение <> Неопределено Тогда
Expand All @@ -71,10 +63,6 @@
Возврат НайденноеОпределение;
КонецФункции

Функция ПолучитьОпределениеАннотации(Имя) Экспорт
Возврат ОпределенияАннотаций.Получить(НРег(Имя));
КонецФункции

Функция ПолучитьСписокОпределенийЖелудей(Имя) Экспорт

Результат = Новый Массив;
Expand Down Expand Up @@ -213,58 +201,6 @@
Возврат ОпределениеНапильника;
КонецФункции

Функция ДобавитьАннотацию(ТипАннотации) Экспорт

ИмяТипаАннотации = Строка(ТипАннотации);

РефлекторОбъекта = Новый РефлекторОбъекта(ТипАннотации);
Методы = РефлекторОбъекта.ПолучитьТаблицуМетодов("Аннотация", Ложь);
Ожидаем.Что(
Методы.Количество(),
"Класс должен иметь ровно один метод с аннотацией &Аннотация"
).Равно(1);

Конструктор = Методы[0];
ОсновнаяАннотация = РаботаСАннотациями.ПолучитьАннотацию(Конструктор, "Аннотация");

ИмяАннотации = РаботаСАннотациями.ПолучитьЗначениеПараметраАннотации(ОсновнаяАннотация, , ИмяТипаАннотации);

Параметры = Конструктор.Параметры;
КоличествоПараметровСИменемПоУмолчанию = 0;
Для Каждого Параметр Из Параметры Цикл
Если ВРег(Параметр.Имя) = ВРег("Значение") Тогда
КоличествоПараметровСИменемПоУмолчанию = КоличествоПараметровСИменемПоУмолчанию + 1;

Если КоличествоПараметровСИменемПоУмолчанию > 1 Тогда
ВызватьИсключение СтрШаблон(
"Аннотация %1 имеет более одного параметра с именем ""Значение""",
ИмяАннотации
);
КонецЕсли;
КонецЕсли;
КонецЦикла;

Аннотации = Конструктор.Аннотации;

Для Каждого ВложеннаяАннотация Из Конструктор.Аннотации Цикл

ОпределениеВложеннойАннотации = ОпределенияАннотаций.Получить(ВложеннаяАннотация.Имя);
Если ОпределениеВложеннойАннотации = Неопределено Тогда
Продолжить;
КонецЕсли;

ОпределениеВложеннойАннотации.Проверить(ВложеннаяАннотация, ИмяАннотации);

КонецЦикла;

ОпределениеАннотации = Новый ОпределениеАннотации(ИмяАннотации, ИмяТипаАннотации, Параметры, Аннотации);

ОпределенияАннотаций.Вставить(НРег(ИмяАннотации), ОпределениеАннотации);

Возврат ОпределениеАннотации;

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

Функция НайтиЖелудь(ИмяЖелудя, ПрилепляемыеЧастицы) Экспорт

ОпределениеЖелудя = Поделка.ПолучитьОпределениеЖелудя(ИмяЖелудя);
Expand Down Expand Up @@ -652,8 +588,7 @@
ОпределенияЖелудейПоПрозвищу = Новый Соответствие();

ИнициализируемыеНапильники = Новый Массив();
ОпределенияАннотаций = Новый Соответствие();


ОпределенияНапильниковПоИмени = Новый Соответствие();
ОпределенияНапильников = Новый Массив();
КонецПроцедуры
Expand Down
Loading

0 comments on commit 708624a

Please sign in to comment.