Skip to content

Commit

Permalink
Merge pull request #30 from khorevaa/develop
Browse files Browse the repository at this point in the history
v0.8.0
  • Loading branch information
nixel2007 authored Sep 3, 2023
2 parents 177e419 + 5c43845 commit 99db9c3
Show file tree
Hide file tree
Showing 15 changed files with 413 additions and 68 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/qa.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest]
oscript_version: ['1.4.0', '1.5.0']
oscript_version: ['1.8.3', 'stable']

steps:
# Загрузка проекта
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest]
oscript_version: ['1.4.0']
oscript_version: ['1.8.3']
package_mask: ["configor-*.ospx"]

steps:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/testing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest]
oscript_version: ['1.4.0', '1.5.0']
oscript_version: ['1.8.3', 'stable']

steps:
# Загрузка проекта
Expand Down
6 changes: 3 additions & 3 deletions packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,19 @@
//

Описание.Имя("configor")
.Версия("0.7.1")
.Версия("0.8.0")
.Автор("Khorev Aleksey")
.АдресАвтора("[email protected]")
.Описание("Библиотека для работы с конфигурационными файлами в формате json, yaml")
.ВерсияСреды("1.0.19")
.ВерсияСреды("1.8.3")
.ВключитьФайл("src")
.ВключитьФайл("docs")
//.ВключитьФайл("tests")
.ЗависитОт("logos")
.ЗависитОт("json")
.ЗависитОт("yaml")
.ЗависитОт("asserts")
.ЗависитОт("fluent", "0.3.1")
.ЗависитОт("fluent", "0.6.0")
.ЗависитОт("notify", "0.2.0")
.ЗависитОт("tempfiles")
.ЗависитОт("reflector", "0.3.1")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
#Использовать logos

Перем Лог;
Перем Префикс;

Процедура ПриСозданииОбъекта(ПрефиксПеременныхСреды = "")
Префикс = ПрефиксПеременныхСреды;
Лог = Логирование.ПолучитьЛог("oscript.lib.configor.env");
КонецПроцедуры

#Область ПрограммныйИнтерфейс

// Возвращает приоритет провайдера
//
// Возвращаемое значение:
// Число - текущий приоритет провайдера
//
Функция Приоритет() Экспорт
Возврат 2;
КонецФункции

// Возвращает идентификатор провайдера
//
// Возвращаемое значение:
// Строка - текущий идентификатор провайдера
//
Функция Идентификатор() Экспорт
Возврат "env";
КонецФункции

// Возвращает тип провайдера
//
// Возвращаемое значение:
// Строка - текущий тип провайдера
//
Функция ТипПровайдера() Экспорт
Возврат "env";
КонецФункции

// Выполняет чтение параметров для провайдера
//
// Параметры:
// НастройкиПровайдера - Структура - структура настроек провайдера
//
// Возвращаемое значение:
// Соответствие - результат чтения провайдера
//
Функция ПрочитатьПараметры(НастройкиПровайдера) Экспорт

Лог.Отладка("Выполняю чтение параметров переменных среды для префикса <%1>", Префикс);

ПеременныеСреды = ПеременныеСреды();

Если ПустаяСтрока(Префикс) Тогда
Возврат ПеременныеСреды;
КонецЕсли;

ПрочитанныеПараметры = Новый Соответствие;

Для каждого ПеременнаяСреды Из ПеременныеСреды Цикл

Если СтрНачинаетсяС(ПеременнаяСреды.Ключ, Префикс) Тогда

ПрочитанныеПараметры.Вставить(
Прав(ПеременнаяСреды.Ключ, СтрДлина(ПеременнаяСреды.Ключ) - СтрДлина(Префикс)),
ПеременнаяСреды.Значение
);

КонецЕсли;

КонецЦикла;

Возврат ПрочитанныеПараметры;

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

#КонецОбласти
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
#Использовать logos

Перем Лог;

#Область ПрограммныйИнтерфейс

// Возвращает приоритет провайдера
//
// Возвращаемое значение:
// Число - текущий приоритет провайдера
//
Функция Приоритет() Экспорт
Возврат 1;
КонецФункции

// Возвращает идентификатор провайдера
//
// Возвращаемое значение:
// Строка - текущий идентификатор провайдера
//
Функция Идентификатор() Экспорт
Возврат "ini";
КонецФункции

// Возвращает тип провайдера
//
// Возвращаемое значение:
// Строка - текущий тип провайдера
//
Функция ТипПровайдера() Экспорт
Возврат "file";
КонецФункции

// Возвращает расширения файлов по умолчанию
//
// Возвращаемое значение:
// Строка - расширения файлов по умолчанию
//
Функция РасширенияФайлов() Экспорт
Возврат "ini";
КонецФункции

// Выполняет чтение параметров для провайдера
//
// Параметры:
// НастройкиПровайдера - Структура - структура настроек провайдера
//
// Возвращаемое значение:
// Соответствие - результат чтения провайдера
//
Функция ПрочитатьПараметры(НастройкиПровайдера) Экспорт

ПрочитанныеПараметры = Новый Соответствие;

ФайлПараметров = Новый Файл(НастройкиПровайдера.ФайлПараметров);

Если Не ФайлПараметров.Существует() Тогда
Лог.Отладка("Не найден файл параметров <%1>", ФайлПараметров.ПолноеИмя);
Возврат ПрочитанныеПараметры;
КонецЕсли;

Лог.Отладка("Выполняю чтение файла параметров <%1>", ФайлПараметров.ПолноеИмя);
ПрочитанныеПараметры = Прочитать(ФайлПараметров.ПолноеИмя);

Возврат ПрочитанныеПараметры;

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

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

// Выполнить чтение настроек из файла
//
// Параметры:
// ПутьКФайлу - Cтрока - путь к файлу настроек
// Возвращаемое значение:
// Соответствие - итоговые параметры
//
Функция Прочитать(Знач ПутьКФайлу)

НастройкиИзФайла = Новый Соответствие;

ТД = Новый ТекстовыйДокумент();
ТД.Прочитать(ПутьКФайлу);

Для Сч = 1 По ТД.КоличествоСтрок() Цикл

СтрокаНастроек = ТД.ПолучитьСтроку(Сч);

Если ПустаяСтрока(СтрокаНастроек) или Лев(СтрокаНастроек, 1) = "#" Тогда
Продолжить;
КонецЕсли;

Поз = СтрНайти(СтрокаНастроек, "=");
Если Поз = 0 Тогда
Продолжить;
КонецЕсли;

Ключ = СокрЛП(Лев(СтрокаНастроек, Поз - 1));
Значение = СокрЛП(Сред(СтрокаНастроек, Поз + 1));

НастройкиИзФайла.Вставить(Ключ, Значение);

КонецЦикла;

Лог.Отладка("Прочитан файл настроек %1", ПутьКФайлу);

Возврат НастройкиИзФайла;

КонецФункции // Прочитать

Лог = Логирование.ПолучитьЛог("oscript.lib.configor.ini");
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
#Использовать logos

Перем Лог;
Перем мПараметры;

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

Если ТипЗнч(Параметры) <> Тип("Соответствие") Тогда
ВызватьИсключение
"Для провайдера параметров Соответствие, источником параметров может быть только соответствие";
КонецЕсли;

мПараметры = Параметры;
Лог = Логирование.ПолучитьЛог("oscript.lib.configor.map");

КонецПроцедуры

#Область ПрограммныйИнтерфейс

// Возвращает приоритет провайдера
//
// Возвращаемое значение:
// Число - текущий приоритет провайдера
//
Функция Приоритет() Экспорт
Возврат 3;
КонецФункции

// Возвращает идентификатор провайдера
//
// Возвращаемое значение:
// Строка - текущий идентификатор провайдера
//
Функция Идентификатор() Экспорт
Возврат "map";
КонецФункции

// Возвращает тип провайдера
//
// Возвращаемое значение:
// Строка - текущий тип провайдера
//
Функция ТипПровайдера() Экспорт
Возврат "memory";
КонецФункции

// Выполняет чтение параметров для провайдера
//
// Параметры:
// НастройкиПровайдера - Структура - структура настроек провайдера
//
// Возвращаемое значение:
// Соответствие - результат чтения провайдера
//
Функция ПрочитатьПараметры(НастройкиПровайдера) Экспорт

Лог.Отладка("Считываю параметры из соответствия");

Возврат мПараметры;

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

#КонецОбласти
Original file line number Diff line number Diff line change
Expand Up @@ -172,15 +172,22 @@
ИндексКаталоговПоиска = Новый Массив;

СформироватьИндексКаталогПоиска();

ФункцияСортировки = Новый ОписаниеОповещения("СортироватьКаталогиПоискаФайлов", ЭтотОбъект);

КоллекцияФайловПараметров = Новый ПроцессорКоллекций;
КоллекцияФайловПараметров.УстановитьКоллекцию(ИндексКаталоговПоиска);

КоличествоФайлов = КоллекцияФайловПараметров
.Сортировать(ФункцияСортировки)
.Фильтровать("Результат = Элемент.ПоискФайла()")
.Сортировать("(Первый, Второй) -> {
| Если ВРЕГ(НаправлениеСортировки) = ВРег(""УБЫВ"") Тогда
| Возврат ПроцессорыКоллекций.СтандартнаяФункцияСравненияОбратныйПорядок()
| .Выполнить(Первый.Приоритет(), Второй.Приоритет());
| Иначе
| Возврат ПроцессорыКоллекций.СтандартнаяФункцияСравненияПрямойПорядок()
| .Выполнить(Первый.Приоритет(), Второй.Приоритет());
| КонецЕсли;
|}",
ЭтотОбъект)
.Фильтровать("Элемент -> Элемент.ПоискФайла()")
.Количество();

Если КоличествоФайлов = 0 Тогда
Expand All @@ -196,7 +203,9 @@
Иначе

ФункцияОбработки = Новый ОписаниеОповещения("ОбработчикВыполненияЧтениеФайловогоПровайдера", ЭтотОбъект);
КоллекцияФайловПараметров.ДляКаждого(ФункцияОбработки);
КоллекцияФайловПараметров.ДляКаждого(
"КаталогПоиска -> ВыполнитьЧтениеФайловогоПровайдера(КаталогПоиска.ИмяФайла());"
);

КонецЕсли;

Expand All @@ -222,7 +231,7 @@

КонецПроцедуры

Процедура ВыполнитьЧтениеФайловогоПровайдера(Знач ИмяФайлаПараметров)
Процедура ВыполнитьЧтениеФайловогоПровайдера(Знач ИмяФайлаПараметров) Экспорт

РезультатЧтенияФайла = ВыполнитьЧтениеПровайдера(ИмяФайлаПараметров);

Expand All @@ -243,36 +252,6 @@

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

// Обработчик сортировки каталогов поиска файлов
//
// Параметры:
// Результат - Объект.КаталогПоискаФайла - Элемент массива каталогов поиска
// ДополнительныеПараметры - Структура - дополнительная структура
//
Процедура СортироватьКаталогиПоискаФайлов(Результат, ДополнительныеПараметры) Экспорт

Если ВРЕГ(НаправлениеСортировки) = ВРег("УБЫВ") Тогда
Результат = ДополнительныеПараметры.Элемент1.Приоритет() < ДополнительныеПараметры.Элемент2.Приоритет();
Иначе
Результат = ДополнительныеПараметры.Элемент1.Приоритет() > ДополнительныеПараметры.Элемент2.Приоритет();
КонецЕсли;

КонецПроцедуры

// Обработчик выполнения чтения файлового провайдера
//
// Параметры:
// Результат - Объект.КаталогПоискаФайла - Элемент массива каталогов поиска
// ДополнительныеПараметры - Структура - дополнительная структура
//
Процедура ОбработчикВыполненияЧтениеФайловогоПровайдера(Результат, ДополнительныеПараметры) Экспорт

КаталогПоиска = ДополнительныеПараметры.Элемент;

ВыполнитьЧтениеФайловогоПровайдера(КаталогПоиска.ИмяФайла());

КонецПроцедуры

Процедура ОбъединитьРезультаты(ОсновноеСоответствие, ДобавляемоеСоответствие)

Для каждого Элемент Из ДобавляемоеСоответствие Цикл
Expand Down
Loading

0 comments on commit 99db9c3

Please sign in to comment.