Skip to content

Commit d9af0df

Browse files
committed
Finish 0.9.0
2 parents dade38f + 4daa753 commit d9af0df

File tree

5 files changed

+169
-51
lines changed

5 files changed

+169
-51
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
2020
ХранилищеКонфигурации.СохранитьВерсиюКонфигурацииВФайл(НомерВерсии, ИмяФайлаКофигурации);
2121
22-
ТаблицаВерсий = ХранилищеКонфигурации.ПолучитьТаблицаВерсий();
22+
ТаблицаВерсий = ХранилищеКонфигурации.ПолучитьТаблицуВерсий();
2323
МассивАвторов = ХранилищеКонфигурации.ПолучитьАвторов();
2424
2525
```

packagedef

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
// Полную документацию см. на hub.oscript.io/packaging
44

55
Описание.Имя("v8storage")
6-
.Версия("0.8.0")
6+
.Версия("0.9.0")
77
.ВерсияСреды("1.0.21")
88
.ЗависитОт("asserts")
99
.ЗависитОт("fluent", "0.3.1")
1010
.ЗависитОт("datetime", "0.1.0")
11-
.ЗависитОт("v8runner", "1.1.3")
11+
.ЗависитОт("v8runner", "1.4.0")
1212
.ЗависитОт("logos", "1.2.0")
1313
.ЗависитОт("fs")
1414
.ЗависитОт("tempfiles")

src/Классы/internal/ripper/Классы/ПарсерОтчетаХранилища.os

+97-40
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,27 @@
1616

1717
ТекстФайла = ПрочитатьФайл(ПутьКФайлу);
1818

19-
Возврат ПрочитатьТекстСкобкоФайла(ТекстФайла);
19+
Возврат ПрочитатьТекстСкобкоФайлаРегулярками(ТекстФайла);
20+
21+
КонецФункции
22+
23+
24+
Функция ПрочитатьТекстСкобкоФайлаРегулярками(Знач Текст)
25+
26+
Текст = СтрЗаменить(Текст, """""", "'");
27+
28+
РегВыражение = Новый РегулярноеВыражение("[\{]""#"",""([^""]+)[""][\}]");
29+
МассивСовпадений = РегВыражение.НайтиСовпадения(Текст);
30+
31+
Массив = Новый Массив();
32+
33+
Для каждого Совпадение Из МассивСовпадений Цикл
34+
Массив.Добавить(Совпадение.Группы[1].Значение);
35+
КонецЦикла;
36+
37+
ТаблицаВерсий = СформироватьТаблицуВерсий(Массив);
38+
39+
Возврат ТаблицаВерсий;
2040

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

@@ -58,7 +78,7 @@
5878
Продолжить;
5979
КонецЕсли;
6080

61-
НовыйМассив.Добавить(РекурсивныйОбход(Стр));
81+
НовыйМассив.Добавить(ЭначениеСтр);
6282

6383
КонецЦикла;
6484

@@ -69,7 +89,6 @@
6989
Если НовыйМассив.Количество() = 1 Тогда
7090
Возврат НовыйМассив[0];
7191
КонецЕсли;
72-
7392

7493
Возврат НовыйМассив;
7594

@@ -82,7 +101,11 @@
82101

83102
КонецЦикла;
84103

85-
Возврат Элемент;
104+
Возврат УбратьКавычки(Элемент);
105+
106+
ИначеЕсли СтрНачинаетсяС(Элемент, """#""") Тогда
107+
108+
Возврат Неопределено;
86109

87110

88111
ИначеЕсли Не СтрНачинаетсяС(Элемент, """") Тогда
@@ -91,7 +114,7 @@
91114

92115
Иначе
93116

94-
Возврат Элемент;
117+
Возврат УбратьКавычки(Элемент);
95118

96119
КонецЕсли;
97120

@@ -102,8 +125,12 @@
102125
ТаблицаВерсий = Новый ТаблицаЗначений;
103126
ТаблицаВерсий.Колонки.Добавить("Номер");
104127
ТаблицаВерсий.Колонки.Добавить("Дата");
128+
ТаблицаВерсий.Колонки.Добавить("Время");
105129
ТаблицаВерсий.Колонки.Добавить("Автор");
106130
ТаблицаВерсий.Колонки.Добавить("Комментарий");
131+
ТаблицаВерсий.Колонки.Добавить("Изменены");
132+
ТаблицаВерсий.Колонки.Добавить("Добавлены");
133+
ТаблицаВерсий.Колонки.Добавить("Удалены");
107134

108135
Возврат ТаблицаВерсий;
109136

@@ -112,61 +139,86 @@
112139
Функция СформироватьТаблицуВерсий(Массив)
113140

114141
ТаблицуВерсий = ПолучитьТаблицуВерсий();
115-
Версия = Неопределено;
116-
142+
СтрокаТаблицы = Неопределено;
143+
ИмяПоля = "";
117144
Для ИИ = 0 По Массив.ВГраница() Цикл
118145

119-
Стр = Массив[ИИ];
120-
121-
Если НЕ ТипЗнч(Стр) = Тип("Массив") Тогда
122-
Продолжить;
123-
КонецЕсли;
124-
125-
Если Стр.Количество() > 2 Тогда
126-
Продолжить;
127-
КонецЕсли;
128-
129-
ТекстЭлемента = УбратьКавычки(Стр[1]);
146+
ТекущаяСтрока = Массив[ИИ];
130147

131-
Если СтрНачинаетсяС(ТекстЭлемента, "Версия:") Тогда
148+
Если СтрНачинаетсяС(ТекущаяСтрока, "Версия:") Тогда
132149

133-
Версия = ТаблицуВерсий.Добавить();
134-
135-
ИИ = ИИ + 1;
150+
СтрокаТаблицы = ТаблицуВерсий.Добавить();
151+
СтрокаТаблицы.Изменены = Новый Массив;
152+
СтрокаТаблицы.Добавлены = Новый Массив;
153+
СтрокаТаблицы.Удалены = Новый Массив;
154+
ИмяПоля = "Номер";
136155

137-
Версия.Номер = УбратьКавычки(Массив[ИИ][1]);
156+
ИначеЕсли СтрНачинаетсяС(ТекущаяСтрока, "Пользователь:") Тогда
157+
ИмяПоля = "Автор";
158+
ИначеЕсли СтрНачинаетсяС(ТекущаяСтрока, "Дата создания:") Тогда
159+
ИмяПоля = "Дата";
160+
ИначеЕсли СтрНачинаетсяС(ТекущаяСтрока, "Время создания:") Тогда
161+
ИмяПоля = "Время";
162+
ИначеЕсли СтрНачинаетсяС(ТекущаяСтрока, "Комментарий:") Тогда
163+
ИмяПоля = "Комментарий";
164+
ИначеЕсли СтрНачинаетсяС(ТекущаяСтрока, "Изменены:") Тогда
165+
ИмяПоля = "Изменены";
166+
ИначеЕсли СтрНачинаетсяС(ТекущаяСтрока, "Добавлены:") Тогда
167+
ИмяПоля = "Добавлены";
168+
ИначеЕсли СтрНачинаетсяС(ТекущаяСтрока, "Удалены:") Тогда
169+
ИмяПоля = "Удалены";
170+
Иначе
138171

139-
ИначеЕсли СтрНачинаетсяС(ТекстЭлемента, "Пользователь:") Тогда
140-
ИИ = ИИ + 1;
141-
Версия.Автор = УбратьКавычки(Массив[ИИ][1]);
172+
Если НЕ СтрокаТаблицы = Неопределено Тогда
173+
174+
Если ИмяПоля = "Изменены"
175+
Или ИмяПоля = "Добавлены"
176+
ИЛИ ИмяПоля = "Удалены" Тогда
177+
178+
СтрокаТаблицы[ИмяПоля].Добавить(ТекущаяСтрока);
179+
180+
181+
182+
ИначеЕсли ИмяПоля = "Комментарий" Тогда
183+
184+
СтрокаТаблицы[ИмяПоля] = СократитьКавычки(ТекущаяСтрока);
185+
186+
Иначе
187+
188+
СтрокаТаблицы[ИмяПоля] = ТекущаяСтрока;
189+
190+
Конецесли;
191+
192+
193+
КонецЕсли;
142194

143-
ИначеЕсли СтрНачинаетсяС(ТекстЭлемента, "Дата создания:") Тогда
144-
ИИ = ИИ + 1;
145-
Версия.Дата = УбратьКавычки(Массив[ИИ][1]);
146-
147-
ИначеЕсли СтрНачинаетсяС(ТекстЭлемента, "Время создания:") Тогда
148-
ИИ = ИИ + 1;
149-
Версия.Дата = СтрШаблон("%1 %2", Версия.Дата, УбратьКавычки(Массив[ИИ][1]));
150-
151-
ИначеЕсли СтрНачинаетсяС(ТекстЭлемента, "Комментарий:") Тогда
152-
ИИ = ИИ + 1;
153-
Версия.Комментарий = УбратьКавычки(Массив[ИИ][1]);
154195
КонецЕсли;
155-
156196

157197
КонецЦикла;
158198

159199
Для Каждого ОписаниеВерсии Из ТаблицуВерсий Цикл
160200

161-
ОписаниеВерсии.Номер = Число(ОписаниеВерсии.Номер);
162-
ОписаниеВерсии.Дата = РаботаСДатой.СтрокаВДату(ОписаниеВерсии.Дата, "dd.MM.yyyy HH:mm:ss");
201+
ОписаниеВерсии.Номер = Число(СтрЗаменить(ОписаниеВерсии.Номер, Символы.НПП, ""));
202+
ВремяВСекундах = ВремяВСекундах(ОписаниеВерсии.Время);
203+
ОписаниеВерсии.Дата = РаботаСДатой.СтрокаВДату(ОписаниеВерсии.Дата, "dd.MM.yyyy") + ВремяВСекундах;
163204

164205
КонецЦикла;
165206

166207
Возврат ТаблицуВерсий;
167208

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

211+
Функция ВремяВСекундах(Время)
212+
213+
МассивЧисел = СтрРазделить(Время, ":");
214+
Часы = МассивЧисел[0];
215+
Минуты = МассивЧисел[1];
216+
Секунды = МассивЧисел[2];
217+
218+
Возврат Часы * 3600 + Минуты*60 + Секунды;
219+
220+
КонецФункции
221+
170222
Функция УбратьКавычки(Знач СтрокаДанных)
171223

172224
Если СтрНачинаетсяС(СтрокаДанных, """") Тогда
@@ -185,3 +237,8 @@
185237

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

240+
Функция СократитьКавычки(Знач СтрокаДанных)
241+
242+
Возврат СтрЗаменить(СтрокаДанных, """""", """");
243+
244+
КонецФункции

tasks/test.os

+8-8
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,14 @@
5959

6060
ТестыПрошли = Истина;
6161

62-
// Попытка
63-
// ТестыПрошли = ПрогнатьТесты();
64-
65-
// Исключение
66-
// ТестыПрошли = Ложь;
67-
// Сообщить(СтрШаблон("Тесты через 1testrunner выполнены неудачно
68-
// |%1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
69-
// КонецПопытки;
62+
Попытка
63+
ТестыПрошли = ПрогнатьТесты();
64+
65+
Исключение
66+
ТестыПрошли = Ложь;
67+
Сообщить(СтрШаблон("Тесты через 1testrunner выполнены неудачно
68+
|%1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
69+
КонецПопытки;
7070

7171
ФичиПрошли = Истина;
7272

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#использовать "../src/Классы/internal/ripper"
2+
#Использовать asserts
3+
#Использовать logos
4+
5+
Перем юТест;
6+
Перем Лог;
7+
8+
Функция ПолучитьСписокТестов(Знач Тестирование) Экспорт
9+
10+
юТест = Тестирование;
11+
12+
ИменаТестов = Новый Массив;
13+
14+
ИменаТестов.Добавить("ТестДолжен_ПроверитьЧтениеОтчетаХранилища");
15+
16+
Возврат ИменаТестов;
17+
18+
КонецФункции
19+
20+
Процедура ТестДолжен_ПроверитьЧтениеОтчетаХранилища() Экспорт
21+
22+
ПутьКФайлуОтчета = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", "report.mxl.txt");
23+
// ПутьКФайлуОтчета = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", "1.mxl.txt");
24+
25+
ПарсерОтчетаХранилища = Новый ПарсерОтчетаХранилища;
26+
ТаблицаВерсийХранилища = ПарсерОтчетаХранилища.ПрочитатьФайлОтчетаХранилища(ПутьКФайлуОтчета);
27+
28+
Для каждого СтрокаВерсии Из ТаблицаВерсийХранилища Цикл
29+
30+
СтрокаШаблонаЛога = "Добавили строку в таблицу версий:
31+
|Номер версии: %1
32+
|Автор: %2
33+
|ГУИД_Автора: %3
34+
|Дата: %4
35+
|Комментарий: %5
36+
|";
37+
Лог.Отладка(СтрокаШаблонаЛога, СтрокаВерсии.Номер,
38+
СтрокаВерсии.Автор,
39+
,
40+
СтрокаВерсии.Дата,
41+
СтрокаВерсии.Комментарий);
42+
43+
КонецЦикла;
44+
45+
46+
Ожидаем.Что(ТаблицаВерсийХранилища.Количество(), "Количество версий должно быть равны").Равно(4);
47+
Ожидаем.Что(ТаблицаВерсийХранилища[0].Номер, "Номер версии должен быть равен").Равно(2);
48+
Ожидаем.Что(ТаблицаВерсийХранилища[0].Автор, "Автор версии должен быть равен").Равно("Администратор");
49+
Ожидаем.Что(ТаблицаВерсийХранилища[0].Комментарий, "Комментарий версии должен быть равен").Содержит("Изменения помещены
50+
|Еще строка
51+
|И еще строка
52+
|и Еще строка");
53+
Ожидаем.Что(ТаблицаВерсийХранилища[0].Дата, "Дата версии должен быть равен").Равно(Дата("20170526135608"));
54+
// Утверждения.ПроверитьРавенство(ТаблицаВерсийХранилища.Количество(), 4, "Количество версий должно быть 4");
55+
// Утверждения.ПроверитьИстину(СверитьМассивыТокенов(СпекМассив, КлючЗначение.Значение),"Токены не равны " + КлючЗначение.Ключ);
56+
57+
58+
КонецПроцедуры
59+
60+
Лог = Логирование.ПолучитьЛог("oscript.lib.v8storage");
61+
// Лог.УстановитьУровень(УровниЛога.Отладка);

0 commit comments

Comments
 (0)