diff --git a/src/СценарииОбработки/ДобавлениеПробеловПередКлючевымиСловами.os b/src/СценарииОбработки/ДобавлениеПробеловПередКлючевымиСловами.os new file mode 100644 index 0000000..f15a64f --- /dev/null +++ b/src/СценарииОбработки/ДобавлениеПробеловПередКлючевымиСловами.os @@ -0,0 +1,94 @@ +/////////////////////////////////////////////////////////////////////////////// +// +// Служебный модуль с реализацией сценариев обработки файлов +// <ДобавлениеПробеловПередКлючевымиСловами> +// +/////////////////////////////////////////////////////////////////////////////// + +// ИмяСценария +// Возвращает имя сценария обработки файлов +// +// Возвращаемое значение: +// Строка - Имя текущего сценария обработки файлов +// +Функция ИмяСценария() Экспорт + + Возврат "ДобавлениеПробеловПередКлючевымиСловами"; + +КонецФункции // ИмяСценария() + +// ОбработатьФайл +// Выполняет обработку файла +// +// Параметры: +// АнализируемыйФайл - Файл - Файл из журнала git для анализа +// КаталогИсходныхФайлов - Строка - Каталог расположения исходных файлов относительно каталог репозитория +// ДополнительныеПараметры - Структура - Набор дополнительных параметров, которые можно использовать +// * Лог - Объект - Текущий лог +// * ИзмененныеКаталоги - Массив - Каталоги, которые необходимо добавить в индекс +// * КаталогРепозитория - Строка - Адрес каталога репозитория +// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образоавшиеся в результате работы сценария +// и которые необходимо дообработать +// +// Возвращаемое значение: +// Булево - Признак выполненной обработки файла +// +Функция ОбработатьФайл(АнализируемыйФайл, КаталогИсходныхФайлов, ДополнительныеПараметры) Экспорт + + Лог = ДополнительныеПараметры.Лог; + Если АнализируемыйФайл.Существует() И ЭтоФайлИсходников(АнализируемыйФайл) Тогда + + Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария()); + + Если ВставитьНужныеПробелы(АнализируемыйФайл.ПолноеИмя) Тогда + + ДополнительныеПараметры.ИзмененныеКаталоги.Добавить(АнализируемыйФайл.ПолноеИмя); + + КонецЕсли; + + Возврат Истина; + + КонецЕсли; + + Возврат ЛОЖЬ; + +КонецФункции // ОбработатьФайл() + +Функция ЭтоФайлИсходников(Файл) + + Если ПустаяСтрока(Файл.Расширение) Тогда + + Возврат Ложь; + + КонецЕсли; + + Возврат СтрСравнить(Файл.Расширение, ".bsl") = 0; + +КонецФункции + +Функция ВставитьНужныеПробелы(Знач ИмяФайла) + + Текст = Новый ЧтениеТекста(); + Текст.Открыть(ИмяФайла, "utf-8"); + СодержимоеФайла = Текст.Прочитать(); + Текст.Закрыть(); + + Регексп = Новый РегулярноеВыражение("(^[^\n\/]*\))(Экспорт)([\s]*?)([\/\/]+[^\n]*?)*?$"); + Регексп.ИгнорироватьРегистр = ИСТИНА; + Регексп.Многострочный = ИСТИНА; + ГруппыИндексов = Регексп.НайтиСовпадения(СодержимоеФайла); + Если ГруппыИндексов.Количество() = 0 Тогда + + Возврат ЛОЖЬ; + + КонецЕсли; + + СодержимоеФайла = Регексп.Заменить(СодержимоеФайла, "$1 $2$3$4"); + + ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла,,,, Символы.ПС); + ЗаписьТекста.Записать(СодержимоеФайла); + ЗаписьТекста.Закрыть(); + + Возврат Истина; + +КонецФункции \ No newline at end of file diff --git a/v8config.json b/v8config.json index b868b80..56fd7c8 100644 --- a/v8config.json +++ b/v8config.json @@ -3,6 +3,7 @@ "ИспользоватьСценарииРепозитория": false, "КаталогЛокальныхСценариев": "", "ГлобальныеСценарии": [ + "ДобавлениеПробеловПередКлючевымиСловами.os", "КорректировкаXMLФорм.os", "РазборОбычныхФормНаИсходники.os", "РазборОтчетовОбработокРасширений.os",