Skip to content

Commit cddba1d

Browse files
authored
Merge pull request #24 from 1dimir/develop
Чуть более аккуратная работа с кавычками при разборе отчёта по хранилищу
2 parents f4c7017 + b653356 commit cddba1d

File tree

3 files changed

+20
-2
lines changed

3 files changed

+20
-2
lines changed

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,17 @@
2323

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

26-
Текст = СтрЗаменить(Текст, """""", "'");
26+
СпецСимвол = Символ(0);
27+
Текст = СтрЗаменить(Текст, """""", СпецСимвол);
2728

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

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

3334
Для каждого Совпадение Из МассивСовпадений Цикл
34-
Массив.Добавить(Совпадение.Группы[1].Значение);
35+
Значение = СтрЗаменить(Совпадение.Группы[1].Значение, СпецСимвол, """""");
36+
Массив.Добавить(Значение);
3537
КонецЦикла;
3638

3739
ТаблицаВерсий = СформироватьТаблицуВерсий(Массив);
3.94 KB
Binary file not shown.

tests/ПарсерОтчетаХранилища_test.os

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,27 @@
1212
ИменаТестов = Новый Массив;
1313

1414
ИменаТестов.Добавить("ТестДолжен_ПроверитьЧтениеОтчетаХранилища");
15+
ИменаТестов.Добавить("ТестДолжен_ПроверитьЧтениеОтчетаХранилищаКавычкиВКомментарии");
1516

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

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

21+
Процедура ТестДолжен_ПроверитьЧтениеОтчетаХранилищаКавычкиВКомментарии() Экспорт
22+
23+
ПутьКФайлуОтчета = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", "report.quoted.mxl.txt");
24+
ПарсерОтчетаХранилища = Новый ПарсерОтчетаХранилища;
25+
ТаблицаВерсийХранилища = ПарсерОтчетаХранилища.ПрочитатьФайлОтчетаХранилища(ПутьКФайлуОтчета);
26+
Ожидаем.Что(ТаблицаВерсийХранилища.Количество(), "Количество версий должно быть равны").Равно(2);
27+
Ожидаем.Что(ТаблицаВерсийХранилища[1].Комментарий).Равно(
28+
"Многострочный комментарий к версии хранилища, содержащий:
29+
|* ""двойные кавычки""
30+
|* 'одинарные кавычки'
31+
|* несколько кавычек подряд: """""" и '''");
32+
33+
34+
КонецПроцедуры // ТестДолжен_ПроверитьЧтениеОтчетаХранилищаКавычкиВКомментарии()
35+
2036
Процедура ТестДолжен_ПроверитьЧтениеОтчетаХранилища() Экспорт
2137

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

0 commit comments

Comments
 (0)