From 712b2688f444776560475629140805b745134e9d Mon Sep 17 00:00:00 2001 From: sfaqer Date: Sun, 29 Dec 2024 10:05:13 +1000 Subject: [PATCH 1/3] =?UTF-8?q?=D0=9F=D1=80=D0=B8=20=D0=B4=D0=BE=D0=B1?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B8=20=D0=B7=D0=B0=D0=B2?= =?UTF-8?q?=D1=8F=D0=B7=D0=B8=20=D0=B8=D0=B7=20=D0=BB=D1=8F=D0=BC=D0=B1?= =?UTF-8?q?=D0=B4=D1=8B=20=D0=BC=D0=B5=D1=82=D0=B0=20=D0=B0=D0=BD=D0=BD?= =?UTF-8?q?=D0=BE=D1=82=D0=B0=D1=86=D0=B8=D0=B8=20=D1=82=D0=B5=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D1=8C=20=D0=BA=D0=BE=D1=80=D1=80=D0=B5=D0=BA=D1=82=D0=BD?= =?UTF-8?q?=D0=BE=20=D1=80=D0=B0=D0=B7=D0=B2=D0=BE=D1=80=D0=B0=D1=87=D0=B8?= =?UTF-8?q?=D0=B2=D0=B0=D1=8E=D1=82=D1=81=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\273\321\203\320\264\320\265\320\271.os" | 3 ++ ...20\264\320\265\320\273\320\272\320\260.os" | 41 +++++++++++++++++++ ...20\267\320\262\320\270\321\211\320\265.os" | 16 ++++++++ 3 files changed, 60 insertions(+) create mode 100644 "tests/\320\242\320\265\321\201\321\202\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\234\320\265\321\202\320\260\320\237\321\200\320\276\320\267\320\262\320\270\321\211\320\265.os" diff --git "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\226\320\265\320\273\321\203\320\264\320\265\320\271.os" "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\226\320\265\320\273\321\203\320\264\320\265\320\271.os" index 49e9020..30214ff 100644 --- "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\226\320\265\320\273\321\203\320\264\320\265\320\271.os" +++ "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\226\320\265\320\273\321\203\320\264\320\265\320\271.os" @@ -158,6 +158,9 @@ Объект = Выражение.ВОбъект(); Методы = Рефлектор.ПолучитьТаблицуМетодов(Объект); + + РазворачивательАннотаций.РазвернутьАннотацииСвойств(Методы, "ЛямбдаЗавязь"); + Завязи = РаботаСАннотациями.НайтиМетодыСАннотацией(Методы, ИмяКорневойАннотации); Если Завязи.Количество() <> 1 Тогда diff --git "a/tests/\320\237\320\276\320\264\320\265\320\273\320\272\320\260.os" "b/tests/\320\237\320\276\320\264\320\265\320\273\320\272\320\260.os" index 2c3f239..a42c178 100644 --- "a/tests/\320\237\320\276\320\264\320\265\320\273\320\272\320\260.os" +++ "b/tests/\320\237\320\276\320\264\320\265\320\273\320\272\320\260.os" @@ -1088,3 +1088,44 @@ .Равно("Привет мир"); КонецПроцедуры + +&Тест +Процедура ДобавитьМетаЗавязь() Экспорт + + // Дано + Поделка = Новый Поделка(); + + // Когда + Поделка.ДобавитьЗавязь( + "&МетаЗавязь(""МоёЧисло"", Тип = ""Число"") () -> Возврат 42;" + ); + + Поделка.ЗапуститьПриложение(); + + // Тогда + Ожидаем.Что(Поделка.НайтиЖелудь("МоёЧисло")) + .Равно(42); + +КонецПроцедуры + +&Тест +Процедура ДобавитьМетаЗавязьСМетаПрозвищем() Экспорт + + // Дано + Поделка = Новый Поделка(); + + // Когда + Поделка.ДобавитьЗавязь( + "&МетаПрозвище(""МоёМетаЧисло"") &МетаЗавязь(""МоёЧисло"", Тип = ""Число"") () -> Возврат 42;" + ); + + Поделка.ЗапуститьПриложение(); + + // Тогда + Ожидаем.Что(Поделка.НайтиЖелудь("МоёЧисло")) + .Равно(42); + + Ожидаем.Что(Поделка.НайтиЖелудь("МоёМетаЧисло")) + .Равно(42); + +КонецПроцедуры diff --git "a/tests/\320\242\320\265\321\201\321\202\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\234\320\265\321\202\320\260\320\237\321\200\320\276\320\267\320\262\320\270\321\211\320\265.os" "b/tests/\320\242\320\265\321\201\321\202\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\234\320\265\321\202\320\260\320\237\321\200\320\276\320\267\320\262\320\270\321\211\320\265.os" new file mode 100644 index 0000000..e85b542 --- /dev/null +++ "b/tests/\320\242\320\265\321\201\321\202\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\234\320\265\321\202\320\260\320\237\321\200\320\276\320\267\320\262\320\270\321\211\320\265.os" @@ -0,0 +1,16 @@ +// BSLLS:MissingVariablesDescription-off +// BSLLS:UnusedParameters-off +Перем Имя; + +Процедура ПриРазворачиванииАннотации(ОпределениеАннотации, ПодчиненныеАннотации, ТипВладельцаСвойств, Свойство) Экспорт + + Аннотация = РаботаСАннотациями.НайтиАннотацию(ПодчиненныеАннотации, "Прозвище"); + РаботаСАннотациями.УстановитьЗначениеПараметраАннотации(Аннотация, "Значение", Имя); + +КонецПроцедуры + +&Аннотация("МетаПрозвище") +&Прозвище(Значение = "") +Процедура ПриСозданииОбъекта(Значение) + Имя = Значение; +КонецПроцедуры From 10e2b52818768c03feb8fe0f07e83d132a439bcb Mon Sep 17 00:00:00 2001 From: sfaqer Date: Thu, 16 Jan 2025 09:50:11 +1000 Subject: [PATCH 2/3] =?UTF-8?q?1.=20=D0=92=20=D1=80=D0=B0=D0=B7=D0=B2?= =?UTF-8?q?=D0=BE=D1=80=D0=B0=D1=87=D0=B8=D0=B2=D0=B0=D1=82=D0=B5=D0=BB?= =?UTF-8?q?=D1=8C=20=D0=B0=D0=BD=D0=BD=D0=BE=D1=82=D0=B0=D1=86=D0=B8=D0=B9?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B8=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B8=20=D0=B7=D0=B0=D0=B2=D1=8F=D0=B7=D0=B8=20=D0=B8?= =?UTF-8?q?=D0=B7=20=D0=BB=D1=8F=D0=BC=D0=B1=D0=B4=D1=8B=20=D1=82=D0=B5?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D1=8C=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=D0=B0?= =?UTF-8?q?=D1=91=D1=82=D1=81=D1=8F=20=D0=BE=D0=B1=D1=8A=D0=B5=D0=BA=D1=82?= =?UTF-8?q?=20=D0=B2=D0=BB=D0=B0=D0=B4=D0=B5=D0=BB=D0=B5=D1=86=20=D0=B0?= =?UTF-8?q?=D0=BD=D0=BD=D0=BE=D1=82=D0=B0=D1=86=D0=B8=D0=B9=20(=D0=BE?= =?UTF-8?q?=D0=B1=D1=8A=D0=B5=D0=BA=D1=82=20=D1=81=20=D0=BB=D1=8F=D0=BC?= =?UTF-8?q?=D0=B1=D0=B4=D0=BE=D0=B9)=202.=20=D0=98=D0=BC=D0=B5=D0=BD=D0=B0?= =?UTF-8?q?=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B8=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B8=20=D0=BE=D0=BF=D1=80=D0=B5=D0=B4=D0=B5=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=B0=D0=BA=D1=82=D1=83=D0=B0=D0=BB=D0=B8?= =?UTF-8?q?=D0=B7=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D1=8B=20=D1=87=D1=82?= =?UTF-8?q?=D0=BE=20=D0=B1=D1=8B=20=D1=83=D1=81=D1=82=D1=80=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=82=D1=8C=20=D0=BD=D0=B5=D0=BE=D0=B4=D0=BD=D0=BE=D0=B7?= =?UTF-8?q?=D0=BD=D0=B0=D1=87=D0=BD=D0=BE=D1=81=D1=82=D1=8C=203.=20=D0=9F?= =?UTF-8?q?=D0=BE=D0=B4=D0=BD=D1=8F=D1=82=D1=8B=20=D0=B7=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D1=81=D0=B8=D0=BC=D0=BE=D1=81=D1=82=D0=B8=20=D0=BE=D1=82=20lam?= =?UTF-8?q?bdas=20(=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=BE?= =?UTF-8?q?=20=D1=81=D1=82=D1=80=D0=BE=D0=BA=D0=BE=D0=B2=D0=BE=D0=B5=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B5=D0=B4=D1=81=D1=82=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BE=D0=B1=D1=8A=D0=B5=D0=BA=D1=82=D0=B0?= =?UTF-8?q?=20=D0=BB=D1=8F=D0=BC=D0=B1=D0=B4=D1=8B)=20=D0=B8=20annotations?= =?UTF-8?q?=20(=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=BD=D0=BE=20=D0=B8=D1=81=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D1=81=D1=86=D0=B5=D0=BD=D0=B0=D1=80=D0=B8=D1=8F=20=D0=BA=D0=B0?= =?UTF-8?q?=D0=BA=20=D0=B2=D0=BB=D0=B0=D0=B4=D0=B5=D0=BB=D1=8C=D1=86=D0=B0?= =?UTF-8?q?=20=D0=B0=D0=BD=D0=BD=D0=BE=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=BD=D1=8B=D1=85=20=D1=81=D0=B2=D0=BE=D0=B9=D1=81=D1=82?= =?UTF-8?q?=D0=B2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packagedef | 4 +-- ...20\273\321\203\320\264\320\265\320\271.os" | 26 +++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/packagedef b/packagedef index cb3f063..cb03603 100644 --- a/packagedef +++ b/packagedef @@ -14,7 +14,7 @@ .ВключитьФайл("tests") .ВключитьФайл("LICENSE.md") .ВключитьФайл("README.md") - .ЗависитОт("annotations", "1.0.1") + .ЗависитОт("annotations", "2.0.0") .ЗависитОт("asserts", "1.4.0") .ЗависитОт("configor", "0.9.0") .ЗависитОт("logos", "1.4.0") @@ -23,7 +23,7 @@ .ЗависитОт("semaphore", "1.1.0") .ЗависитОт("collectionos", "0.3.1") .ЗависитОт("autumn-collections", "0.1.0") - .ЗависитОт("lambdas", "0.2.2") + .ЗависитОт("lambdas", "0.3.0") .РазработкаЗависитОт("1testrunner") .РазработкаЗависитОт("asserts") diff --git "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\226\320\265\320\273\321\203\320\264\320\265\320\271.os" "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\226\320\265\320\273\321\203\320\264\320\265\320\271.os" index 30214ff..8c0b98a 100644 --- "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\226\320\265\320\273\321\203\320\264\320\265\320\271.os" +++ "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\226\320\265\320\273\321\203\320\264\320\265\320\271.os" @@ -150,7 +150,7 @@ Выражение = Лямбда.Выражение(ЛямбдаЗавязи); Если ТипЗнч(Контекст) = Тип("Структура") Тогда - Выражение.Контекст(Контекст) + Выражение.Контекст(Контекст); Иначе Выражение.ЗахватитьОбъект(Контекст); КонецЕсли; @@ -159,7 +159,7 @@ Методы = Рефлектор.ПолучитьТаблицуМетодов(Объект); - РазворачивательАннотаций.РазвернутьАннотацииСвойств(Методы, "ЛямбдаЗавязь"); + РазворачивательАннотаций.РазвернутьАннотацииСвойств(Методы, Объект); Завязи = РаботаСАннотациями.НайтиМетодыСАннотацией(Методы, ИмяКорневойАннотации); @@ -181,7 +181,7 @@ ОпределениеЗавязи = СоздатьОпределениеЖелудя( ИмяЖелудя, ТипЖелудя, - Объект, + Объект, Завязь, Завязь.Аннотации, ИмяКорневойАннотации @@ -399,15 +399,15 @@ Функция СоздатьОпределениеЖелудя( ИмяЖелудя, ТипЖелудя, - ТипВладельцаСвойств, + ВладелецСвойств, Конструктор, Аннотации, ИмяКорневойАннотации ) - Завязь = СоздатьЗавязь(ТипВладельцаСвойств, Конструктор); + Завязь = СоздатьЗавязь(ВладелецСвойств, Конструктор); - ПрилепляемыеЧастицы = ПрочитатьПрилепляемыеЧастицыВМетоде(Конструктор, ТипВладельцаСвойств); + ПрилепляемыеЧастицы = ПрочитатьПрилепляемыеЧастицыВМетоде(Конструктор, ВладелецСвойств); Характер = ПрочитатьХарактерЖелудя(Аннотации); Прозвища = ПрочитатьПрозвища(Аннотации, ИмяЖелудя); Порядок = ПрочитатьПорядок(Аннотации); @@ -446,20 +446,20 @@ #Область СозданиеЗавязи -Функция СоздатьЗавязь(ТипВладельцаСвойств, Конструктор) +Функция СоздатьЗавязь(ВладелецСвойств, Конструктор) Если НРег(Конструктор.Имя) = НРег("ПриСозданииОбъекта") ИЛИ НРег(Конструктор.Имя) = НРег("OnObjectCreation") Тогда - Возврат СоздатьЗавязьЧерезКонструкторОбъекта(ТипВладельцаСвойств, Конструктор); + Возврат СоздатьЗавязьЧерезКонструкторОбъекта(ВладелецСвойств, Конструктор); - ИначеЕсли ТипЗнч(ТипВладельцаСвойств) = Тип("Сценарий") Тогда + ИначеЕсли ТипЗнч(ВладелецСвойств) = Тип("Сценарий") Тогда - Возврат СоздатьЗавязьЧерезМетодЛямбды(ТипВладельцаСвойств, Конструктор); + Возврат СоздатьЗавязьЧерезМетодЛямбды(ВладелецСвойств, Конструктор); Иначе - Возврат СоздатьЗавязьЧерезМетодЗавязи(ТипВладельцаСвойств, Конструктор); + Возврат СоздатьЗавязьЧерезМетодЗавязи(ВладелецСвойств, Конструктор); КонецЕсли; @@ -529,12 +529,12 @@ Возврат РеальныйТип; КонецФункции -Функция ПрочитатьПрилепляемыеЧастицыВМетоде(Метод, ТипВладельцаСвойств) +Функция ПрочитатьПрилепляемыеЧастицыВМетоде(Метод, ВладелецСвойств) ПрилепляемыеЧастицы = Новый Массив; Для Каждого ПараметрМетода Из Метод.Параметры Цикл - РазворачивательАннотаций.РазвернутьАннотацииСвойства(ПараметрМетода, ТипВладельцаСвойств); + РазворачивательАннотаций.РазвернутьАннотацииСвойства(ПараметрМетода, ВладелецСвойств); ПрилепляемаяЧастица = ПрилепляторЧастиц.ДанныеОПрилепляемойЧастице(ПараметрМетода); ПрилепляемыеЧастицы.Добавить(ПрилепляемаяЧастица); From b02f019b8005258828668adf97842d9cf2655b17 Mon Sep 17 00:00:00 2001 From: Kirill Chernenko <32082417+sfaqer@users.noreply.github.com> Date: Thu, 16 Jan 2025 17:08:21 +1000 Subject: [PATCH 3/3] =?UTF-8?q?=D0=90=D0=BA=D1=82=D1=83=D0=B0=D0=BB=D0=B8?= =?UTF-8?q?=D0=B7=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B0=20=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D1=81=D0=B8=D1=8F=20annotations?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packagedef | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packagedef b/packagedef index cb03603..af478f9 100644 --- a/packagedef +++ b/packagedef @@ -14,7 +14,7 @@ .ВключитьФайл("tests") .ВключитьФайл("LICENSE.md") .ВключитьФайл("README.md") - .ЗависитОт("annotations", "2.0.0") + .ЗависитОт("annotations", "1.1.0") .ЗависитОт("asserts", "1.4.0") .ЗависитОт("configor", "0.9.0") .ЗависитОт("logos", "1.4.0")