Skip to content

Commit 99db9c3

Browse files
authored
Merge pull request #30 from khorevaa/develop
v0.8.0
2 parents 177e419 + 5c43845 commit 99db9c3

15 files changed

+413
-68
lines changed

.github/workflows/qa.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
fail-fast: false
1414
matrix:
1515
os: [ubuntu-latest]
16-
oscript_version: ['1.4.0', '1.5.0']
16+
oscript_version: ['1.8.3', 'stable']
1717

1818
steps:
1919
# Загрузка проекта

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
fail-fast: false
1616
matrix:
1717
os: [ubuntu-latest]
18-
oscript_version: ['1.4.0']
18+
oscript_version: ['1.8.3']
1919
package_mask: ["configor-*.ospx"]
2020

2121
steps:

.github/workflows/testing.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
fail-fast: false
1414
matrix:
1515
os: [ubuntu-latest]
16-
oscript_version: ['1.4.0', '1.5.0']
16+
oscript_version: ['1.8.3', 'stable']
1717

1818
steps:
1919
# Загрузка проекта

packagedef

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,19 @@
44
//
55

66
Описание.Имя("configor")
7-
.Версия("0.7.1")
7+
.Версия("0.8.0")
88
.Автор("Khorev Aleksey")
99
.АдресАвтора("[email protected]")
1010
.Описание("Библиотека для работы с конфигурационными файлами в формате json, yaml")
11-
.ВерсияСреды("1.0.19")
11+
.ВерсияСреды("1.8.3")
1212
.ВключитьФайл("src")
1313
.ВключитьФайл("docs")
1414
//.ВключитьФайл("tests")
1515
.ЗависитОт("logos")
1616
.ЗависитОт("json")
1717
.ЗависитОт("yaml")
1818
.ЗависитОт("asserts")
19-
.ЗависитОт("fluent", "0.3.1")
19+
.ЗависитОт("fluent", "0.6.0")
2020
.ЗависитОт("notify", "0.2.0")
2121
.ЗависитОт("tempfiles")
2222
.ЗависитОт("reflector", "0.3.1")
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
#Использовать logos
2+
3+
Перем Лог;
4+
Перем Префикс;
5+
6+
Процедура ПриСозданииОбъекта(ПрефиксПеременныхСреды = "")
7+
Префикс = ПрефиксПеременныхСреды;
8+
Лог = Логирование.ПолучитьЛог("oscript.lib.configor.env");
9+
КонецПроцедуры
10+
11+
#Область ПрограммныйИнтерфейс
12+
13+
// Возвращает приоритет провайдера
14+
//
15+
// Возвращаемое значение:
16+
// Число - текущий приоритет провайдера
17+
//
18+
Функция Приоритет() Экспорт
19+
Возврат 2;
20+
КонецФункции
21+
22+
// Возвращает идентификатор провайдера
23+
//
24+
// Возвращаемое значение:
25+
// Строка - текущий идентификатор провайдера
26+
//
27+
Функция Идентификатор() Экспорт
28+
Возврат "env";
29+
КонецФункции
30+
31+
// Возвращает тип провайдера
32+
//
33+
// Возвращаемое значение:
34+
// Строка - текущий тип провайдера
35+
//
36+
Функция ТипПровайдера() Экспорт
37+
Возврат "env";
38+
КонецФункции
39+
40+
// Выполняет чтение параметров для провайдера
41+
//
42+
// Параметры:
43+
// НастройкиПровайдера - Структура - структура настроек провайдера
44+
//
45+
// Возвращаемое значение:
46+
// Соответствие - результат чтения провайдера
47+
//
48+
Функция ПрочитатьПараметры(НастройкиПровайдера) Экспорт
49+
50+
Лог.Отладка("Выполняю чтение параметров переменных среды для префикса <%1>", Префикс);
51+
52+
ПеременныеСреды = ПеременныеСреды();
53+
54+
Если ПустаяСтрока(Префикс) Тогда
55+
Возврат ПеременныеСреды;
56+
КонецЕсли;
57+
58+
ПрочитанныеПараметры = Новый Соответствие;
59+
60+
Для каждого ПеременнаяСреды Из ПеременныеСреды Цикл
61+
62+
Если СтрНачинаетсяС(ПеременнаяСреды.Ключ, Префикс) Тогда
63+
64+
ПрочитанныеПараметры.Вставить(
65+
Прав(ПеременнаяСреды.Ключ, СтрДлина(ПеременнаяСреды.Ключ) - СтрДлина(Префикс)),
66+
ПеременнаяСреды.Значение
67+
);
68+
69+
КонецЕсли;
70+
71+
КонецЦикла;
72+
73+
Возврат ПрочитанныеПараметры;
74+
75+
КонецФункции
76+
77+
#КонецОбласти
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
#Использовать logos
2+
3+
Перем Лог;
4+
5+
#Область ПрограммныйИнтерфейс
6+
7+
// Возвращает приоритет провайдера
8+
//
9+
// Возвращаемое значение:
10+
// Число - текущий приоритет провайдера
11+
//
12+
Функция Приоритет() Экспорт
13+
Возврат 1;
14+
КонецФункции
15+
16+
// Возвращает идентификатор провайдера
17+
//
18+
// Возвращаемое значение:
19+
// Строка - текущий идентификатор провайдера
20+
//
21+
Функция Идентификатор() Экспорт
22+
Возврат "ini";
23+
КонецФункции
24+
25+
// Возвращает тип провайдера
26+
//
27+
// Возвращаемое значение:
28+
// Строка - текущий тип провайдера
29+
//
30+
Функция ТипПровайдера() Экспорт
31+
Возврат "file";
32+
КонецФункции
33+
34+
// Возвращает расширения файлов по умолчанию
35+
//
36+
// Возвращаемое значение:
37+
// Строка - расширения файлов по умолчанию
38+
//
39+
Функция РасширенияФайлов() Экспорт
40+
Возврат "ini";
41+
КонецФункции
42+
43+
// Выполняет чтение параметров для провайдера
44+
//
45+
// Параметры:
46+
// НастройкиПровайдера - Структура - структура настроек провайдера
47+
//
48+
// Возвращаемое значение:
49+
// Соответствие - результат чтения провайдера
50+
//
51+
Функция ПрочитатьПараметры(НастройкиПровайдера) Экспорт
52+
53+
ПрочитанныеПараметры = Новый Соответствие;
54+
55+
ФайлПараметров = Новый Файл(НастройкиПровайдера.ФайлПараметров);
56+
57+
Если Не ФайлПараметров.Существует() Тогда
58+
Лог.Отладка("Не найден файл параметров <%1>", ФайлПараметров.ПолноеИмя);
59+
Возврат ПрочитанныеПараметры;
60+
КонецЕсли;
61+
62+
Лог.Отладка("Выполняю чтение файла параметров <%1>", ФайлПараметров.ПолноеИмя);
63+
ПрочитанныеПараметры = Прочитать(ФайлПараметров.ПолноеИмя);
64+
65+
Возврат ПрочитанныеПараметры;
66+
67+
КонецФункции
68+
69+
#КонецОбласти
70+
71+
// Выполнить чтение настроек из файла
72+
//
73+
// Параметры:
74+
// ПутьКФайлу - Cтрока - путь к файлу настроек
75+
// Возвращаемое значение:
76+
// Соответствие - итоговые параметры
77+
//
78+
Функция Прочитать(Знач ПутьКФайлу)
79+
80+
НастройкиИзФайла = Новый Соответствие;
81+
82+
ТД = Новый ТекстовыйДокумент();
83+
ТД.Прочитать(ПутьКФайлу);
84+
85+
Для Сч = 1 По ТД.КоличествоСтрок() Цикл
86+
87+
СтрокаНастроек = ТД.ПолучитьСтроку(Сч);
88+
89+
Если ПустаяСтрока(СтрокаНастроек) или Лев(СтрокаНастроек, 1) = "#" Тогда
90+
Продолжить;
91+
КонецЕсли;
92+
93+
Поз = СтрНайти(СтрокаНастроек, "=");
94+
Если Поз = 0 Тогда
95+
Продолжить;
96+
КонецЕсли;
97+
98+
Ключ = СокрЛП(Лев(СтрокаНастроек, Поз - 1));
99+
Значение = СокрЛП(Сред(СтрокаНастроек, Поз + 1));
100+
101+
НастройкиИзФайла.Вставить(Ключ, Значение);
102+
103+
КонецЦикла;
104+
105+
Лог.Отладка("Прочитан файл настроек %1", ПутьКФайлу);
106+
107+
Возврат НастройкиИзФайла;
108+
109+
КонецФункции // Прочитать
110+
111+
Лог = Логирование.ПолучитьЛог("oscript.lib.configor.ini");
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#Использовать logos
2+
3+
Перем Лог;
4+
Перем мПараметры;
5+
6+
Процедура ПриСозданииОбъекта(Параметры)
7+
8+
Если ТипЗнч(Параметры) <> Тип("Соответствие") Тогда
9+
ВызватьИсключение
10+
"Для провайдера параметров Соответствие, источником параметров может быть только соответствие";
11+
КонецЕсли;
12+
13+
мПараметры = Параметры;
14+
Лог = Логирование.ПолучитьЛог("oscript.lib.configor.map");
15+
16+
КонецПроцедуры
17+
18+
#Область ПрограммныйИнтерфейс
19+
20+
// Возвращает приоритет провайдера
21+
//
22+
// Возвращаемое значение:
23+
// Число - текущий приоритет провайдера
24+
//
25+
Функция Приоритет() Экспорт
26+
Возврат 3;
27+
КонецФункции
28+
29+
// Возвращает идентификатор провайдера
30+
//
31+
// Возвращаемое значение:
32+
// Строка - текущий идентификатор провайдера
33+
//
34+
Функция Идентификатор() Экспорт
35+
Возврат "map";
36+
КонецФункции
37+
38+
// Возвращает тип провайдера
39+
//
40+
// Возвращаемое значение:
41+
// Строка - текущий тип провайдера
42+
//
43+
Функция ТипПровайдера() Экспорт
44+
Возврат "memory";
45+
КонецФункции
46+
47+
// Выполняет чтение параметров для провайдера
48+
//
49+
// Параметры:
50+
// НастройкиПровайдера - Структура - структура настроек провайдера
51+
//
52+
// Возвращаемое значение:
53+
// Соответствие - результат чтения провайдера
54+
//
55+
Функция ПрочитатьПараметры(НастройкиПровайдера) Экспорт
56+
57+
Лог.Отладка("Считываю параметры из соответствия");
58+
59+
Возврат мПараметры;
60+
61+
КонецФункции
62+
63+
#КонецОбласти

src/Классы/internal/Классы/ФайловыйПровайдерПараметров.os

Lines changed: 15 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -172,15 +172,22 @@
172172
ИндексКаталоговПоиска = Новый Массив;
173173

174174
СформироватьИндексКаталогПоиска();
175-
176-
ФункцияСортировки = Новый ОписаниеОповещения("СортироватьКаталогиПоискаФайлов", ЭтотОбъект);
177175

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

181179
КоличествоФайлов = КоллекцияФайловПараметров
182-
.Сортировать(ФункцияСортировки)
183-
.Фильтровать("Результат = Элемент.ПоискФайла()")
180+
.Сортировать("(Первый, Второй) -> {
181+
| Если ВРЕГ(НаправлениеСортировки) = ВРег(""УБЫВ"") Тогда
182+
| Возврат ПроцессорыКоллекций.СтандартнаяФункцияСравненияОбратныйПорядок()
183+
| .Выполнить(Первый.Приоритет(), Второй.Приоритет());
184+
| Иначе
185+
| Возврат ПроцессорыКоллекций.СтандартнаяФункцияСравненияПрямойПорядок()
186+
| .Выполнить(Первый.Приоритет(), Второй.Приоритет());
187+
| КонецЕсли;
188+
|}",
189+
ЭтотОбъект)
190+
.Фильтровать("Элемент -> Элемент.ПоискФайла()")
184191
.Количество();
185192

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

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

201210
КонецЕсли;
202211

@@ -222,7 +231,7 @@
222231

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

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

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

@@ -243,36 +252,6 @@
243252

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

246-
// Обработчик сортировки каталогов поиска файлов
247-
//
248-
// Параметры:
249-
// Результат - Объект.КаталогПоискаФайла - Элемент массива каталогов поиска
250-
// ДополнительныеПараметры - Структура - дополнительная структура
251-
//
252-
Процедура СортироватьКаталогиПоискаФайлов(Результат, ДополнительныеПараметры) Экспорт
253-
254-
Если ВРЕГ(НаправлениеСортировки) = ВРег("УБЫВ") Тогда
255-
Результат = ДополнительныеПараметры.Элемент1.Приоритет() < ДополнительныеПараметры.Элемент2.Приоритет();
256-
Иначе
257-
Результат = ДополнительныеПараметры.Элемент1.Приоритет() > ДополнительныеПараметры.Элемент2.Приоритет();
258-
КонецЕсли;
259-
260-
КонецПроцедуры
261-
262-
// Обработчик выполнения чтения файлового провайдера
263-
//
264-
// Параметры:
265-
// Результат - Объект.КаталогПоискаФайла - Элемент массива каталогов поиска
266-
// ДополнительныеПараметры - Структура - дополнительная структура
267-
//
268-
Процедура ОбработчикВыполненияЧтениеФайловогоПровайдера(Результат, ДополнительныеПараметры) Экспорт
269-
270-
КаталогПоиска = ДополнительныеПараметры.Элемент;
271-
272-
ВыполнитьЧтениеФайловогоПровайдера(КаталогПоиска.ИмяФайла());
273-
274-
КонецПроцедуры
275-
276255
Процедура ОбъединитьРезультаты(ОсновноеСоответствие, ДобавляемоеСоответствие)
277256

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

0 commit comments

Comments
 (0)