Skip to content

Commit ca051a3

Browse files
committed
Finish 0.5.3
2 parents 9d7f4b3 + 87ba7bb commit ca051a3

File tree

7 files changed

+98
-97
lines changed

7 files changed

+98
-97
lines changed

features/step_definitions/constructor.os

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@
130130
Процедура ЯСоздаюНовыеПараметрыСИменемИСохраняюВ(Знач ИмяКонструктораПараметров, Знач ИмяПеременной) Экспорт
131131

132132
МенеджерПараметров = БДД.ПолучитьИзКонтекста("МенеджерПараметров");
133-
ПараметрОбъект = МенеджерПараметров.НовыйКонструкторПараметров(ИмяКонструктораПараметров);
133+
ПараметрОбъект = МенеджерПараметров.НовыйКонструкторПараметров();
134134

135135
БДД.СохранитьВКонтекст(ИмяПеременной, ПараметрОбъект);
136136

packagedef

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
//
55

66
Описание.Имя("configor")
7-
.Версия("0.5.2")
7+
.Версия("0.5.3")
88
.Автор("Khorev Aleksey")
99
.АдресАвтора("Khorevaa@gmail.com")
1010
.Описание("Библиотека для работы с конфигурационными файлами в формате json, yaml")

src/Классы/КонструкторПараметров.os

Lines changed: 20 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,9 @@
55
Перем Лог;
66

77
Перем Настройки; // Соответствие
8-
Перем НаименованиеПараметров; // Строка
98
Перем СинонимыПараметров; // Массив строка
109
Перем ИндексПолей; // Соответствие ключа и типа элемента массива
1110
Перем ИндексСинонимовПолей; // Соответствие синонимов полей и наименования полей
12-
Перем ИндексПараметров; // Соответствие текущий настроек
1311
Перем КонструкторИспользован; // Булево, признак использования объекта при чтении из соответсвтия
1412
Перем ИнтерфейсКонструктора; // Класс объект ИнтерфейсОбъекта
1513
Перем МожетСодержатьПроизвольныеПоля; // Булево, признак возможность не указывать поля
@@ -18,30 +16,17 @@
1816

1917
// Создает и возвращает новый экземпляр конструктора параметров
2018
//
21-
// Параметры:
22-
// НовоеНаименованиеПараметров - Строка - наименование конструктора параметров
23-
//
2419
// Возвращаемое значение:
2520
// Объект.КонструкторПараметров - ссылка на новый элемент класса <КонструкторПараметров>
2621
//
27-
Функция НовыеПараметры(Знач НовоеНаименованиеПараметров) Экспорт
22+
Функция НовыеПараметры() Экспорт
2823

29-
НовыйЭлемент = Новый КонструкторПараметров(ИндексПараметров, НовоеНаименованиеПараметров);
24+
НовыйЭлемент = Новый КонструкторПараметров();
3025

3126
Возврат НовыйЭлемент;
3227

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

35-
// Возвращает текущее наименование параметров
36-
//
37-
// Возвращаемое значение:
38-
// Строка - текущее наименование параметров
39-
//
40-
Функция ПолучитьНаименованиеПараметров() Экспорт
41-
42-
Возврат НаименованиеПараметров;
43-
44-
КонецФункции
4530

4631
// (Заготовка) Устанавливает дополнительное наименование узла параметров
4732
//
@@ -58,24 +43,6 @@
5843

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

61-
// Устанавливает новое наименование параметров
62-
//
63-
// Параметры:
64-
// НовоеНаименованиеПараметров - Строка - новое наименование текущего класса параметров
65-
//
66-
// Возвращаемое значение:
67-
// Объект.КонструкторПараметров - ссылка на текущий элемент класса <КонструкторПараметров>
68-
//
69-
Функция Наименование(НовоеНаименованиеПараметров) Экспорт
70-
71-
НаименованиеПараметров = НовоеНаименованиеПараметров;
72-
73-
ИндексПараметров.Вставить(НаименованиеПараметров, ЭтотОбъект);
74-
75-
Возврат ЭтотОбъект;
76-
77-
КонецФункции
78-
7946
// Выполняет заполнение описания параметров из произвольного объекта
8047
//
8148
// Параметры:
@@ -86,21 +53,13 @@
8653
//
8754
Функция ИзКласса(КлассОбъект) Экспорт
8855

89-
НовоеНаименованиеПараметров = Строка(ТипЗнч(КлассОбъект));
90-
9156
РефлекторОбъекта = Новый РефлекторОбъекта(КлассОбъект);
9257
РезультатПроверки = РефлекторОбъекта.РеализуетИнтерфейс(ИнтерфейсКонструктора);
9358

9459
Если Не РезультатПроверки Тогда
9560
ВызватьИсключение СтрШаблон("Класс <%1> не реализовывает интерфейс <%2>", КлассОбъект, ИнтерфейсКонструктора);
9661
КонецЕсли;
9762

98-
Если РефлекторОбъекта.ЕстьФункция("ПолучитьНаименованиеПараметров") Тогда
99-
НовоеНаименованиеПараметров = КлассОбъект.ПолучитьНаименованиеПараметров();
100-
КонецЕсли;
101-
102-
Наименование(НовоеНаименованиеПараметров);
103-
10463
КлассОбъект.ОписаниеПараметров(ЭтотОбъект);
10564

10665
Возврат ЭтотОбъект;
@@ -109,16 +68,13 @@
10968

11069
// Копирует текущий конструктор параметров
11170
//
112-
// Параметры:
113-
// НовоеНаименованиеПараметров - Строка - наименование конструктора в индексе параметров
114-
//
11571
// Возвращаемое значение:
11672
// Объект.КонструкторПараметров - ссылка на текущий элемент класса <КонструкторПараметров>
11773
//
118-
Функция Скопировать(Знач НовоеНаименованиеПараметров = Неопределено) Экспорт
74+
Функция Скопировать() Экспорт
11975

120-
Лог.Отладка("Выполняю копирование элемента <%1> -> <%2>", НаименованиеПараметров, НовоеНаименованиеПараметров);
121-
НовыйЭлемент = НовыеПараметры(НовоеНаименованиеПараметров);
76+
Лог.Отладка("Выполняю копирование элемента конструтор парамеров");
77+
НовыйЭлемент = НовыеПараметры();
12278

12379
Если МожетСодержатьПроизвольныеПоля Тогда
12480
НовыйЭлемент.ПроизвольныеПоля();
@@ -247,15 +203,19 @@
247203

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

250-
ОбъектПоля = ОбъектПоля.Конструктор();
206+
ОбъектПоля = ОбъектПоля.Конструктор().Скопировать();
251207

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

254210
ОбъектПоля = ПолучитьПолеПараметров(ОбъектПоля);
255211

212+
Иначе
213+
214+
ОбъектПоля = ОбъектПоля.Скопировать();
215+
256216
КонецЕсли;
257217

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

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

@@ -420,8 +380,6 @@
420380

421381
КонструкторИспользован = Истина;
422382

423-
Лог.Отладка("Читаю настройки <%1>", НаименованиеПараметров);
424-
425383
ПрочитатьИзСоответствия(ВходящиеСоответствие);
426384

427385
ПоказатьНастройкиВРежимеОтладки(Настройки);
@@ -478,11 +436,17 @@
478436

479437
ОписаниеПоля = КлассПоля.ОписаниеПоля();
480438

439+
Если ТипЗнч(ОписаниеПоля.ОбъектЭлемента) = Тип("КонструкторПараметров") Тогда
440+
ОбъектЭлемента = ОписаниеПоля.ОбъектЭлемента.Скопировать();
441+
Иначе
442+
ОбъектЭлемента = ОписаниеПоля.ОбъектЭлемента;
443+
КонецЕсли;
444+
481445
НовыйЭлемент.Поле(ОписаниеПоля.Имя,
482446
ОписаниеПоля.Тип,
483447
ОписаниеПоля.ЗначениеПоУмолчанию,
484448
ОписаниеПоля.ТипЭлемента,
485-
ОписаниеПоля.ОбъектЭлемента
449+
ОбъектЭлемента
486450
);
487451

488452
КонецЦикла;
@@ -509,26 +473,14 @@
509473
ВызватьИсключение СтрШаблон("Класс <%1> не реализовывает интерфейс <%2>", КлассОбъект, ИнтерфейсКонструктора);
510474
КонецЕсли;
511475

512-
Если РефлекторОбъекта.ЕстьФункция("ПолучитьНаименованиеПараметров") Тогда
513-
ИмяПараметров = КлассОбъект.ПолучитьНаименованиеПараметров();
514-
КонецЕсли;
515-
516-
Если ПараметрЕстьВИндексе(ИмяПараметров) Тогда
517-
Возврат ИндексПараметров[ИмяПараметров];
518-
КонецЕсли;
519-
520-
КонструкторПараметровКласса = НовыеПараметры(ИмяПараметров);
476+
КонструкторПараметровКласса = НовыеПараметры();
521477

522478
КлассОбъект.ОписаниеПараметров(КонструкторПараметровКласса);
523479

524480
Возврат КонструкторПараметровКласса;
525481

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

528-
Функция ПараметрЕстьВИндексе(Знач ИмяПараметров)
529-
Возврат НЕ ИндексПараметров[ИмяПараметров] = Неопределено;
530-
КонецФункции
531-
532484
Функция ЗначениеВСоответствие(Значение)
533485

534486
ТипЗначения = ТипЗнч(Значение);
@@ -704,21 +656,11 @@
704656

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

707-
Процедура ПриСозданииОбъекта(ВходящийИндексПараметров, Знач НовоеНаименованиеПараметров)
659+
Процедура ПриСозданииОбъекта()
708660

709-
НаименованиеПараметров = НовоеНаименованиеПараметров;
710661
Настройки = Новый Соответствие;
711662
ИндексПолей = Новый Соответствие;
712663
ИндексСинонимовПолей = Новый Соответствие;
713-
ИндексПараметров = ВходящийИндексПараметров;
714-
715-
Если ИндексПараметров = Неопределено Тогда
716-
ИндексПараметров = Новый Соответствие;
717-
КонецЕсли;
718-
719-
Если ЗначениеЗаполнено(НаименованиеПараметров) Тогда
720-
ИндексПараметров.Вставить(НаименованиеПараметров, ЭтотОбъект);
721-
КонецЕсли;
722664

723665
КонструкторИспользован = Ложь;
724666
МожетСодержатьПроизвольныеПоля = Ложь;

src/Классы/МенеджерПараметров.os

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -252,16 +252,15 @@
252252
// Создает и возвращает новый конструктор параметров
253253
//
254254
// Параметры:
255-
// ИмяКонструктора - Строка - наименование конструктора параметров
256255
// КлассОбъект - Объект - Класс объект реализующий интерфейс конструктора параметров
257256
//
258257
// Возвращаемое значение:
259258
// Объект.КонструкторПараметров - ссылка на новый элемент класса <КонструкторПараметров>
260259
//
261-
Функция НовыйКонструкторПараметров(ИмяКонструктора, КлассОбъект = Неопределено) Экспорт
260+
Функция НовыйКонструкторПараметров(КлассОбъект = Неопределено) Экспорт
262261

263262
ВнутреннийКонструкторПараметров = КонструкторПараметров();
264-
КонструкторПараметров = ВнутреннийКонструкторПараметров.НовыеПараметры(ИмяКонструктора);
263+
КонструкторПараметров = ВнутреннийКонструкторПараметров.НовыеПараметры();
265264

266265
Если ЗначениеЗаполнено(КлассОбъект) Тогда
267266

@@ -279,9 +278,7 @@
279278

280279
Функция ПолучитьКонструкторПараметров()
281280

282-
ИндексПараметровКонструктора = Новый Соответствие;
283-
284-
Конструктор = Новый КонструкторПараметров(ИндексПараметровКонструктора, "ОсновнаяНастройка");
281+
Конструктор = Новый КонструкторПараметров();
285282

286283
Возврат Конструктор;
287284

tests/fixtures/test-config.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
owner:
2+
contact:
3+
email: mail.ru
4+
tel: 77777777
5+
6+
admin:
7+
contact:
8+
email: admin.ru
9+
10+
person:
11+
address: home
12+

tests/fixtures/ТестовыйКласс.os

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,21 @@
1010

1111
Процедура ОписаниеПараметров(Знач Конструктор) Экспорт
1212

13-
ПараметрСоответствиеСтруктуры = Конструктор.НовыеПараметры("ПараметрСоответствиеСтруктуры")
13+
ПараметрСоответствиеСтруктуры = Конструктор.НовыеПараметры()
1414
.ПолеСтрока("КлючВнутри1")
1515
.ПолеСтрока("КлючВнутри2")
1616
;
1717

18-
ПараметрСтруктураВнутри = Конструктор.НовыеПараметры("ПараметрСоответствиеСтруктуры")
18+
ПараметрСтруктураВнутри = Конструктор.НовыеПараметры()
1919
.ПолеСтрока("Ключ1")
2020
.ПолеСтрока("Ключ2")
2121
;
22-
ПараметрСоответствие = Конструктор.НовыеПараметры("ПараметрСоответствие")
22+
ПараметрСоответствие = Конструктор.НовыеПараметры()
2323
.ПолеСтрока("Ключ1")
2424
.ПолеСтрока("Ключ2")
2525
;
2626

27-
ПараметрСтруктура = Конструктор.НовыеПараметры("ВложеннаяСтруктура")
27+
ПараметрСтруктура = Конструктор.НовыеПараметры()
2828
.ПолеСтрока("Строка")
2929
.ПолеДата("Дата")
3030
.ПолеЧисло("Число")

0 commit comments

Comments
 (0)