Skip to content

Commit

Permalink
Finish 0.9.0
Browse files Browse the repository at this point in the history
  • Loading branch information
khorevaa committed Nov 21, 2019
2 parents dade38f + 4daa753 commit d9af0df
Show file tree
Hide file tree
Showing 5 changed files with 169 additions and 51 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
ХранилищеКонфигурации.СохранитьВерсиюКонфигурацииВФайл(НомерВерсии, ИмяФайлаКофигурации);
ТаблицаВерсий = ХранилищеКонфигурации.ПолучитьТаблицаВерсий();
ТаблицаВерсий = ХранилищеКонфигурации.ПолучитьТаблицуВерсий();
МассивАвторов = ХранилищеКонфигурации.ПолучитьАвторов();
```
Expand Down
4 changes: 2 additions & 2 deletions packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
// Полную документацию см. на hub.oscript.io/packaging

Описание.Имя("v8storage")
.Версия("0.8.0")
.Версия("0.9.0")
.ВерсияСреды("1.0.21")
.ЗависитОт("asserts")
.ЗависитОт("fluent", "0.3.1")
.ЗависитОт("datetime", "0.1.0")
.ЗависитОт("v8runner", "1.1.3")
.ЗависитОт("v8runner", "1.4.0")
.ЗависитОт("logos", "1.2.0")
.ЗависитОт("fs")
.ЗависитОт("tempfiles")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,27 @@

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

Возврат ПрочитатьТекстСкобкоФайла(ТекстФайла);
Возврат ПрочитатьТекстСкобкоФайлаРегулярками(ТекстФайла);

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


Функция ПрочитатьТекстСкобкоФайлаРегулярками(Знач Текст)

Текст = СтрЗаменить(Текст, """""", "'");

РегВыражение = Новый РегулярноеВыражение("[\{]""#"",""([^""]+)[""][\}]");
МассивСовпадений = РегВыражение.НайтиСовпадения(Текст);

Массив = Новый Массив();

Для каждого Совпадение Из МассивСовпадений Цикл
Массив.Добавить(Совпадение.Группы[1].Значение);
КонецЦикла;

ТаблицаВерсий = СформироватьТаблицуВерсий(Массив);

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

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

Expand Down Expand Up @@ -58,7 +78,7 @@
Продолжить;
КонецЕсли;

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

КонецЦикла;

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


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

Expand All @@ -82,7 +101,11 @@

КонецЦикла;

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

ИначеЕсли СтрНачинаетсяС(Элемент, """#""") Тогда

Возврат Неопределено;


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

Иначе

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

КонецЕсли;

Expand All @@ -102,8 +125,12 @@
ТаблицаВерсий = Новый ТаблицаЗначений;
ТаблицаВерсий.Колонки.Добавить("Номер");
ТаблицаВерсий.Колонки.Добавить("Дата");
ТаблицаВерсий.Колонки.Добавить("Время");
ТаблицаВерсий.Колонки.Добавить("Автор");
ТаблицаВерсий.Колонки.Добавить("Комментарий");
ТаблицаВерсий.Колонки.Добавить("Изменены");
ТаблицаВерсий.Колонки.Добавить("Добавлены");
ТаблицаВерсий.Колонки.Добавить("Удалены");

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

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

ТаблицуВерсий = ПолучитьТаблицуВерсий();
Версия = Неопределено;

СтрокаТаблицы = Неопределено;
ИмяПоля = "";
Для ИИ = 0 По Массив.ВГраница() Цикл

Стр = Массив[ИИ];

Если НЕ ТипЗнч(Стр) = Тип("Массив") Тогда
Продолжить;
КонецЕсли;

Если Стр.Количество() > 2 Тогда
Продолжить;
КонецЕсли;

ТекстЭлемента = УбратьКавычки(Стр[1]);
ТекущаяСтрока = Массив[ИИ];

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

Версия = ТаблицуВерсий.Добавить();

ИИ = ИИ + 1;
СтрокаТаблицы = ТаблицуВерсий.Добавить();
СтрокаТаблицы.Изменены = Новый Массив;
СтрокаТаблицы.Добавлены = Новый Массив;
СтрокаТаблицы.Удалены = Новый Массив;
ИмяПоля = "Номер";

Версия.Номер = УбратьКавычки(Массив[ИИ][1]);
ИначеЕсли СтрНачинаетсяС(ТекущаяСтрока, "Пользователь:") Тогда
ИмяПоля = "Автор";
ИначеЕсли СтрНачинаетсяС(ТекущаяСтрока, "Дата создания:") Тогда
ИмяПоля = "Дата";
ИначеЕсли СтрНачинаетсяС(ТекущаяСтрока, "Время создания:") Тогда
ИмяПоля = "Время";
ИначеЕсли СтрНачинаетсяС(ТекущаяСтрока, "Комментарий:") Тогда
ИмяПоля = "Комментарий";
ИначеЕсли СтрНачинаетсяС(ТекущаяСтрока, "Изменены:") Тогда
ИмяПоля = "Изменены";
ИначеЕсли СтрНачинаетсяС(ТекущаяСтрока, "Добавлены:") Тогда
ИмяПоля = "Добавлены";
ИначеЕсли СтрНачинаетсяС(ТекущаяСтрока, "Удалены:") Тогда
ИмяПоля = "Удалены";
Иначе

ИначеЕсли СтрНачинаетсяС(ТекстЭлемента, "Пользователь:") Тогда
ИИ = ИИ + 1;
Версия.Автор = УбратьКавычки(Массив[ИИ][1]);
Если НЕ СтрокаТаблицы = Неопределено Тогда

Если ИмяПоля = "Изменены"
Или ИмяПоля = "Добавлены"
ИЛИ ИмяПоля = "Удалены" Тогда

СтрокаТаблицы[ИмяПоля].Добавить(ТекущаяСтрока);



ИначеЕсли ИмяПоля = "Комментарий" Тогда

СтрокаТаблицы[ИмяПоля] = СократитьКавычки(ТекущаяСтрока);

Иначе

СтрокаТаблицы[ИмяПоля] = ТекущаяСтрока;

Конецесли;


КонецЕсли;

ИначеЕсли СтрНачинаетсяС(ТекстЭлемента, "Дата создания:") Тогда
ИИ = ИИ + 1;
Версия.Дата = УбратьКавычки(Массив[ИИ][1]);

ИначеЕсли СтрНачинаетсяС(ТекстЭлемента, "Время создания:") Тогда
ИИ = ИИ + 1;
Версия.Дата = СтрШаблон("%1 %2", Версия.Дата, УбратьКавычки(Массив[ИИ][1]));

ИначеЕсли СтрНачинаетсяС(ТекстЭлемента, "Комментарий:") Тогда
ИИ = ИИ + 1;
Версия.Комментарий = УбратьКавычки(Массив[ИИ][1]);
КонецЕсли;


КонецЦикла;

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

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

КонецЦикла;

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

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

Функция ВремяВСекундах(Время)

МассивЧисел = СтрРазделить(Время, ":");
Часы = МассивЧисел[0];
Минуты = МассивЧисел[1];
Секунды = МассивЧисел[2];

Возврат Часы * 3600 + Минуты*60 + Секунды;

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

Функция УбратьКавычки(Знач СтрокаДанных)

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

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

Функция СократитьКавычки(Знач СтрокаДанных)

Возврат СтрЗаменить(СтрокаДанных, """""", """");

КонецФункции
16 changes: 8 additions & 8 deletions tasks/test.os
Original file line number Diff line number Diff line change
Expand Up @@ -59,14 +59,14 @@

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

// Попытка
// ТестыПрошли = ПрогнатьТесты();

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

Исключение
ТестыПрошли = Ложь;
Сообщить(СтрШаблон("Тесты через 1testrunner выполнены неудачно
|%1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
КонецПопытки;

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

Expand Down
61 changes: 61 additions & 0 deletions tests/ПарсерОтчетаХранилища_test.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
#использовать "../src/Классы/internal/ripper"
#Использовать asserts
#Использовать logos

Перем юТест;
Перем Лог;

Функция ПолучитьСписокТестов(Знач Тестирование) Экспорт

юТест = Тестирование;

ИменаТестов = Новый Массив;

ИменаТестов.Добавить("ТестДолжен_ПроверитьЧтениеОтчетаХранилища");

Возврат ИменаТестов;

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

Процедура ТестДолжен_ПроверитьЧтениеОтчетаХранилища() Экспорт

ПутьКФайлуОтчета = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", "report.mxl.txt");
// ПутьКФайлуОтчета = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", "1.mxl.txt");

ПарсерОтчетаХранилища = Новый ПарсерОтчетаХранилища;
ТаблицаВерсийХранилища = ПарсерОтчетаХранилища.ПрочитатьФайлОтчетаХранилища(ПутьКФайлуОтчета);

Для каждого СтрокаВерсии Из ТаблицаВерсийХранилища Цикл

СтрокаШаблонаЛога = "Добавили строку в таблицу версий:
|Номер версии: %1
|Автор: %2
|ГУИД_Автора: %3
|Дата: %4
|Комментарий: %5
|";
Лог.Отладка(СтрокаШаблонаЛога, СтрокаВерсии.Номер,
СтрокаВерсии.Автор,
,
СтрокаВерсии.Дата,
СтрокаВерсии.Комментарий);

КонецЦикла;


Ожидаем.Что(ТаблицаВерсийХранилища.Количество(), "Количество версий должно быть равны").Равно(4);
Ожидаем.Что(ТаблицаВерсийХранилища[0].Номер, "Номер версии должен быть равен").Равно(2);
Ожидаем.Что(ТаблицаВерсийХранилища[0].Автор, "Автор версии должен быть равен").Равно("Администратор");
Ожидаем.Что(ТаблицаВерсийХранилища[0].Комментарий, "Комментарий версии должен быть равен").Содержит("Изменения помещены
|Еще строка
|И еще строка
|и Еще строка");
Ожидаем.Что(ТаблицаВерсийХранилища[0].Дата, "Дата версии должен быть равен").Равно(Дата("20170526135608"));
// Утверждения.ПроверитьРавенство(ТаблицаВерсийХранилища.Количество(), 4, "Количество версий должно быть 4");
// Утверждения.ПроверитьИстину(СверитьМассивыТокенов(СпекМассив, КлючЗначение.Значение),"Токены не равны " + КлючЗначение.Ключ);


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

Лог = Логирование.ПолучитьЛог("oscript.lib.v8storage");
// Лог.УстановитьУровень(УровниЛога.Отладка);

0 comments on commit d9af0df

Please sign in to comment.