diff --git a/packagedef b/packagedef index 307f0a0..4a9b06f 100644 --- a/packagedef +++ b/packagedef @@ -1,5 +1,5 @@ Описание.Имя("lambdas") - .Версия("0.2.3") + .Версия("0.3.0") .Автор("Кирилл Черненко") .АдресАвтора("https://github.com/sfaqer") .Описание("API для реализации функциональных интерфейсов для OneScript") @@ -9,7 +9,7 @@ .ВключитьФайл("LICENSE.md") .ВключитьФайл("package-loader.os") .ЗависитОт("reflector", "0.7.1") - .ЗависитОт("decorator", "1.7.1") + .ЗависитОт("decorator", "2.0.0") .РазработкаЗависитОт("1testrunner") .РазработкаЗависитОт("coverage") .РазработкаЗависитОт("asserts") diff --git "a/src/internal/\320\234\320\276\320\264\321\203\320\273\320\270/\320\233\321\217\320\274\320\261\320\264\321\213\320\232\320\265\321\210\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217.os" "b/src/internal/\320\234\320\276\320\264\321\203\320\273\320\270/\320\233\321\217\320\274\320\261\320\264\321\213\320\232\320\265\321\210\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217.os" index dae7a12..cc54b6d 100644 --- "a/src/internal/\320\234\320\276\320\264\321\203\320\273\320\270/\320\233\321\217\320\274\320\261\320\264\321\213\320\232\320\265\321\210\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217.os" +++ "b/src/internal/\320\234\320\276\320\264\321\203\320\273\320\270/\320\233\321\217\320\274\320\261\320\264\321\213\320\232\320\265\321\210\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217.os" @@ -6,7 +6,7 @@ Если ЭтоЛямбдаВыражение = Неопределено Тогда ЭтоЛямбдаВыражение = Новый РегулярноеВыражение( - "(.*)->\s*\{?([^\}]+)\}?" + "(.*)->\s*([\s\S]*)" ); КонецЕсли; diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\233\321\217\320\274\320\261\320\264\320\260\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\320\265.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\233\321\217\320\274\320\261\320\264\320\260\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\320\265.os" index 30c302f..c3924f8 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\233\321\217\320\274\320\261\320\264\320\260\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\320\265.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\233\321\217\320\274\320\261\320\264\320\260\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\320\265.os" @@ -190,7 +190,15 @@ Построитель = Новый ПостроительДекоратора(мОбъект) .Отладка(Отладка) - .Метод(Метод); + .Поле(Новый Поле("Выражение").ЗначениеПоУмолчанию(мВыражение)) + .Метод(Метод) + .Метод( + Новый Метод("ОбработкаПолученияПредставления") + .ЭтоПроцедура() + .Параметр(Новый ПараметрМетода("Представление")) + .Параметр(Новый ПараметрМетода("СтандартнаяОбработка")) + .ТелоМетода("СтандартнаяОбработка = Ложь; Представление = Выражение;") + ); Для каждого ПеременнаяИЗначение Из мКонтекст Цикл @@ -224,7 +232,17 @@ РазобранноеВыражение.Параметры = РезультатРазбора.Параметры; РазобранноеВыражение.Аннотации = РезультатРазбора.Аннотации; - РазобранноеВыражение.Тело = Совпадения[0].Группы[2].Значение; + Тело = Совпадения[0].Группы[2].Значение; + + Если СтрНачинаетсяС(Тело, "{") Тогда + Тело = Прав(Тело, СтрДлина(Тело) - 1); + КонецЕсли; + + Если СтрЗаканчиваетсяНа(Тело, "}") Тогда + Тело = Лев(Тело, СтрДлина(Тело) - 1); + КонецЕсли; + + РазобранноеВыражение.Тело = Тело; КонецПроцедуры diff --git "a/tests/\320\233\321\217\320\274\320\261\320\264\320\260\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\320\265.os" "b/tests/\320\233\321\217\320\274\320\261\320\264\320\260\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\320\265.os" index df6a13d..a0ef3bc 100644 --- "a/tests/\320\233\321\217\320\274\320\261\320\264\320\260\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\320\265.os" +++ "b/tests/\320\233\321\217\320\274\320\261\320\264\320\260\320\222\321\213\321\200\320\260\320\266\320\265\320\275\320\270\320\265.os" @@ -537,6 +537,40 @@ КонецПроцедуры +&Тест +Процедура ФигурнаяСкобкаВнутриВыраженияНеЛомаетЛямбду() Экспорт + + // Дано + + ЛямбдаВыражение = Новый ЛямбдаВыражение("х -> Возврат ""{"" + х + ""}"" }"); + + // Когда + + Результат = ЛямбдаВыражение.ВОбъект().Применить("1"); + + // Тогда + + Ожидаем.Что(Результат).Равно("{1}"); + +КонецПроцедуры + +&Тест +Процедура ПредставлениеПереопределяется() Экспорт + + // Дано + + ЛямбдаВыражение = Новый ЛямбдаВыражение("х -> х = х + 1"); + + // Когда + + Результат = Строка(ЛямбдаВыражение.ВОбъект()); + + // Тогда + + Ожидаем.Что(Результат).Равно("х -> х = х + 1"); + +КонецПроцедуры + Функция ЗахватываемыйОбъект() Возврат Новый ПостроительДекоратора()