-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 39eeb8d
Showing
13 changed files
with
509 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
.vscode | ||
.DS_Store | ||
*.ospx | ||
out/ | ||
oscript_modules/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
|
||
# autumn-annotation-types - набор аннотаций ОСени, для удобной инициализации стандартных типов. | ||
|
||
## Что это и зачем ? | ||
|
||
Очень часто приходится писать вот такой код: | ||
|
||
```bsl | ||
Перем МойМассив; | ||
&Желудь | ||
Процедура ПриСозданииОбъекта() | ||
МойМассив = Новый Массив; | ||
КонецПроцедуры | ||
``` | ||
|
||
Мы обозначаем переменные(поля класса), и где-то из конструктора инициализируем значения. Данная библиотека содержит набор аннотаций, которые помогают сократить написание количество кода, и его читаемость. Благодаря этим аннотациям ОСень берет на себя всю работу по инициализации полей. | ||
|
||
```bsl | ||
&Массив | ||
Перем МойМассив; | ||
&Желудь | ||
Процедура ПриСозданииОбъекта() | ||
КонецПроцедуры | ||
``` | ||
|
||
## Поддерживаемые типы | ||
|
||
```&Массив(Размер)``` - В поле внедряется новый массив. Параметр ```Размер``` необязательный, позволяет задать размер массива. | ||
|
||
```&Соответствие``` - В поле внедряется новое соответствие. | ||
|
||
```&Структура(Ключи)``` - В поле внедряется новая структура. Параметр ```Ключи``` необязательный. Строка, содержащая список ключей структуры, разделенные запятой "```,```" | ||
|
||
```&ТаблицаЗначений(Колонки)``` - В поле внедряется новая таблица значений. Параметр ```Колонки``` необязательный. Строка, содержащая список имен колонок, разделенных запятой "```,```" | ||
|
||
## Подключение и использование | ||
|
||
В точке входа вашего приложения подключить библиотеку | ||
|
||
```bsl | ||
#Использовать autumn | ||
#Использовать autumn-annotation-types | ||
Поделка = Новый Поделка(); | ||
. . . | ||
``` | ||
|
||
Пример внедрения типов в поля желудя: | ||
|
||
```bsl | ||
&Массив | ||
Перем ПустойМассив Экспорт; | ||
&ТаблицаЗначений("Колонка1, Колонка2") | ||
Перем ТЗ Экспорт; | ||
&ТаблицаЗначений | ||
Перем ТЗБезКолонок Экспорт; | ||
&Соответствие | ||
Перем Соответствие Экспорт; | ||
&Структура("Ключ1, Ключ2") | ||
Перем СтруктураСКлючами Экспорт; | ||
&Структура | ||
Перем ПустаяСтруктура Экспорт; | ||
Перем МассивСРазмером1 Экспорт; | ||
&Желудь | ||
Процедура ПриСозданииОбъекта(&Массив(1) _Массив) | ||
МассивСРазмером1 = _Массив; | ||
КонецПроцедуры | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
// Пояснения по переменным даны в конце модуля | ||
Перем ПоказатьСообщенияЗагрузки; | ||
Перем ВыдаватьОшибкуПриЗагрузкеУжеСуществующихКлассовМодулей; | ||
|
||
Перем КэшМодулей; | ||
|
||
Процедура ПриЗагрузкеБиблиотеки(Путь, СтандартнаяОбработка, Отказ) | ||
Вывести(" | ||
|ПриЗагрузкеБиблиотеки " + Путь); | ||
|
||
Если Осень <> Неопределено Тогда | ||
ПутьДоЗаготовки = ОбъединитьПути(Путь, "src/Заготовки/ИнициализацияАннотацийТипов.os"); | ||
ПодключитьСценарий(ПутьДоЗаготовки, "ИнициализацияАннотацийТипов"); | ||
Осень.ДобавитьЗаготовкуДляАвтоИнициализации("ИнициализацияАннотацийТипов"); | ||
|
||
мКаталог = ОбъединитьПути(Путь, "src/Классы"); | ||
ОбработатьКаталогКлассов(мКаталог, СтандартнаяОбработка, Отказ); | ||
Иначе | ||
ВызватьИсключение "Некорректный порядок импорта библиотек. Сначала подключите autumn"; | ||
КонецЕсли; | ||
|
||
КонецПроцедуры | ||
|
||
Процедура ОбработатьКаталогКлассов(Знач Путь, СтандартнаяОбработка, Отказ) | ||
|
||
КаталогКлассов = Новый Файл(Путь); | ||
|
||
Если КаталогКлассов.Существует() Тогда | ||
Файлы = НайтиФайлы(КаталогКлассов.ПолноеИмя, "*.os"); | ||
Для Каждого Файл Из Файлы Цикл | ||
Вывести(СтрШаблон(" класс (по соглашению) %1, файл %2", Файл.ИмяБезРасширения, Файл.ПолноеИмя)); | ||
СтандартнаяОбработка = Ложь; | ||
// ДобавитьКласс(Файл.ПолноеИмя, Файл.ИмяБезРасширения); | ||
ДобавитьКлассЕслиРанееНеДобавляли(Файл.ПолноеИмя, Файл.ИмяБезРасширения); | ||
КонецЦикла; | ||
КонецЕсли; | ||
|
||
КонецПроцедуры | ||
|
||
Процедура ДобавитьКлассЕслиРанееНеДобавляли(ПутьФайла, ИмяКласса) | ||
Вывести("Добавляю класс, если ранее не добавляли " + ИмяКласса); | ||
Если ВыдаватьОшибкуПриЗагрузкеУжеСуществующихКлассовМодулей Тогда | ||
Вывести("Добавляю класс " + ИмяКласса); | ||
ДобавитьКласс(ПутьФайла, ИмяКласса); | ||
Возврат; | ||
КонецЕсли; | ||
|
||
КлассУжеЕсть = Ложь; | ||
Попытка | ||
Объект = Новый(ИмяКласса); | ||
КлассУжеЕсть = Истина; | ||
Исключение | ||
СообщениеОшибки = ОписаниеОшибки(); | ||
ИскомаяОшибка = СтрШаблон("Конструктор не найден (%1)", ИмяКласса); | ||
КлассУжеЕсть = СтрНайти(СообщениеОшибки, ИскомаяОшибка) = 0; | ||
КонецПопытки; | ||
Если Не КлассУжеЕсть Тогда | ||
|
||
Вывести("Добавляю класс, т.к. он не найден - " + ИмяКласса); | ||
ДобавитьКласс(ПутьФайла, ИмяКласса); | ||
|
||
Иначе | ||
Вывести("Пропускаю загрузку класса " + ИмяКласса); | ||
|
||
КонецЕсли; | ||
КонецПроцедуры | ||
|
||
Процедура Вывести(Знач Сообщение) | ||
Если ПоказатьСообщенияЗагрузки Тогда | ||
Сообщить(Сообщение); | ||
КонецЕсли; | ||
КонецПроцедуры | ||
|
||
Функция ПолучитьБулевоИзПеременнойСреды(Знач ИмяПеременнойСреды, Знач ЗначениеПоУмолчанию) | ||
Рез = ЗначениеПоУмолчанию; | ||
РезИзСреды = ПолучитьПеременнуюСреды(ИмяПеременнойСреды); | ||
Если ЗначениеЗаполнено(РезИзСреды) Тогда | ||
РезИзСреды = СокрЛП(РезИзСреды); | ||
Попытка | ||
Рез = Число(РезИзСреды) <> 0 ; | ||
Исключение | ||
Рез = ЗначениеПоУмолчанию; | ||
Сообщить(СтрШаблон("Неверный формат переменной среды %1. Ожидали 1 или 0, а получили %2", ИмяПеременнойСреды, РезИзСреды)); | ||
КонецПопытки; | ||
КонецЕсли; | ||
|
||
Возврат Рез; | ||
КонецФункции | ||
|
||
// Если Истина, то выдаются подробные сообщения о порядке загрузке пакетов, классов, модулей, что помогает при анализе проблем | ||
// очень полезно при анализе ошибок загрузки | ||
// Переменная среды может принимать значение 0 (выключено) или 1 (включено) | ||
// Значение флага по умолчанию - Ложь | ||
ПоказатьСообщенияЗагрузки = ПолучитьБулевоИзПеременнойСреды( | ||
"OSLIB_LOADER_TRACE", Ложь); | ||
|
||
// Если Ложь, то пропускаются ошибки повторной загрузки классов/модулей, | ||
//что важно при разработке/тестировании стандартных библиотек | ||
// Если Истина, то выдается ошибка при повторной загрузке классов библиотек из движка | ||
// Переменная среды может принимать значение 0 (выключено) или 1 (включено) | ||
// Значение флага по умолчанию - Истина | ||
ВыдаватьОшибкуПриЗагрузкеУжеСуществующихКлассовМодулей = ПолучитьБулевоИзПеременнойСреды( | ||
"OSLIB_LOADER_DUPLICATES", Ложь); | ||
|
||
// для установки других значений переменных среды и запуска скриптов можно юзать следующую командную строку | ||
// (set OSLIB_LOADER_TRACE=1) && (oscript .\tasks\test.os) | ||
|
||
КэшМодулей = Новый Массив; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
//////////////////////////////////////////////////////////// | ||
// Описание пакета для сборки и установки | ||
// Полную документацию см. на hub.oscript.io/packaging | ||
// | ||
|
||
|
||
Описание.Имя("autumn-annotation-types") | ||
.Версия("1.0.0") | ||
.Автор("nikita ivanchenko") | ||
.АдресАвтора("https://github.com/Nivanchenko") | ||
.Описание("Набор аннотаций ОСени, для удобной инициализации стандартных типов") | ||
.ВерсияСреды("1.8.3") | ||
.ВключитьФайл("src") | ||
.ВключитьФайл("package-loader.os") | ||
.ЗависитОт("autumn", "3.1.1") | ||
; | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
|
||
Процедура ПриИнициализацииПоделки(Поделка) Экспорт | ||
|
||
КаталогМодуля = ОбъединитьПути(ТекущийСценарий().Каталог, "../Классы"); | ||
Поделка.ПросканироватьКаталог(КаталогМодуля); | ||
|
||
КонецПроцедуры | ||
|
||
&Заготовка | ||
Процедура ПриСозданииОбъекта() | ||
КонецПроцедуры |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
Перем Размер; | ||
|
||
Процедура ПриРазворачиванииАннотации(ОпределениеАннотации, ПодчиненныеАннотации, ТипВладельцаСвойств, Свойство) Экспорт | ||
|
||
Аннотация = РаботаСАннотациями.НайтиАннотацию(ПодчиненныеАннотации, "Пластилин"); | ||
Аннотация.Параметры[1].Значение = Размер; | ||
|
||
КонецПроцедуры | ||
|
||
&Аннотация("Массив") | ||
&Пластилин(Значение = "Массив", Блестяшка = 0) | ||
Процедура ПриСозданииОбъекта(Значение = 0) | ||
Размер = Значение; | ||
КонецПроцедуры |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
|
||
Процедура ПриРазворачиванииАннотации(ОпределениеАннотации, ПодчиненныеАннотации, ТипВладельцаСвойств, Свойство) Экспорт | ||
|
||
КонецПроцедуры | ||
|
||
&Аннотация("Соответствие") | ||
&Пластилин(Значение = "Соответствие") | ||
Процедура ПриСозданииОбъекта(Значение = "") | ||
|
||
КонецПроцедуры |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
Перем Ключи; | ||
|
||
Процедура ПриРазворачиванииАннотации(ОпределениеАннотации, ПодчиненныеАннотации, ТипВладельцаСвойств, Свойство) Экспорт | ||
|
||
Аннотация = РаботаСАннотациями.НайтиАннотацию(ПодчиненныеАннотации, "Пластилин"); | ||
Аннотация.Параметры[1].Значение = Ключи; | ||
|
||
КонецПроцедуры | ||
|
||
&Аннотация("Структура") | ||
&Пластилин(Значение = "Структура", Блестяшка = "") | ||
Процедура ПриСозданииОбъекта(Значение = "") | ||
Ключи = Значение; | ||
КонецПроцедуры |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
Перем Колонки; | ||
|
||
Процедура ПриРазворачиванииАннотации(ОпределениеАннотации, ПодчиненныеАннотации, ТипВладельцаСвойств, Свойство) Экспорт | ||
|
||
Аннотация = РаботаСАннотациями.НайтиАннотацию(ПодчиненныеАннотации, "Пластилин"); | ||
Аннотация.Параметры[1].Значение = Колонки; | ||
|
||
КонецПроцедуры | ||
|
||
&Аннотация("ТаблицаЗначений") | ||
&Пластилин(Значение = "ТаблицаЗначений", Блестяшка = "") | ||
Процедура ПриСозданииОбъекта(Значение = "") | ||
Колонки = Значение; | ||
КонецПроцедуры |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
|
||
&Дуб | ||
Процедура ПриСозданииОбъекта() | ||
|
||
КонецПроцедуры | ||
|
||
&Завязь | ||
&Характер("Компанейский") | ||
Функция Массив(&Блестяшка Размер) Экспорт | ||
Если Размер > 0 Тогда | ||
Массив = Новый Массив(Размер); | ||
Иначе | ||
Массив = Новый Массив(); | ||
КонецЕсли; | ||
|
||
Возврат Массив; | ||
КонецФункции | ||
|
||
&Завязь | ||
&Характер("Компанейский") | ||
Функция Структура(&Блестяшка Ключи) Экспорт | ||
Возврат Новый Структура(Ключи); | ||
КонецФункции | ||
|
||
&Завязь | ||
&Характер("Компанейский") | ||
Функция Соответствие() Экспорт | ||
Возврат Новый Соответствие(); | ||
КонецФункции | ||
|
||
&Завязь | ||
&Характер("Компанейский") | ||
Функция ТаблицаЗначений(&Блестяшка Колонки) Экспорт | ||
ТаблицаЗначений = Новый ТаблицаЗначений(); | ||
|
||
Если НЕ ПустаяСтрока(Колонки) Тогда | ||
Для каждого ИмяКолонки Из СтрРазделить(Колонки, ",") Цикл | ||
ТаблицаЗначений.Колонки.Добавить(СокрЛП(ИмяКолонки)); | ||
КонецЦикла; | ||
КонецЕсли; | ||
|
||
Возврат ТаблицаЗначений; | ||
КонецФункции |
Oops, something went wrong.