Skip to content

Commit

Permalink
Finish 0.5.2
Browse files Browse the repository at this point in the history
  • Loading branch information
khorevaa committed Jun 9, 2018
2 parents 946de25 + bf9f684 commit 9d7f4b3
Show file tree
Hide file tree
Showing 7 changed files with 117 additions and 169 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.5.1")
.Версия("0.5.2")
.Автор("Khorev Aleksey")
.АдресАвтора("[email protected]")
.Описание("Библиотека для работы с конфигурационными файлами в формате json, yaml")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
#Использовать logos

Перем Лог;

Процедура ПоказатьНастройкиВРежимеОтладки(ЗначенияПараметров, Знач Родитель = "") Экспорт

Если Не Лог.Уровень() = УровниЛога.Отладка Тогда
Возврат;
КонецЕсли;

Если Родитель = "" Тогда
Лог.Отладка(" Тип параметров %1", ТипЗнч(ЗначенияПараметров));
КонецЕсли;

Если ТипЗнч(ЗначенияПараметров) = Тип("Массив") Тогда

Для ИИ = 0 По ЗначенияПараметров.ВГраница() Цикл
ПоказатьНастройкиВРежимеОтладки(ЗначенияПараметров[ИИ], СтрШаблон("%1.%2", Родитель, ИИ));
КонецЦикла;

ИначеЕсли ТипЗнч(ЗначенияПараметров) = Тип("Структура")
ИЛИ ТипЗнч(ЗначенияПараметров) = Тип("Соответствие") Тогда

Если ЗначенияПараметров.Количество() = 0 Тогда
Лог.Отладка(" Коллекция параметров пуста!");
КонецЕсли;

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

Если Не ПустаяСтрока(Родитель) Тогда
ПредставлениеКлюча = СтрШаблон("%1.%2", Родитель, Элемент.Ключ);
Иначе
ПредставлениеКлюча = Элемент.Ключ;
КонецЕсли;

Если ТипЗнч(Элемент.Значение) = Тип("КонструкторПараметров") Тогда

ПоказатьНастройкиВРежимеОтладки(Элемент.Значение.ВСтруктуру(), ПредставлениеКлюча);

ИначеЕсли ТипЗнч(Элемент.Значение) = Тип("Структура")
ИЛИ ТипЗнч(Элемент.Значение) = Тип("Соответствие") Тогда

ПоказатьНастройкиВРежимеОтладки(Элемент.Значение, ПредставлениеКлюча);

ИначеЕсли ТипЗнч(Элемент.Значение) = Тип("Массив") Тогда

Лог.Отладка(" параметр <%1> = Массив.<%2>", ПредставлениеКлюча, Элемент.Значение.Количество());

ПоказатьНастройкиВРежимеОтладки(Элемент.Значение, ПредставлениеКлюча);

Иначе
Лог.Отладка(" параметр <%1> = <%2>", ПредставлениеКлюча, Элемент.Значение);

КонецЕсли;

КонецЦикла;

ИначеЕсли ТипЗнч(ЗначенияПараметров) = Тип("КонструкторПараметров") Тогда

ПоказатьНастройкиВРежимеОтладки(ЗначенияПараметров.ВСтруктуру(), Родитель);


Иначе

Лог.Отладка(" параметр <%1> = <%2>", Родитель, ЗначенияПараметров);

КонецЕсли;

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

Процедура ПриСозданииОбъекта(ВходящийЛог)

Лог = ВходящийЛог;

КонецПроцедуры
Original file line number Diff line number Diff line change
Expand Up @@ -156,31 +156,10 @@
Возврат Рез;
КонецФункции // ВырезатьКомментарииИзТекстаJSON()

Процедура ПоказатьПараметрыВРежимеОтладки(ЗначенияПараметров, Знач Родитель = "")
Процедура ПоказатьПараметрыВРежимеОтладки(ЗначенияПараметров)

Если Родитель = "" Тогда
Лог.Отладка(" Тип параметров %1", ТипЗнч(ЗначенияПараметров));
КонецЕсли;

Если ЗначенияПараметров.Количество() = 0 Тогда
Лог.Отладка(" Коллекция параметров пуста!");
КонецЕсли;

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

ПредставлениеКлюча = Элемент.Ключ;

Если Не ПустаяСтрока(Родитель) Тогда
ПредставлениеКлюча = СтрШаблон("%1.%2", Родитель, ПредставлениеКлюча);
КонецЕсли;

Лог.Отладка(" Получен параметр <%1> = <%2>", ПредставлениеКлюча, Элемент.Значение);

Если ТипЗнч(Элемент.Значение) = Тип("Соответствие") Тогда
ПоказатьПараметрыВРежимеОтладки(Элемент.Значение, ПредставлениеКлюча);
КонецЕсли;

КонецЦикла;
ПроцессорВывода = Новый ВыводВРежимеОтладки(Лог);
ПроцессорВывода.ПоказатьНастройкиВРежимеОтладки(ЗначенияПараметров);

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,31 +127,10 @@
Возврат Рез;
КонецФункции // ПрочитатьФайл()

Процедура ПоказатьПараметрыВРежимеОтладки(ЗначенияПараметров, Знач Родитель = "")

Если Родитель = "" Тогда
Лог.Отладка(" Тип параметров %1", ТипЗнч(ЗначенияПараметров));
КонецЕсли;

Если ЗначенияПараметров.Количество() = 0 Тогда
Лог.Отладка(" Коллекция параметров пуста!");
КонецЕсли;
Процедура ПоказатьПараметрыВРежимеОтладки(ЗначенияПараметров)

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

ПредставлениеКлюча = Элемент.Ключ;

Если Не ПустаяСтрока(Родитель) Тогда
ПредставлениеКлюча = СтрШаблон("%1.%2", Родитель, ПредставлениеКлюча);
КонецЕсли;

Лог.Отладка(" Получен параметр <%1> = <%2>", ПредставлениеКлюча, Элемент.Значение);

Если ТипЗнч(Элемент.Значение) = Тип("Соответствие") Тогда
ПоказатьПараметрыВРежимеОтладки(Элемент.Значение, ПредставлениеКлюча);
КонецЕсли;

КонецЦикла;
ПроцессорВывода = Новый ВыводВРежимеОтладки(Лог);
ПроцессорВывода.ПоказатьНастройкиВРежимеОтладки(ЗначенияПараметров);

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

Expand Down
64 changes: 4 additions & 60 deletions src/Классы/КонструкторПараметров.os
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@

Лог.Отладка("Добавляю поле объект <%1>, <%2>, <%3>", ИмяПоля, ТипПоля, ОбъектПоля.ПолучитьНаименованиеПараметров());

Возврат Поле(ИмяПоля, ТипПоля, , , ОбъектПоля);
Возврат Поле(ИмяПоля, ТипПоля, ОбъектПоля, , ОбъектПоля);

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

Expand Down Expand Up @@ -575,7 +575,6 @@

ИначеЕсли ТипЗначения = Тип("КонструкторПараметров") Тогда

// Лог.Отладка("")
Возврат Значение.ВСтруктуру();

Иначе
Expand Down Expand Up @@ -698,65 +697,10 @@

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

Процедура ПоказатьНастройкиВРежимеОтладки(ЗначенияПараметров, Знач Родитель = "")
Процедура ПоказатьНастройкиВРежимеОтладки(ЗначенияПараметров)

Если Родитель = "" Тогда
Лог.Отладка(" Тип параметров %1", ТипЗнч(ЗначенияПараметров));
КонецЕсли;

Если ТипЗнч(ЗначенияПараметров) = Тип("Массив") Тогда

Для ИИ = 0 По ЗначенияПараметров.ВГраница() Цикл
ПоказатьНастройкиВРежимеОтладки(ЗначенияПараметров[ИИ], СтрШаблон("%1.%2", Родитель, ИИ));
КонецЦикла;

ИначеЕсли ТипЗнч(ЗначенияПараметров) = Тип("Структура")
ИЛИ ТипЗнч(ЗначенияПараметров) = Тип("Соответствие") Тогда

Если ЗначенияПараметров.Количество() = 0 Тогда
Лог.Отладка(" Коллекция параметров пуста!");
КонецЕсли;

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

Если Не ПустаяСтрока(Родитель) Тогда
ПредставлениеКлюча = СтрШаблон("%1.%2", Родитель, Элемент.Ключ);
Иначе
ПредставлениеКлюча = Элемент.Ключ;
КонецЕсли;

Если ТипЗнч(Элемент.Значение) = Тип("КонструкторПараметров") Тогда

ПоказатьНастройкиВРежимеОтладки(Элемент.Значение.ВСтруктуру(), ПредставлениеКлюча);

ИначеЕсли ТипЗнч(Элемент.Значение) = Тип("Структура")
ИЛИ ТипЗнч(Элемент.Значение) = Тип("Соответствие") Тогда

ПоказатьНастройкиВРежимеОтладки(Элемент.Значение, ПредставлениеКлюча);

ИначеЕсли ТипЗнч(Элемент.Значение) = Тип("Массив") Тогда

Лог.Отладка(" параметр <%1> = Массив.<%2>", ПредставлениеКлюча, Элемент.Значение.Количество());

ПоказатьНастройкиВРежимеОтладки(Элемент.Значение, ПредставлениеКлюча);

Иначе
Лог.Отладка(" параметр <%1> = <%2>", ПредставлениеКлюча, Элемент.Значение);

КонецЕсли;

КонецЦикла;

ИначеЕсли ТипЗнч(ЗначенияПараметров) = Тип("КонструкторПараметров") Тогда

ПоказатьНастройкиВРежимеОтладки(ЗначенияПараметров.ВСтруктуру(), Родитель);


Иначе

Лог.Отладка(" параметр <%1> = <%2>", Родитель, ЗначенияПараметров);

КонецЕсли;
ПроцессорВывода = Новый ВыводВРежимеОтладки(Лог);
ПроцессорВывода.ПоказатьНастройкиВРежимеОтладки(ЗначенияПараметров);

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

Expand Down
63 changes: 4 additions & 59 deletions src/Классы/МенеджерПараметров.os
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
#Использовать notify
#Использовать asserts
#Использовать logos
#Использовать tempfiles
#Использовать reflector
#Использовать fluent
#Использовать notify

Перем ЧтениеПараметровВыполнено; // булево - флаг, что чтение выполнено

Expand Down Expand Up @@ -401,68 +401,13 @@

Лог.Отладка("Вызываю <УстановитьПараметры> для объекта <%1>", КлассПараметров);
КлассПараметров.УстановитьПараметры(СтруктураПараметров);
// ПоказатьНастройкиВРежимеОтладки(СтруктураПараметров);

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

Процедура ПоказатьНастройкиВРежимеОтладки(ЗначенияПараметров, Знач Родитель = "")

Если Родитель = "" Тогда
Лог.Отладка(" Тип параметров %1", ТипЗнч(ЗначенияПараметров));
КонецЕсли;

Если ТипЗнч(ЗначенияПараметров) = Тип("Массив") Тогда

Для ИИ = 0 По ЗначенияПараметров.ВГраница() Цикл
ПоказатьНастройкиВРежимеОтладки(ЗначенияПараметров[ИИ], СтрШаблон("%1.%2", Родитель, ИИ));
КонецЦикла;

ИначеЕсли ТипЗнч(ЗначенияПараметров) = Тип("Структура")
ИЛИ ТипЗнч(ЗначенияПараметров) = Тип("Соответствие") Тогда
Процедура ПоказатьНастройкиВРежимеОтладки(ЗначенияПараметров)

Если ЗначенияПараметров.Количество() = 0 Тогда
Лог.Отладка(" Коллекция параметров пуста!");
КонецЕсли;

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

Если Не ПустаяСтрока(Родитель) Тогда
ПредставлениеКлюча = СтрШаблон("%1.%2", Родитель, Элемент.Ключ);
Иначе
ПредставлениеКлюча = Элемент.Ключ;
КонецЕсли;

Если ТипЗнч(Элемент.Значение) = Тип("КонструкторПараметров") Тогда

ПоказатьНастройкиВРежимеОтладки(Элемент.Значение.ВСтруктуру(), ПредставлениеКлюча);

ИначеЕсли ТипЗнч(Элемент.Значение) = Тип("Структура")
ИЛИ ТипЗнч(Элемент.Значение) = Тип("Соответствие") Тогда

ПоказатьНастройкиВРежимеОтладки(Элемент.Значение, ПредставлениеКлюча);

ИначеЕсли ТипЗнч(Элемент.Значение) = Тип("Массив") Тогда

Лог.Отладка(" параметр <%1> = Массив.<%2>", ПредставлениеКлюча, Элемент.Значение.Количество());

ПоказатьНастройкиВРежимеОтладки(Элемент.Значение, ПредставлениеКлюча);

Иначе
Лог.Отладка(" параметр <%1> = <%2>", ПредставлениеКлюча, Элемент.Значение);

КонецЕсли;

КонецЦикла;

ИначеЕсли ТипЗнч(ЗначенияПараметров) = Тип("КонструкторПараметров") Тогда

ПоказатьНастройкиВРежимеОтладки(ЗначенияПараметров.ВСтруктуру(), Родитель);

Иначе

Лог.Отладка(" параметр <%1> = <%2>", Родитель, ЗначенияПараметров);

КонецЕсли;
ПроцессорВывода = Новый ВыводВРежимеОтладки(Лог);
ПроцессорВывода.ПоказатьНастройкиВРежимеОтладки(ЗначенияПараметров);

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

Expand Down
28 changes: 27 additions & 1 deletion tests/КонструкторНастройки_test.os
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
ИменаТестов.Добавить("ТестДолжен_ПроверитьЧтениеПараметровИзКонструктора");
ИменаТестов.Добавить("ТестДолжен_ПроверитьУдалениеПоляИзКонструктора");
ИменаТестов.Добавить("ТестДолжен_ПроверитьЧтениеПроизвольныхПолейКонструтора");
// ИменаТестов.Добавить("ТестДолжен_ПроверитьПарсингОпций");
ИменаТестов.Добавить("ТестДолжен_ПроверитьЗаполнениеОтсутствующихПараметров");
// ИменаТестов.Добавить("ТестДолжен_ПроверитьПарсингМассивовОпций");

Возврат ИменаТестов;
Expand Down Expand Up @@ -121,6 +121,32 @@

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

Процедура ТестДолжен_ПроверитьЗаполнениеОтсутствующихПараметров() Экспорт


СтруктураПараметров = Новый Соответствие();
СтруктураПараметров.Вставить("--custom-feild", "ПроизвольноеПоле");
СтруктураПараметров.Вставить("Поле", "ЗаданноеПоле");

МенеджерПараметров = Новый МенеджерПараметров();
Конструктор = МенеджерПараметров.КонструкторПараметров();
Конструктор.ПолеСтрока("Поле");

ПараметрСоответствие = Конструктор.НовыеПараметры("ПараметрСоответствие");
ПараметрСоответствие.ПолеСтрока("Ключ1")
.ПолеСтрока("Ключ2")
;

Конструктор.ПолеОбъект("ОтсутствующееПоле", ПараметрСоответствие);

Конструктор.ИзСоответствия(СтруктураПараметров);
СтруктураПроверки = Конструктор.ВСтруктуру();
Ожидаем.Что(СтруктураПроверки.Свойство("ОтсутствующееПоле"), "Поле должно присутствовать").Равно(Истина);
ПроверитьРезультат(СтруктураПараметров["Поле"], СтруктураПроверки["Поле"]);

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


Процедура ТестДолжен_ПроверитьЧтениеПроизвольныхПолейКонструтора() Экспорт

СтруктураПараметров = Новый Соответствие();
Expand Down

0 comments on commit 9d7f4b3

Please sign in to comment.