mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2024-11-28 09:08:38 +02:00
Начало автоматизации создание документации
This commit is contained in:
parent
6caea000af
commit
527cf095e2
151
.github/workflows/os/oint_docs.os
vendored
Normal file
151
.github/workflows/os/oint_docs.os
vendored
Normal file
@ -0,0 +1,151 @@
|
||||
#Использовать osparser
|
||||
#Использовать cmdline
|
||||
|
||||
Перем СоответствиеМодулейКоманд;
|
||||
Перем ТекущийМодуль;
|
||||
Перем МассивРасположенийМодулей;
|
||||
Перем Парсер;
|
||||
Перем Расположение;
|
||||
Перем СПодкаталогами;
|
||||
Перем КаталогДокументации;
|
||||
|
||||
Процедура ПриСозданииОбъекта()
|
||||
|
||||
Путь = "./OPI";
|
||||
СПодкаталогами = Истина;
|
||||
КаталогДокументации = "./docs";
|
||||
|
||||
ПроверитьСоздатьКаталог(КаталогДокументации);
|
||||
СоздатьФайлыДокументации();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПроверитьСоздатьКаталог(Путь)
|
||||
|
||||
Каталог = Новый Файл(Путь);
|
||||
|
||||
Если Не Каталог.Существует() Тогда
|
||||
СоздатьКаталог(Каталог);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура СоздатьФайлыДокументации()
|
||||
|
||||
ОбщийМассивМодулей = Новый Массив;
|
||||
ФайлыМодулей = НайтиФайлы(Расположение, "*.os", СПодкаталогами);
|
||||
|
||||
Для Каждого Модуль Из ФайлыМодулей Цикл
|
||||
ОбщийМассивМодулей.Добавить(Модуль);
|
||||
КонецЦикла;
|
||||
|
||||
Для Каждого Модуль Из ОбщийМассивМодулей Цикл
|
||||
|
||||
ТекущийМодуль = Новый ТекстовыйДокумент(Модуль.ПолноеИмя);
|
||||
РазобратьМодуль(ТекущийМодуль);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура РазобратьМодуль(ТекущийМодуль)
|
||||
|
||||
ТекстМодуля = ТекущийМодуль.ПолучитьТекст();
|
||||
СтруктураОбщихДанных = Новый Структура();
|
||||
|
||||
ПолучитьДанныеМодуля(СтруктураОбщихДанных, ТекущийМодуль);
|
||||
|
||||
Если Не ЗначениеЗаполнено(СтруктураОбщихДанных["Имя"]) Тогда
|
||||
Возврат;
|
||||
КонеЦесли;
|
||||
|
||||
Парсер = Новый ПарсерВстроенногоЯзыка;
|
||||
СтруктураМодуля = Парсер.Разобрать(ТекстМодуля);
|
||||
|
||||
Для Каждого Метод Из СтруктураМодуля.Объявления Цикл
|
||||
|
||||
Если Метод.Тип = "ОбъявлениеМетода" И Метод.Сигнатура.Экспорт = Истина Тогда
|
||||
РазобратьМетод(ТекущийМодуль, Метод, СтруктураОбщихДанных);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПолучитьДанныеМодуля(СтруктураОбщихДанных, ТекущийМодуль)
|
||||
|
||||
Имя = ТекущийМодуль.ПолучитьСтроку(1);
|
||||
CLI = ТекущийМодуль.ПолучитьСтроку(2);
|
||||
|
||||
Если СтрНайти(Имя, "Библиотека") = 0 Тогда
|
||||
Имя = "";
|
||||
Иначе
|
||||
Имя = СтрЗаменить(Имя, "Библиотека:", "");
|
||||
Имя = СокрЛП(Имя);
|
||||
КонецЕсли;
|
||||
|
||||
Если СтрНайти(CLI, "Команда CLI") = 0 Тогда
|
||||
CLI = "none";
|
||||
Иначе
|
||||
CLI = СтрЗаменить(CLI, "Команда CLI:", "");
|
||||
CLI = СокрЛП(CLI);
|
||||
КонецЕсли;
|
||||
|
||||
Каталог = СтрЗаменить(Имя, " ", "_");
|
||||
|
||||
СтруктураОбщихДанных.Вставить("Библиотека", Имя);
|
||||
СтруктураОбщихДанных.Вставить("Команда" , CLI);
|
||||
СтруктураОбщихДанных.Вставить("Каталог" , Каталог);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура РазобратьМетод(ТекстовыйДокумент, Метод, СтруктураДанных)
|
||||
|
||||
НомерСтроки = Метод.Начало.НомерСтроки;
|
||||
ИмяМетода = Метод.Сигнатура.Имя;
|
||||
Объявление = ТекстовыйДокумент.ПолучитьСтроку(НомерСтроки);
|
||||
|
||||
МассивКомментария = ПарсингКомментария(ТекстовыйДокумент, НомерСтроки, СтруктураДанных);
|
||||
|
||||
Если МассивКомментария.Количество() = 0 Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
СтруктураДанных.Вставить("Объявление", Объявление);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПарсингКомментария(Знач ТекстовыйДокумент, Знач НомерСтроки, СтруктураДанных)
|
||||
|
||||
ТекущаяСтрока = ТекстовыйДокумент.ПолучитьСтроку(НомерСтроки - 1);
|
||||
ТекстКомментария = ТекущаяСтрока;
|
||||
|
||||
Счетчик = 1;
|
||||
Пока СтрНайти(ТекущаяСтрока, "//") > 0 Цикл
|
||||
|
||||
Счетчик = Счетчик + 1;
|
||||
|
||||
ТекущаяСтрока = ТекстовыйДокумент.ПолучитьСтроку(НомерСтроки - Счетчик);
|
||||
ТекстКомментария = ТекущаяСтрока + Символы.ПС + ТекстКомментария;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Если СтрНайти(ТекстКомментария, "!NOCLI") > 0 Тогда
|
||||
СтруктураДанных.Вставить("ЕстьCLI", Ложь);
|
||||
Иначе
|
||||
СтруктураДанных.Вставить("ЕстьCLI", Истина);
|
||||
КонецЕсли;
|
||||
|
||||
МассивКомментария = СтрРазделить(ТекстКомментария, "//", Ложь);
|
||||
|
||||
Если МассивКомментария.Количество() = 0 Тогда
|
||||
Возврат Новый Массив;
|
||||
Иначе
|
||||
МассивКомментария.Удалить(0);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат МассивКомментария;
|
||||
|
||||
КонецФункции
|
||||
|
||||
ПриСозданииОбъекта();
|
Loading…
Reference in New Issue
Block a user