Skip to content

Commit

Permalink
Merge pull request #15 from sfaqer/feature/executableWorking
Browse files Browse the repository at this point in the history
Работоспособность в упакованном в исполняемый файл приложения
  • Loading branch information
nixel2007 authored Aug 23, 2023
2 parents 8cc4165 + a52bf4e commit eb72ced
Show file tree
Hide file tree
Showing 6 changed files with 78 additions and 95 deletions.
2 changes: 1 addition & 1 deletion packagedef
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// BSLLS:CodeOutOfRegion-off
Описание.Имя("decorator")
.Версия("1.5.1")
.Версия("1.5.2")
.Автор("Nikita Gryzlov")
.АдресАвтора("[email protected]")
.Описание("Библиотека для создания декораторов над объектами")
Expand Down
18 changes: 0 additions & 18 deletions src/internal/Классы/ШаблонДекоратора.os

This file was deleted.

40 changes: 0 additions & 40 deletions src/internal/Классы/ШаблонМетода.os_template

This file was deleted.

97 changes: 61 additions & 36 deletions src/internal/Модули/КэшируемыеДанные.os
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#Область ОписаниеПеременных

Перем ТекстШаблонаОбъектаДекоратора; // Шаблон объекта декоратора
Перем ТекстШаблонаМетодаДекоратора; // Шаблон декорируемого метода
Перем ТекстШаблонаПользовательскогоМетода; // Шаблон добавляемого метода

#КонецОбласти
Expand All @@ -14,51 +13,77 @@
// Строка - Текст сценария
//
Функция ТекстШаблонаОбъектаДекоратора() Экспорт
Если ТекстШаблонаОбъектаДекоратора = Неопределено Тогда
ТекстШаблонаОбъектаДекоратора = ПрочитатьТекстШаблона("ШаблонДекоратора.os");
КонецЕсли;

Возврат ТекстШаблонаОбъектаДекоратора;
КонецФункции

Функция ТекстШаблонаМетодаДекоратора() Экспорт

Если ТекстШаблонаМетодаДекоратора = Неопределено Тогда

ТекстШаблонаМетодаДекоратора = ТекстШаблонаПользовательскогоМетода();

КонецЕсли;

Возврат ТекстШаблонаМетодаДекоратора;

Возврат ТекстШаблонаПользовательскогоМетода;
КонецФункции

Функция ТекстШаблонаПользовательскогоМетода() Экспорт
Если ТекстШаблонаПользовательскогоМетода = Неопределено Тогда
ТекстШаблонаПользовательскогоМетода = ПрочитатьТекстШаблона("ШаблонМетода.os_template");
КонецЕсли;

Возврат ТекстШаблонаПользовательскогоМетода;
КонецФункции

#КонецОбласти

#Область СлужебныеПроцедурыИФункции
ТекстШаблонаОбъектаДекоратора = "
|
|// {Область импортов}
|
|// {Область переменных}
|
|Перем Декоратор_ИсходныйОбъект;
|Перем Декоратор_Лог;
|
|// {Область методов}
|
|// #Область Инициализация
|
|Декоратор_Лог = Логирование.ПолучитьЛог(""oscript.lib.decorator.object"");
|
|// {Инициализация}
|
|// #КонецОбласти
|
|";

Функция ПрочитатьТекстШаблона(ИмяШаблона)
КаталогТекущегоСценария = ТекущийСценарий().Каталог;
ПутьКШаблонуДекоратора = ОбъединитьПути(
КаталогТекущегоСценария,
"..",
"Классы",
ИмяШаблона
);
ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.Прочитать(ПутьКШаблонуДекоратора, КодировкаТекста.UTF8NoBom);
ТекстШаблонаДекоратора = ТекстовыйДокумент.ПолучитьТекст();
ТекстовыйДокумент = Неопределено;

Возврат ТекстШаблонаДекоратора;
КонецФункции

#КонецОбласти
ТекстШаблонаПользовательскогоМетода = "
|
|// {АннотацияМетода}
|{Функция} Декоратор_ИмяМетода(Декоратор_ОписаниеПараметровМетода) // {Экспорт}
|
| Если {Декоратор_ЭтоДекорируемыйМетод} Тогда
| ОбработкаДекоратора.СинхронизироватьПоля(ЭтотОбъект, Декоратор_ИсходныйОбъект);
| Иначе
| ОбработкаДекоратора.СинхронизироватьПоля(Декоратор_ИсходныйОбъект, ЭтотОбъект);
| КонецЕсли;
|
| Декоратор_ВозвращаемоеИзМетодаЗначение = NULL;
|
| // {Декоратор_ПередВызовомМетода}
|
| // {Декоратор_ВыполняемаяСтрока};
|
| Если {Декоратор_ЭтоДекорируемыйМетод} Тогда
| ОбработкаДекоратора.СинхронизироватьПоля(Декоратор_ИсходныйОбъект, ЭтотОбъект);
| Иначе
| ОбработкаДекоратора.СинхронизироватьПоля(ЭтотОбъект, Декоратор_ИсходныйОбъект);
| КонецЕсли;
|
| Если Декоратор_ВозвращаемоеИзМетодаЗначение = Декоратор_ИсходныйОбъект Тогда
| Декоратор_ВозвращаемоеИзМетодаЗначение = ЭтотОбъект;
| КонецЕсли;
|
| // {Декоратор_ПослеВызоваМетода}
|
| // {Декоратор_ВозвращаемоеЗначение}
|
|{КонецФункции}
|
|{Функция} ДекораторВнутренний_ИмяМетода(Декоратор_ОписаниеПараметровМетода)
|
| // {Декоратор_ТекстМетода}
|
|{КонецФункции}
|
|";
Original file line number Diff line number Diff line change
Expand Up @@ -293,6 +293,14 @@

ОбластьИмпортов = "";

УпакованВИсполняемыйФайл = СтрНайти(ТекущийСценарий().Источник, "oscript://") <> 0;

Если УпакованВИсполняемыйФайл Тогда
Возврат ОбластьИмпортов; // Импорты не поддерживаются
КонецЕсли;

ОбластьИмпортов = "#Использовать logos" + Символы.ПС;

ШаблонИмпорта = "#Использовать %2%1%2" + Символы.ПС;
Для Каждого Импорт Из ПользовательскиеИмпорты Цикл
Кавычки = ?(Импорт.ПодключениеПоИмени, "", """");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,15 @@

Функция ОбластьИмпортов()

УпакованВИсполняемыйФайл = СтрНайти(ТекущийСценарий().Источник, "oscript://") <> 0;

Если УпакованВИсполняемыйФайл Тогда
Возврат ""; // Импорты не поддерживаются
КонецЕсли;

ОбластьИмпортов = Новый Массив;

ОбластьИмпортов.Добавить("#Использовать logos");

Для Каждого Импорт Из ПользовательскиеИмпорты Цикл
ОбластьИмпортов.Добавить(Импорт.Описание());
Expand Down

0 comments on commit eb72ced

Please sign in to comment.