Skip to content

Commit

Permalink
Добавлена обработка точек в работе провайдера переменных среды.
Browse files Browse the repository at this point in the history
"_" читается как ".", "__" как "_"
  • Loading branch information
sfaqer committed Sep 19, 2023
1 parent fce874b commit 4457b37
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 19 deletions.
2 changes: 1 addition & 1 deletion packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
//

Описание.Имя("configor")
.Версия("0.8.0")
.Версия("0.8.1")
.Автор("Khorev Aleksey")
.АдресАвтора("[email protected]")
.Описание("Библиотека для работы с конфигурационными файлами в формате json, yaml")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,27 +50,39 @@
Лог.Отладка("Выполняю чтение параметров переменных среды для префикса <%1>", Префикс);

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

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

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

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

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

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

КонецЕсли;
Результат = Новый Соответствие;

КонецЦикла;
Если ПустаяСтрока(Префикс) Тогда
Результат = ПрочитанныеПараметры;
Иначе

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

Если СтрНачинаетсяС(ПеременнаяСреды.Ключ, Префикс) Тогда
Сообщить(Прав(ПеременнаяСреды.Ключ, СтрДлина(ПеременнаяСреды.Ключ) - СтрДлина(Префикс)));
Результат.Вставить(
Прав(ПеременнаяСреды.Ключ, СтрДлина(ПеременнаяСреды.Ключ) - СтрДлина(Префикс)),
ПеременнаяСреды.Значение
);

КонецЕсли;

КонецЦикла;

КонецЕсли;

Возврат ПрочитанныеПараметры;
Возврат Результат;

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

Expand Down
10 changes: 5 additions & 5 deletions tests/ПровайдерПараметровENV.os
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

// Дано

УстановитьПеременнуюСреды("TestConfigorEnv", "ТестЗначение", РасположениеПеременнойСреды.Процесс);
УстановитьПеременнуюСреды("Test__Configor_Env", "ТестЗначение", РасположениеПеременнойСреды.Процесс);

// Когда

Expand All @@ -18,7 +18,7 @@

// Тогда

Ожидаем.Что(МенеджерПараметров.Параметр("TestConfigorEnv")).Равно("ТестЗначение");
Ожидаем.Что(МенеджерПараметров.Параметр("Test_Configor.Env")).Равно("ТестЗначение");

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

Expand All @@ -27,18 +27,18 @@

// Дано

УстановитьПеременнуюСреды("Test_ConfigorEnv", "ТестЗначение", РасположениеПеременнойСреды.Процесс);
УстановитьПеременнуюСреды("Test_Configor__Env", "ТестЗначение", РасположениеПеременнойСреды.Процесс);

// Когда

МенеджерПараметров = Новый МенеджерПараметров();

МенеджерПараметров.ДобавитьПровайдерПараметров(Новый ПровайдерПараметровENV("Test_"));
МенеджерПараметров.ДобавитьПровайдерПараметров(Новый ПровайдерПараметровENV("Test."));

МенеджерПараметров.Прочитать();

// Тогда

Ожидаем.Что(МенеджерПараметров.Параметр("ConfigorEnv")).Равно("ТестЗначение");
Ожидаем.Что(МенеджерПараметров.Параметр("Configor_Env")).Равно("ТестЗначение");

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

0 comments on commit 4457b37

Please sign in to comment.