From 9e44bdfbf3bcf73c120d4140ccea8b29fb995474 Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Sat, 15 Sep 2018 11:24:18 +0300 Subject: [PATCH] =?UTF-8?q?=D1=83=D1=81=D0=BA=D0=BE=D1=80=D0=B8=D0=BB=20?= =?UTF-8?q?=D1=87=D1=82=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=84=D0=B8=D1=87=20?= =?UTF-8?q?=D1=80=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE=D1=80=D0=B8=D0=BD?= =?UTF-8?q?=D0=B3=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B8=D0=BB=20=D0=BF=D1=83?= =?UTF-8?q?=D1=81=D1=82=D1=8B=D0=B5=20=D1=81=D1=82=D1=80=D0=BE=D0=BA=D0=B8?= =?UTF-8?q?=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20TODO=20=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B1=D0=BB=D0=B5=D0=BC=D0=BD=D1=8B?= =?UTF-8?q?=D0=B5=20=D1=83=D1=87=D0=B0=D1=81=D1=82=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vbFeatureReader/Ext/ObjectModule.bsl | 100 ++++++++---------- 1 file changed, 46 insertions(+), 54 deletions(-) diff --git a/lib/featurereader/vbFeatureReader/vbFeatureReader/Ext/ObjectModule.bsl b/lib/featurereader/vbFeatureReader/vbFeatureReader/Ext/ObjectModule.bsl index 89959aa01..6af0fe5b4 100644 --- a/lib/featurereader/vbFeatureReader/vbFeatureReader/Ext/ObjectModule.bsl +++ b/lib/featurereader/vbFeatureReader/vbFeatureReader/Ext/ObjectModule.bsl @@ -1301,7 +1301,7 @@ ДвДанныеФичи = СтрТаблицаУжеСуществующихСценариев.ДвоичныеДанные; - ИмяВременнойФичи = ПолучитьИмяВременногоФайла("feature"); + ИмяВременнойФичи = ПолучитьИмяВременногоФайла("feature");//TODO подумать об ускорении через Потоки или другой алгоритм ДвДанныеФичи.Записать(ИмяВременнойФичи); @@ -1338,11 +1338,8 @@ МассивСценариевЗащитаОтЗацикливанияКеш.Удалить(МассивСценариевЗащитаОтЗацикливанияКеш.Количество()-1); - - СкопироватьСтрокиСценарияВУказаннуюСтроку(СтрСтрокиШагов,ПромДерево,НРег(НовыйStepDefinition),СтрТаблицаУжеСуществующихСценариев.ИмяФайла); - КонецЕсли; КонецЕсли; @@ -1353,7 +1350,6 @@ БылаОшибка = Ложь; - Если ЕстьЗаменаТаблицыПримеров Тогда ТаблицаСтрокПримеров = ЗаменитьТаблицуПримеровНаПереданнуюТаблицу(ПередаваемыеТаблицы[ПередаваемыеТаблицы.Количество()-1]); КонецЕсли; @@ -1939,7 +1935,7 @@ Возврат Тзн; КонецФункции -Функция ФичаИмеетКорректныеОтступыВНачалеСтрок(Тзн,ИмяФайла,ИмяФайлаОригинальное) +Функция ПроверитьЧтоФичаИмеетКорректныеОтступыВНачалеСтрок(Тзн, ИмяФайлаОригинальное) Статус = Истина; ВыводилИмяФичи = Ложь; @@ -2034,17 +2030,16 @@ Тзн.Колонки.Добавить("НельзяСоздаватьОбласть"); Тзн.Колонки.Добавить("КлючевоеСлово"); - Текст = Новый ЧтениеТекста; - Текст.Открыть(ИмяФайла,"UTF-8"); + //TODO подумать об ускорении через Потоки или другой алгоритм вместо передачи и чтения временного файла + МассивСтрокФайла = ЗагрузитьФайлВМассив(ИмяФайла); НомСтр = 0; - Пока Истина Цикл - Стр = Текст.ПрочитатьСтроку(); - Если Стр = Неопределено Тогда - Прервать; - КонецЕсли; + Для каждого Стр Из МассивСтрокФайла Цикл - Если Лев(СокрЛП(Стр),1) = "#" Тогда + СтрокаБезЛевыхПробелов = СокрЛ(Стр); + СтрокаБезПробелов = СокрП(СтрокаБезЛевыхПробелов); + + Если Лев(СтрокаБезЛевыхПробелов, 1) = "#" Тогда ПозицияПоиска = Найти(Стр, ТэгУказанияЯзыка); Если ПозицияПоиска > 0 Тогда СтрокаЯзыка = СокрЛП(Сред(Стр, ПозицияПоиска+СтрДлина(ТэгУказанияЯзыка))); @@ -2054,8 +2049,7 @@ КонецЕсли; КонецЕсли; - - Если НРег(СокрЛП(Стр)) = "@tree" Тогда + Если НРег(СтрокаБезПробелов) = "@tree" Тогда НадоСтроитьДерево = Истина; КонецЕсли; @@ -2066,28 +2060,13 @@ СтрТзн.НомСтр = НомСтр; КонецЦикла; - Текст.Закрыть(); - - - ПредыдущийОтступ = 0; Если НадоСтроитьДерево Тогда - Текст = Новый ЧтениеТекста; - Текст.Открыть(ИмяФайла,"UTF-8"); - Ном = -1; - Пока Истина Цикл - Ном = Ном + 1; - - Стр = Текст.ПрочитатьСтроку(); - Если Стр = Неопределено Тогда - Прервать; - КонецЕсли; - - + Для Ном = 0 По Тзн.Количество() - 1 Цикл СтрТзн = Тзн[Ном]; - СтрТзн.ЗначениеОтступа = ВычислитьЗначениеОтступа(СтрТзн.Стр,ПредыдущийОтступ); + СтрТзн.ЗначениеОтступа = ВычислитьЗначениеОтступа(СтрТзн.Стр, ПредыдущийОтступ); СтрТзн.ПредыдущийОтступ = ПредыдущийОтступ; СтрТзн.СледующийОступ = СтрТзн.ЗначениеОтступа; @@ -2095,21 +2074,16 @@ Тзн[Ном-1].СледующийОступ = СтрТзн.ЗначениеОтступа; КонецЕсли; - ПредыдущийОтступ = СтрТзн.ЗначениеОтступа; КонецЦикла; - Текст.Закрыть(); - - - ЕстьПримеры = Ложь; КолСтрок = Тзн.Количество()-1; - ОбойтиТаблицуОтступов(Тзн,КолСтрок,ЕстьПримеры); + ОбойтиТаблицуОтступов(Тзн, КолСтрок, ЕстьПримеры); Если ЕстьПримеры Тогда СтрокаСШагом = Неопределено; - Для Ккк = 0 По КолСтрок-1 Цикл + Для Ккк = 0 По КолСтрок-1 Цикл //TODO исправить ошибку чтения последнего примера - д.б. По КолСтрок ТекСтрокаТзн = Тзн[Ккк]; Если ТекСтрокаТзн.Примеры = Истина Тогда @@ -2122,21 +2096,14 @@ Если Не ЭтоНеСтрокаСШагом_ОпределимПоПервомуСимволу(ТекСтрокаТзн.Стр) Тогда СтрокаСШагом = ТекСтрокаТзн; КонецЕсли; - - + КонецЦикла; - //ОбойтиТаблицуОтступов(Тзн,КолСтрок,ЕстьПримеры); КонецЕсли; - Если Не ФичаИмеетКорректныеОтступыВНачалеСтрок(Тзн,ИмяФайла,ИмяФайлаОригинальное) Тогда - //НадоСтроитьДерево = Ложь; - КонецЕсли; + ПроверитьЧтоФичаИмеетКорректныеОтступыВНачалеСтрок(Тзн, ИмяФайлаОригинальное); КонецЕсли; - - - Возврат Тзн; КонецФункции @@ -2149,8 +2116,8 @@ Возврат Ложь; КонецФункции -Процедура ОбойтиТаблицуОтступов(Тзн,КолСтрок,ЕстьПримеры) - Для Ккк = 0 По КолСтрок-1 Цикл +Процедура ОбойтиТаблицуОтступов(Тзн, КолСтрок, ЕстьПримеры) + Для Ккк = 0 По КолСтрок-1 Цикл //TODO ?? исправить ошибку чтения последней строки - д.б. По КолСтрок ТекСтрокаТзн = Тзн[КолСтрок - Ккк]; ПредСтрокаТзн = Тзн[КолСтрок - Ккк - 1]; @@ -2494,7 +2461,7 @@ Если НРег(УниверсальноеИмяФайла) = НРег(ИмяФайла) Тогда ФайлВременнаяФича = ПолучитьИмяВременногоФайла("feature"); - Элем.ДвоичныеДанные.Записать(ФайлВременнаяФича); + Элем.ДвоичныеДанные.Записать(ФайлВременнаяФича);//TODO подумать об ускорении через Потоки или другой алгоритм КонецЕсли; КонецЦикла; КонецЕсли; @@ -3754,7 +3721,7 @@ Возврат Текст.Прочитать(); КонецФункции -Функция ПолучитьСледующуюСтрокуМодуля(СтрТзн,Тзн) +Функция ПолучитьСледующуюСтрокуМодуля(СтрТзн, Тзн) Индекс = Тзн.Индекс(СтрТзн); Если Индекс = Тзн.Количество()-1 Тогда Возврат Неопределено; @@ -4685,7 +4652,7 @@ //очистим содержимое функции КолСтрок = ТелоМодуля.Количество(); - Для Ккк = 0 По КолСтрок-1 Цикл + Для Ккк = 0 По КолСтрок-1 Цикл //TODO ?? исправить ошибку чтения последней строки - д.б. По КолСтрок ИдСтроки = КолСтрок - Ккк - 1; СтрокаМодуля = ТелоМодуля[ИдСтроки]; @@ -5974,6 +5941,31 @@ КонецФункции +// TODO исправить дублирование с bddRunner +Функция ЗагрузитьФайлВМассив(Знач ИмяФайла, РезМассив = Неопределено) + Если РезМассив <> Неопределено Тогда + Массив = РезМассив; + Иначе + Массив = Новый Массив; + КонецЕсли; + + Текст = Новый ЧтениеТекста; + Текст.Открыть(ИмяФайла, "UTF-8"); + + Пока Истина Цикл + Стр = Текст.ПрочитатьСтроку(); + Если Стр = Неопределено Тогда + Прервать; + КонецЕсли; + + Массив.Добавить(Стр); + КонецЦикла; + + Текст.Закрыть(); + + Возврат Массив; +КонецФункции + ЭтоУФ = Ложь; СоответствиеТаблицПереводов = Новый Соответствие;