1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2024-12-23 02:06:12 +02:00
OpenIntegrations/.github/workflows/os/internal/Modules/МетодыКонвертации.os

100 lines
3.8 KiB
Plaintext
Raw Normal View History

#Область СлужебныйПрограммныйИнтерфейс
Процедура ПортироватьНабор(Знач Набор, Знач СоответствиеЗамен) Экспорт
Для Каждого Элемент Из Набор Цикл
ПортироватьФайл(Элемент.Ключ, Элемент.Значение, СоответствиеЗамен);
КонецЦикла;
КонецПроцедуры
Процедура ПортироватьФайл(Знач Файл1С, Знач ФайлОС, Знач СоответствиеЗамен) Экспорт
ФайлМодуля = Новый Файл(Файл1С);
Если Не ФайлМодуля.Существует() Тогда
Возврат;
КонецЕсли;
Модуль = ПрочитатьМодуль(Файл1С);
Если СтрДлина(Модуль) = 0 Тогда
Возврат;
КонецЕсли;
ОбработатьЗаменыМодуля(Модуль, СоответствиеЗамен);
ЗаписатьМодуль(ФайлОС, Модуль);
КонецПроцедуры
Функция ПолучитьСопоставлениеФайлов(Знач ОсновнойПутьИсходников) Экспорт
Сопоставление = Новый Соответствие();
ФайлыМодулей = НайтиФайлы(ОсновнойПутьИсходников, "*.bsl", Истина);
Признак = "// OneScript: ";
Для Каждого Файл Из ФайлыМодулей Цикл
ТекущийФайл = Файл.ПолноеИмя;
ТекстФайла = Новый ТекстовыйДокумент();
ТекстФайла.Прочитать(ТекущийФайл, "UTF-8");
Для Н = 1 По ТекстФайла.КоличествоСтрок() Цикл
ТекущаяСтрока = СокрЛП(ТекстФайла.ПолучитьСтроку(Н));
Если Не ЗначениеЗаполнено(ТекущаяСтрока) Тогда
Прервать;
КонецЕсли;
Если СтрНайти(ТекущаяСтрока, Признак) > 0 Тогда
ПутьOS = СтрЗаменить(ТекущаяСтрока, Признак, "");
ПутьOS = СокрЛП(ПутьOS);
ПутьOS = СтрЗаменить(ПутьOS, "./", ОсновнойПутьИсходников);
Сопоставление.Вставить(ТекущийФайл, ПутьOS);
КонецЕсли;
КонецЦикла;
КонецЦикла;
Возврат Сопоставление;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ПрочитатьМодуль(Знач ФайлМодуля)
ЧтениеТекста = Новый ЧтениеТекста(ФайлМодуля, "UTF-8");
Модуль = ЧтениеТекста.Прочитать();
ЧтениеТекста.Закрыть();
Возврат Модуль;
КонецФункции
Процедура ЗаписатьМодуль(Знач ФайлМодуля, Знач Модуль)
ТекстовыйДокумент = Новый ТекстовыйДокумент();
ТекстовыйДокумент.УстановитьТекст(Модуль);
ТекстовыйДокумент.Записать(ФайлМодуля);
КонецПроцедуры
Процедура ОбработатьЗаменыМодуля(Модуль, СоответствиеЗамен)
Для Каждого Замена Из СоответствиеЗамен Цикл
Модуль = СтрЗаменить(Модуль, Замена.Ключ, Замена.Значение);
КонецЦикла;
КонецПроцедуры
#КонецОбласти