1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2024-11-24 08:52:18 +02:00

Автоматизация создания документации

This commit is contained in:
Anton Titovets 2024-04-23 11:54:04 +03:00
parent ae2ef53f89
commit 9c65223dcd

View File

@ -1,19 +1,19 @@
#Использовать osparser
#Использовать cmdline
Перем СоответствиеМодулейКоманд;
Перем ТекущийМодуль;
Перем МассивРасположенийМодулей;
Перем Парсер;
Перем Расположение;
Перем СПодкаталогами;
Перем КаталогДокументации;
Перем СписокОбластей;
Процедура ПриСозданииОбъекта()
Расположение = ".\OInt";
СПодкаталогами = Истина;
КаталогДокументации = ".\docs";
СписокОбластей = Новый СписокЗначений();
ПроверитьСоздатьКаталог(КаталогДокументации);
СоздатьФайлыДокументации();
@ -45,10 +45,14 @@
Процедура СоздатьСтраницуДокументации(СтруктураМетода)
КаталогБиблиотеки = КаталогДокументации + "\" + СтруктураМетода["Каталог"];
ПроверитьСоздатьКаталог(КаталогБиблиотеки);
ТранслитированноеИмя = ТранслитироватьСтроку(СтруктураМетода["Заголовок"]);
СинонимОбласти = Синонимайзер(СтруктураМетода["Область"]);
ТранслитированнаяОбласть = ТранслитироватьСтроку(СинонимОбласти);
ТранслитированноеИмя = ТранслитироватьСтроку(СтруктураМетода["Заголовок"]);
КаталогБиблиотеки = КаталогДокументации + "\" + СтруктураМетода["Каталог"];
КаталогОбласти = КаталогБиблиотеки + "\" + ТранслитированнаяОбласть;
ПроверитьСоздатьКаталог(КаталогБиблиотеки);
ПроверитьСоздатьКаталог(КаталогОбласти);
Макет = Новый ТекстовыйДокумент();
Макет.Прочитать(".\.github\workflows\os\template.md", "UTF-8");
@ -89,7 +93,7 @@
НовыйДокумент = Новый ТекстовыйДокумент();
НовыйДокумент.УстановитьТекст(Макет);
НовыйДокумент.Записать(КаталогБиблиотеки + "\" + ТранслитированноеИмя + ".md");
НовыйДокумент.Записать(КаталогОбласти + "\" + ТранслитированноеИмя + ".md");
КонецПроцедуры
@ -118,8 +122,14 @@
РазобратьМетод(ТекущийМодуль, Метод, СтруктураОбщихДанных);
КонецЕсли;
Если Метод.Тип = "ИнструкцияПрепроцессораОбласть" Тогда
СписокОбластей.Добавить(Метод.Начало.НомерСтроки, Метод.Имя);
КонецЕсли;
КонецЦикла;
СписокОбластей.СортироватьПоЗначению();
КонецПроцедуры
Процедура ПолучитьДанныеМодуля(СтруктураОбщихДанных, ТекущийМодуль)
@ -157,8 +167,25 @@
НомерСтроки = Метод.Начало.НомерСтроки;
ИмяМетода = Метод.Сигнатура.Имя;
Объявление = ТекстовыйДокумент.ПолучитьСтроку(НомерСтроки);
Объявление = "";
Для Н = НомерСтроки По Метод.Конец.НомерСтроки Цикл
Часть = СокрЛП(ТекстовыйДокумент.ПолучитьСтроку(Н));
Объявление = Объявление + Часть;
Если Не ЗначениеЗаполнено(Часть) Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Для Каждого Область Из СписокОбластей Цикл
Если НомерСтроки > Область.Значение Тогда
СтруктураДанных.Вставить("Область", Область.Представление);
КонецЕсли;
КонецЦикла;
МассивКомментария = ПарсингКомментария(ТекстовыйДокумент, НомерСтроки, СтруктураДанных);
МассивПараметров = Новый Массив;
МассивОписанийПараметров = Новый Массив;
@ -170,7 +197,7 @@
СформироватьСтруктуруМетода(МассивКомментария, МассивПараметров, СтруктураДанных);
СформироватьМассивОписанийПараметров(МассивПараметров, Метод, МассивОписанийПараметров);
СтруктураДанных.Вставить("ИмяМетода" , Метод.Сигнатура.Имя);
СтруктураДанных.Вставить("ИмяМетода" , ИмяМетода);
СтруктураДанных.Вставить("Объявление", Объявление);
СтруктураДанных.Вставить("Параметры" , МассивОписанийПараметров);
@ -380,6 +407,23 @@
КонецФункции
Функция Синонимайзер(Имя) Экспорт
Ответ = "";
Стэйт = 7;
б = "";
Для ё = 1 По СтрДлина(Имя) Цикл
а = Сред(Имя, ё, 1);
Стэйт = (НРег(а) <> а) * 4 + Цел(Стэйт / 2);
Ответ = Ответ + ?(Стэйт = 2, НРег(б), ?(ё = 2, ВРег(б), б)) + ?(Стэйт = 4 ИЛИ Стэйт = 5, " ", "");
б = а
КонецЦикла;
Возврат Ответ + б
КонецФункции
#КонецОбласти
#КонецОбласти