2024-03-23 17:09:28 +02:00
|
|
|
#Использовать osparser
|
|
|
|
|
|
|
|
Перем КаталогБиблиотеки;
|
|
|
|
Перем ФайлСоставаОПИ;
|
|
|
|
Перем МодульСоставаОПИ;
|
|
|
|
Перем СоответствиеКомандМодулей;
|
|
|
|
Перем ТекущийМодуль;
|
|
|
|
|
|
|
|
Процедура ПриСозданииОбъекта()
|
|
|
|
|
|
|
|
СоответствиеКомандМодулей = Новый Соответствие();
|
2024-04-03 19:50:36 +02:00
|
|
|
СоответствиеКомандМодулей.Вставить("OPI_Telegram" , "telegram");
|
|
|
|
СоответствиеКомандМодулей.Вставить("OPI_VK" , "vk");
|
|
|
|
СоответствиеКомандМодулей.Вставить("OPI_Viber" , "viber");
|
|
|
|
СоответствиеКомандМодулей.Вставить("OPI_Twitter" , "twitter");
|
|
|
|
СоответствиеКомандМодулей.Вставить("OPI_Notion" , "notion");
|
|
|
|
СоответствиеКомандМодулей.Вставить("OPI_YandexID" , "yandex");
|
|
|
|
СоответствиеКомандМодулей.Вставить("OPI_YandexDisk" , "yadisk");
|
|
|
|
СоответствиеКомандМодулей.Вставить("OPI_GoogleWorkspace", "google");
|
|
|
|
СоответствиеКомандМодулей.Вставить("OPI_GoogleCalendar" , "gcalendar");
|
|
|
|
СоответствиеКомандМодулей.Вставить("OPI_GoogleDrive" , "gdrive");
|
2024-03-23 17:09:28 +02:00
|
|
|
|
2024-03-24 01:05:51 +02:00
|
|
|
КаталогБиблиотеки = "./OInt/core/Modules";
|
|
|
|
ФайлСоставаОПИ = "./cli/data/Modules/СоставБиблиотеки.os";
|
2024-03-23 17:09:28 +02:00
|
|
|
|
|
|
|
МодульСоставаОПИ = Новый ТекстовыйДокумент();
|
|
|
|
|
|
|
|
МодульСоставаОПИ.УстановитьТекст("Функция ПолучитьСостав() Экспорт
|
|
|
|
|
|
|
|
|
| ТаблицаСостава = Новый ТаблицаЗначений();
|
|
|
|
| ТаблицаСостава.Колонки.Добавить(""Библиотека"");
|
|
|
|
| ТаблицаСостава.Колонки.Добавить(""Модуль"");
|
|
|
|
| ТаблицаСостава.Колонки.Добавить(""Метод"");
|
|
|
|
| ТаблицаСостава.Колонки.Добавить(""МетодПоиска"");
|
|
|
|
| ТаблицаСостава.Колонки.Добавить(""Параметр"");
|
|
|
|
| ТаблицаСостава.Колонки.Добавить(""Описание"");
|
2024-03-24 01:02:50 +02:00
|
|
|
| ТаблицаСостава.Колонки.Добавить(""ОписаниеМетода"");
|
2024-03-23 17:09:28 +02:00
|
|
|
|");
|
|
|
|
|
|
|
|
ЗаполнитьТаблицуСостава();
|
|
|
|
|
|
|
|
МодульСоставаОПИ.ДобавитьСтроку(" Возврат ТаблицаСостава;");
|
|
|
|
МодульСоставаОПИ.ДобавитьСтроку("КонецФункции");
|
2024-03-25 16:02:32 +02:00
|
|
|
МодульСоставаОПИ.ДобавитьСтроку(Символы.ПС);
|
2024-03-23 17:09:28 +02:00
|
|
|
|
|
|
|
МодульСоставаОПИ.Записать(ФайлСоставаОПИ);
|
|
|
|
|
|
|
|
КонецПроцедуры
|
|
|
|
|
|
|
|
|
|
|
|
Процедура ЗаполнитьТаблицуСостава()
|
|
|
|
|
|
|
|
ФайлыМодулей = НайтиФайлы(КаталогБиблиотеки, "*.os");
|
|
|
|
|
|
|
|
Для Каждого Модуль Из ФайлыМодулей Цикл
|
|
|
|
|
|
|
|
ТекущийМодуль = Модуль.ИмяБезРасширения;
|
|
|
|
|
|
|
|
Если Не СоответствиеКомандМодулей[ТекущийМодуль] = Неопределено Тогда
|
|
|
|
РазобратьМодуль(Модуль);
|
|
|
|
КонецЕсли;
|
|
|
|
|
|
|
|
КонецЦикла;
|
|
|
|
|
|
|
|
КонецПроцедуры
|
|
|
|
|
|
|
|
Процедура РазобратьМодуль(Модуль)
|
|
|
|
|
2024-03-24 01:02:50 +02:00
|
|
|
Парсер = Новый ПарсерВстроенногоЯзыка;
|
2024-03-23 17:09:28 +02:00
|
|
|
ДокументМодуля = Новый ТекстовыйДокумент;
|
|
|
|
ДокументМодуля.Прочитать(Модуль.ПолноеИмя);
|
|
|
|
ТекстМодуля = ДокументМодуля.ПолучитьТекст();
|
|
|
|
|
|
|
|
СтруктураМодуля = Парсер.Разобрать(ТекстМодуля);
|
|
|
|
|
|
|
|
Для Каждого Метод Из СтруктураМодуля.Объявления Цикл
|
|
|
|
|
|
|
|
Если Метод.Тип = "ОбъявлениеМетода" И Метод.Сигнатура.Экспорт = Истина Тогда
|
2024-04-06 19:10:31 +02:00
|
|
|
РазобратьКомментарийМетода(ДокументМодуля, Метод.Начало.НомерСтроки, Метод.Сигнатура.Имя, Модуль);
|
2024-03-23 17:09:28 +02:00
|
|
|
КонецЕсли;
|
|
|
|
|
|
|
|
КонецЦикла;
|
|
|
|
|
|
|
|
КонецПроцедуры
|
|
|
|
|
2024-04-06 19:10:31 +02:00
|
|
|
Процедура РазобратьКомментарийМетода(ТекстовыйДокумент, НомерСтроки, ИмяМетода, Модуль)
|
2024-03-23 17:09:28 +02:00
|
|
|
|
2024-03-24 01:02:50 +02:00
|
|
|
ТекущаяСтрока = ТекстовыйДокумент.ПолучитьСтроку(НомерСтроки - 1);
|
|
|
|
ТекстКомментария = ТекущаяСтрока;
|
|
|
|
Счетчик = 1;
|
|
|
|
ЗаписыватьПараметры = Ложь;
|
|
|
|
ЗаписыватьОписание = Истина;
|
|
|
|
МассивПараметров = Новый Массив;
|
|
|
|
ОписаниеМетода = "";
|
2024-04-07 00:00:32 +02:00
|
|
|
ДопОписание = "";
|
2024-03-23 17:09:28 +02:00
|
|
|
|
|
|
|
Пока СтрНайти(ТекущаяСтрока, "//") > 0 Цикл
|
|
|
|
|
|
|
|
Счетчик = Счетчик + 1;
|
|
|
|
|
|
|
|
ТекущаяСтрока = ТекстовыйДокумент.ПолучитьСтроку(НомерСтроки - Счетчик);
|
|
|
|
ТекстКомментария = ТекущаяСтрока + Символы.ПС + ТекстКомментария;
|
|
|
|
|
|
|
|
КонецЦикла;
|
|
|
|
|
|
|
|
Если СтрНайти(ТекстКомментария, "!NOCLI") > 0 Тогда
|
|
|
|
Возврат;
|
|
|
|
КонецЕсли;
|
2024-03-23 17:45:27 +02:00
|
|
|
|
2024-03-23 17:09:28 +02:00
|
|
|
МассивКомментария = СтрРазделить(ТекстКомментария, "//", Ложь);
|
2024-04-03 19:55:37 +02:00
|
|
|
|
|
|
|
Если МассивКомментария.Количество() = 0 Тогда
|
|
|
|
Сообщить(ТекстКомментария);
|
|
|
|
Иначе
|
|
|
|
МассивКомментария.Удалить(0);
|
|
|
|
КонецЕсли;
|
2024-03-23 17:09:28 +02:00
|
|
|
|
2024-03-24 01:02:50 +02:00
|
|
|
Счетчик = 0;
|
2024-03-23 17:09:28 +02:00
|
|
|
Для Каждого СтрокаКомментария Из МассивКомментария Цикл
|
|
|
|
|
2024-03-24 01:02:50 +02:00
|
|
|
Счетчик = Счетчик + 1;
|
|
|
|
|
|
|
|
Если Не ЗначениеЗаполнено(СокрЛП(СтрокаКомментария)) Тогда
|
|
|
|
ЗаписыватьОписание = Ложь;
|
|
|
|
КонецЕсли;
|
|
|
|
|
|
|
|
Если ЗаписыватьОписание = Истина И Счетчик > 1 Тогда
|
2024-04-07 00:09:48 +02:00
|
|
|
ОписаниеМетода = ?(ЗначениеЗаполнено(ОписаниеМетода), ОписаниеМетода + " | ", ОписаниеМетода) + СтрокаКомментария;
|
2024-03-24 01:02:50 +02:00
|
|
|
КонецЕсли;
|
|
|
|
|
2024-03-23 17:09:28 +02:00
|
|
|
Если СтрНайти(СтрокаКомментария, "Параметры:") > 0 Тогда
|
2024-03-24 01:02:50 +02:00
|
|
|
ЗаписыватьПараметры = Истина;
|
|
|
|
ЗаписыватьОписание = Ложь;
|
2024-03-23 17:09:28 +02:00
|
|
|
|
|
|
|
ИначеЕсли СтрНайти(СтрокаКомментария, "Возвращаемое значение:") > 0 Тогда
|
|
|
|
Прервать;
|
|
|
|
|
2024-03-24 01:02:50 +02:00
|
|
|
ИначеЕсли ЗаписыватьПараметры = Истина
|
|
|
|
И ЗначениеЗаполнено(СокрЛП(СтрокаКомментария))
|
|
|
|
И Не СтрНачинаетсяС(СокрЛП(СтрокаКомментария), "*") = 0 Тогда
|
|
|
|
|
2024-03-23 17:09:28 +02:00
|
|
|
МассивПараметров.Добавить(СтрокаКомментария);
|
|
|
|
|
|
|
|
Иначе
|
|
|
|
Продолжить;
|
|
|
|
КонецЕсли;
|
|
|
|
|
|
|
|
КонецЦикла;
|
|
|
|
|
2024-04-07 00:00:32 +02:00
|
|
|
ОпределитьДопОписаниеПоПараметрам(ДопОписание, Модуль, МассивПараметров);
|
|
|
|
ОпределитьДопОписаниеПоТипамПараметров(ДопОписание, Модуль, МассивКомментария);
|
|
|
|
|
2024-04-06 10:45:24 +02:00
|
|
|
ОписаниеМетода = СокрЛП(ОписаниеМетода) + ДопОписание;
|
2024-04-06 09:55:20 +02:00
|
|
|
|
2024-03-23 17:09:28 +02:00
|
|
|
Для Каждого ПараметрМетода Из МассивПараметров Цикл
|
2024-03-24 01:02:50 +02:00
|
|
|
|
|
|
|
ЗаписатьСозданиеПараметраСостава(ПараметрМетода, ИмяМетода, СокрЛП(ОписаниеМетода));
|
|
|
|
ОписаниеМетода = "";
|
2024-03-23 17:09:28 +02:00
|
|
|
|
|
|
|
КонецЦикла;
|
|
|
|
|
|
|
|
КонецПроцедуры
|
|
|
|
|
2024-03-24 01:02:50 +02:00
|
|
|
Процедура ЗаписатьСозданиеПараметраСостава(ПараметрМетода, ИмяМетода, ОписаниеМетода = "")
|
2024-03-23 17:09:28 +02:00
|
|
|
|
2024-03-23 17:45:27 +02:00
|
|
|
Разделитель = "-";
|
|
|
|
МассивЭлементовПараметра = СтрРазделить(ПараметрМетода, Разделитель, Ложь);
|
2024-03-23 17:09:28 +02:00
|
|
|
КоличествоЭлементов = МассивЭлементовПараметра.Количество();
|
|
|
|
|
|
|
|
Для Н = 0 По МассивЭлементовПараметра.ВГраница() Цикл
|
|
|
|
МассивЭлементовПараметра[Н] = СокрЛП(МассивЭлементовПараметра[Н]);
|
|
|
|
КонецЦикла;
|
|
|
|
|
|
|
|
Если КоличествоЭлементов < 4 Тогда
|
|
|
|
Возврат;
|
|
|
|
КонецЕсли;
|
|
|
|
|
2024-03-23 17:45:27 +02:00
|
|
|
Имя = "--" + МассивЭлементовПараметра[3];
|
2024-03-31 21:31:55 +02:00
|
|
|
Описание = ?(КоличествоЭлементов >= 5, МассивЭлементовПараметра[4], МассивЭлементовПараметра[2]);
|
2024-03-23 17:09:28 +02:00
|
|
|
|
|
|
|
МодульСоставаОПИ.ДобавитьСтроку(Символы.ПС);
|
|
|
|
|
|
|
|
МодульСоставаОПИ.ДобавитьСтроку(" НоваяСтрока = ТаблицаСостава.Добавить();");
|
|
|
|
МодульСоставаОПИ.ДобавитьСтроку(" НоваяСтрока.Библиотека = """ + СоответствиеКомандМодулей.Получить(ТекущийМодуль) + """;");
|
|
|
|
МодульСоставаОПИ.ДобавитьСтроку(" НоваяСтрока.Модуль = """ + ТекущийМодуль + """;");
|
|
|
|
МодульСоставаОПИ.ДобавитьСтроку(" НоваяСтрока.Метод = """ + ИмяМетода + """;");
|
|
|
|
МодульСоставаОПИ.ДобавитьСтроку(" НоваяСтрока.МетодПоиска = """ + вРег(ИмяМетода) + """;");
|
|
|
|
МодульСоставаОПИ.ДобавитьСтроку(" НоваяСтрока.Параметр = """ + Имя + """;");
|
|
|
|
МодульСоставаОПИ.ДобавитьСтроку(" НоваяСтрока.Описание = """ + Описание + """;");
|
2024-03-24 01:02:50 +02:00
|
|
|
|
|
|
|
Если ЗначениеЗаполнено(ОписаниеМетода) Тогда
|
|
|
|
МодульСоставаОПИ.ДобавитьСтроку(" НоваяСтрока.ОписаниеМетода = """ + ОписаниеМетода + """;");
|
|
|
|
КонецЕсли;
|
|
|
|
|
2024-03-23 17:09:28 +02:00
|
|
|
МодульСоставаОПИ.ДобавитьСтроку(Символы.ПС);
|
|
|
|
|
|
|
|
КонецПроцедуры
|
|
|
|
|
2024-04-07 00:00:32 +02:00
|
|
|
Процедура ОпределитьДопОписаниеПоТипамПараметров(ДопОписание, Модуль, МассивКомментария)
|
2024-04-06 09:55:20 +02:00
|
|
|
|
|
|
|
НачалоПараметров = Ложь;
|
|
|
|
ЕстьМассив = Ложь;
|
2024-04-07 00:00:32 +02:00
|
|
|
ТекстДополнения = "";
|
2024-04-06 09:55:20 +02:00
|
|
|
|
|
|
|
ДЛя Каждого СтрокаКомментария Из МассивКомментария Цикл
|
|
|
|
|
|
|
|
Если СтрНайти(СтрокаКомментария, "Возвращаемое значение:") Тогда
|
|
|
|
Прервать;
|
|
|
|
КонецЕсли;
|
|
|
|
|
|
|
|
Если СтрНайти(СтрокаКомментария, "Параметры:") > 0 Тогда
|
|
|
|
НачалоПараметров = Истина;
|
2024-04-06 18:52:07 +02:00
|
|
|
Продолжить;
|
2024-04-06 09:55:20 +02:00
|
|
|
КонецЕсли;
|
|
|
|
|
|
|
|
Если Не НачалоПараметров Тогда
|
|
|
|
Продолжить;
|
|
|
|
КонецЕсли;
|
|
|
|
|
2024-04-06 18:52:07 +02:00
|
|
|
Если СтрНайти(СтрокаКомментария, " Массив") > 0
|
|
|
|
Или СтрНайти(СтрокаКомментария, ",Массив") > 0 Тогда
|
2024-04-06 09:55:20 +02:00
|
|
|
ЕстьМассив = Истина;
|
|
|
|
Прервать;
|
|
|
|
КонецЕсли;
|
|
|
|
|
|
|
|
КонецЦикла;
|
|
|
|
|
|
|
|
Если ЕстьМассив Тогда
|
2024-04-07 00:00:32 +02:00
|
|
|
ТекстДополнения = ТекстДополнения
|
|
|
|
+ "
|
|
|
|
|
|
2024-04-06 19:20:36 +02:00
|
|
|
| Пример указания параметра типа массив:
|
2024-04-07 00:00:32 +02:00
|
|
|
| --param ""['Val1','Val2','Val3']""
|
|
|
|
|";
|
2024-04-06 09:55:20 +02:00
|
|
|
|
|
|
|
КонецЕсли;
|
|
|
|
|
2024-04-07 00:09:48 +02:00
|
|
|
ТекстДополнения = СтрЗаменить(ТекстДополнения, Символы.ПС, Символы.ПС + " |");
|
2024-04-07 00:00:32 +02:00
|
|
|
ДопОписание = ДопОписание + СтрЗаменить(ТекстДополнения, """", """""");
|
2024-04-06 09:55:20 +02:00
|
|
|
|
2024-04-07 00:00:32 +02:00
|
|
|
КонецПроцедуры
|
2024-04-06 09:55:20 +02:00
|
|
|
|
2024-04-07 00:00:32 +02:00
|
|
|
Процедура ОпределитьДопОписаниеПоПараметрам(ДопОписание, Модуль, Параметры)
|
2024-04-06 19:10:31 +02:00
|
|
|
|
2024-04-07 00:00:32 +02:00
|
|
|
Разделитель = "-";
|
2024-04-06 19:10:31 +02:00
|
|
|
|
2024-04-07 00:00:32 +02:00
|
|
|
Для Каждого Параметр Из Параметры Цикл
|
2024-04-06 19:10:31 +02:00
|
|
|
|
2024-04-07 00:00:32 +02:00
|
|
|
МассивЭлементовПараметра = СтрРазделить(Параметр, Разделитель, Ложь);
|
|
|
|
КоличествоЭлементов = МассивЭлементовПараметра.Количество();
|
|
|
|
|
|
|
|
Для Н = 0 По МассивЭлементовПараметра.ВГраница() Цикл
|
|
|
|
МассивЭлементовПараметра[Н] = СокрЛП(МассивЭлементовПараметра[Н]);
|
|
|
|
КонецЦикла;
|
|
|
|
|
|
|
|
Если КоличествоЭлементов < 4 Тогда
|
|
|
|
Продолжить;
|
|
|
|
КонецЕсли;
|
|
|
|
|
|
|
|
Имя = МассивЭлементовПараметра[3];
|
|
|
|
ТекстДополнения = "";
|
|
|
|
|
|
|
|
Если Модуль.ИмяБезРасширения = "OPI_VK" Тогда
|
|
|
|
Если Имя = "auth" Тогда
|
|
|
|
ТекстДополнения = "
|
|
|
|
|
|
|
|
|
| Структура JSON данных авторизации (параметр --auth):
|
|
|
|
| {
|
|
|
|
| ""access_token"": """",
|
|
|
|
| ""from_group"" : ""1"",
|
|
|
|
| ""owner_id"" : """",
|
|
|
|
| ""v"" : ""5.131"",
|
|
|
|
| ""app_id"" : """",
|
|
|
|
| ""group_id"" : """"
|
|
|
|
| }
|
|
|
|
|
|
|
|
|
|";
|
|
|
|
КонецЕсли;
|
|
|
|
КонецЕсли;
|
|
|
|
|
|
|
|
|
|
|
|
Если Модуль.ИмяБезРасширения = "OPI_Telegram" Тогда
|
|
|
|
Если Имя = "media" Тогда
|
|
|
|
ТекстДополнения = "
|
|
|
|
|
|
|
|
|
| Структура JSON данных медиагруппы (параметр --media):
|
|
|
|
| {
|
|
|
|
| ""ПутьКФайлу"": ""ТипМедиа"",
|
|
|
|
| ""ПутьКФайлу"": ""ТипМедиа"",
|
|
|
|
| ...
|
|
|
|
| }
|
|
|
|
|";
|
|
|
|
КонецЕсли;
|
|
|
|
КонецЕсли;
|
2024-04-06 19:10:31 +02:00
|
|
|
|
2024-04-07 00:09:48 +02:00
|
|
|
ТекстДополнения = СтрЗаменить(ТекстДополнения, Символы.ПС, Символы.ПС + " |");
|
2024-04-07 00:00:32 +02:00
|
|
|
ДопОписание = ДопОписание + СтрЗаменить(ТекстДополнения, """", """""");
|
|
|
|
КонецЦикла;
|
|
|
|
|
|
|
|
КонецПроцедуры
|
2024-04-06 19:10:31 +02:00
|
|
|
|
2024-03-23 17:09:28 +02:00
|
|
|
ПриСозданииОбъекта();
|