1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2024-12-16 11:38:11 +02:00
OpenIntegrations/.github/workflows/os/docs_extract.os

110 lines
5.3 KiB
Plaintext
Raw Normal View History

ПутьКДокам = "./docs/ru/md";
ПутьКПримерам = "./docs/ru/examples/";
ПутьКРезультатам = "./docs/ru/results/";
КаталогиБиблиотек = НайтиФайлы(ПутьКДокам, "*", Ложь);
Для Каждого Каталог Из КаталогиБиблиотек Цикл
ФайлыДокументации = НайтиФайлы(Каталог.ПолноеИмя, "*.md", Истина);
ИмяБиблиотеки = Каталог.Имя;
Для Каждого Документ Из ФайлыДокументации Цикл
ТекущийДокумент = Новый ТекстовыйДокумент();
ТекущийДокумент.Прочитать(Документ.ПолноеИмя, "UTF-8");
ЗаписьПримера = Ложь;
ЗаписьРезультата = Ложь;
Пример = "";
Результат = "";
ИмяФункции = "";
Для Н = 1 По ТекущийДокумент.КоличествоСтрок() Цикл
ТекущаяСтрока = СокрЛП(ТекущийДокумент.ПолучитьСтроку(Н));
Если СтрНачинаетсяС(ТекущаяСтрока, "*Функция ")
Или СтрНачинаетсяС(ТекущаяСтрока, "Функция ") Тогда
ИмяФункции = СтрЗаменить(ТекущаяСтрока, "*Функция ", "");
ИмяФункции = СтрЗаменить(ИмяФункции, "Функция ", "");
ИмяФункции = Лев(ИмяФункции, СтрНайти(ИмяФункции, "(") - 1);
КонецЕсли;
Если СтрНачинаетсяС(ТекущаяСтрока, "```bsl") Тогда
ЗаписьПримера = Истина;
ИначеЕсли СтрНачинаетсяС(ТекущаяСтрока, "```json") Тогда
ЗаписьРезультата = Истина;
ИначеЕсли СтрНачинаетсяС(ТекущаяСтрока, "```") Тогда
ЗаписьРезультата = Ложь;
ЗаписьПримера = Ложь;
Иначе
Если ЗаписьПримера Тогда
Пример = Пример + " " + ТекущаяСтрока + Символы.ПС;
КонецЕсли;
Если ЗаписьРезультата Тогда
Результат = Результат + " " + ТекущаяСтрока + Символы.ПС;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если Не ЗначениеЗаполнено(ИмяФункции) Тогда
Сообщить("Документ без имени функции: " + Документ.ПолноеИмя);
Продолжить;
КонецЕсли;
Если ЗначениеЗаполнено(СокрЛП(Результат)) Тогда
ПутьБиблиотеки = ПутьКРезультатам + СтрЗаменить(ИмяБиблиотеки, "_", "");
КаталогБиблиотеки = Новый Файл(ПутьБиблиотеки);
Если Не КаталогБиблиотеки.Существует() Тогда
СоздатьКаталог(ПутьБиблиотеки);
КонецЕсли;
ПутьРезультата = ПутьБиблиотеки + "/" + ИмяФункции + ".log";
ФайлРезультата = Новый Файл(ПутьРезультата);
Если ФайлРезультата.Существует() Тогда
Сообщить("Файл результата существует: " + ПутьРезультата);
Иначе
ДокументРезультата = Новый ТекстовыйДокумент();
ДокументРезультата.УстановитьТекст(Результат);
ДокументРезультата.Записать(ПутьРезультата);
Сообщить("Файл результата записан: " + ПутьРезультата);
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(СокрЛП(Пример)) Тогда
ПутьБиблиотеки = ПутьКПримерам + СтрЗаменить(ИмяБиблиотеки, "_", "");
КаталогБиблиотеки = Новый Файл(ПутьБиблиотеки);
Если Не КаталогБиблиотеки.Существует() Тогда
СоздатьКаталог(ПутьБиблиотеки);
КонецЕсли;
ПутьПримера = ПутьБиблиотеки + "/" + ИмяФункции + ".txt";
ФайлПримера = Новый Файл(ПутьПримера);
Если ФайлПримера.Существует() Тогда
Сообщить("Файл примера существует: " + ПутьПримера);
Иначе
ДокументПримера = Новый ТекстовыйДокумент();
ДокументПримера.УстановитьТекст(Пример);
ДокументПримера.Записать(ПутьПримера);
Сообщить("Файл примера записан: " + ПутьПримера);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;