1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-04-02 22:05:37 +02:00

Скрипт автоформатирования модулей

This commit is contained in:
Anton 2024-07-27 14:37:04 +03:00
parent e58b2e318e
commit 0211b78acc
83 changed files with 35392 additions and 35183 deletions

View File

@ -47,6 +47,9 @@ jobs:
- name: Обновить Workflow тестирования OInt (EN) - name: Обновить Workflow тестирования OInt (EN)
run: oscript ./.github/workflows/os/oint_testmaker_en.os run: oscript ./.github/workflows/os/oint_testmaker_en.os
- name: Скрипт форматирования модулей
run: oscript ./.github/workflows/os/format.os
- uses: stefanzweifel/git-auto-commit-action@v5 - uses: stefanzweifel/git-auto-commit-action@v5
with: with:

206
.github/workflows/os/format.os vendored Normal file
View File

@ -0,0 +1,206 @@
Процедура ОтформатироватьМодуль(Знач ПутьКМодулю) Экспорт
ТекстовыйДокумент = Новый ТекстовыйДокумент();
ТекстовыйДокумент.Прочитать(ПутьКМодулю, "UTF-8");
БлокиКода = РазобратьМодульНаБлоки(ТекстовыйДокумент);
Для Н = 0 По БлокиКода.ВГраница() Цикл
МассивСтрокБлока = СтрРазделить(БлокиКода[Н], Символы.ПС);
Если МассивСтрокБлока.Количество() < 2 Тогда
Продолжить;
ИначеЕсли СтрНачинаетсяС(СокрЛП(МассивСтрокБлока[1]), "//") Тогда
Продолжить;
Иначе
ВыровнятьЗнакиРавно(МассивСтрокБлока);
ВыровнятьЗапятые(МассивСтрокБлока);
КонецЕсли;
БлокиКода[Н] = СтрСоединить(МассивСтрокБлока, Символы.ПС);
КонецЦикла;
ТекстФайла = СтрСоединить(БлокиКода, "");
ТекстовыйДокумент.УстановитьТекст(ТекстФайла);
ТекстовыйДокумент.Записать(ПутьКМодулю);
КонецПроцедуры
Функция РазобратьМодульНаБлоки(Знач ТекстовыйДокумент)
Для Н = 1 По ТекстовыйДокумент.КоличествоСтрок() Цикл
ТекущаяСтрока = ТекстовыйДокумент.ПолучитьСтроку(Н);
Если Не ЗначениеЗаполнено(СокрЛП(ТекущаяСтрока)) Тогда
ТекстовыйДокумент.ЗаменитьСтроку(Н, "⣿");
Иначе
ТекстовыйДокумент.ЗаменитьСтроку(Н, СокрП(ТекущаяСтрока));
КонецЕсли;
КонецЦикла;
ТекстФайла = ТекстовыйДокумент.ПолучитьТекст();
БлокиФайла = СтрРазделить(ТекстФайла, "⣿");
Возврат БлокиФайла;
КонецФункции
Процедура ВыровнятьЗнакиРавно(МассивСтрокБлока)
СоответствиеРасположений = Новый Соответствие();
МаксимальноеРасположение = 0;
ЧислоЗнаковРавно = 0;
Для Н = 0 По МассивСтрокБлока.ВГраница() Цикл
РасположениеРавно = СтрНайти(МассивСтрокБлока[Н], "=");
СоответствиеРасположений.Вставить(Н, РасположениеРавно);
МаксимальноеРасположение = ?(РасположениеРавно > МаксимальноеРасположение, РасположениеРавно, МаксимальноеРасположение);
Если Не РасположениеРавно = 0 Тогда
ЧислоЗнаковРавно = ЧислоЗнаковРавно + 1;
КонецЕсли;
КонецЦикла;
Если МаксимальноеРасположение = 0 Или ЧислоЗнаковРавно < 2 Тогда
Возврат;
КонецЕсли;
Для Каждого СтрокаБлока Из СоответствиеРасположений Цикл
РасположениеРавно = СтрокаБлока.Значение;
Индекс = СтрокаБлока.Ключ;
Если РасположениеРавно = 0 Или МаксимальноеРасположение - РасположениеРавно > 12 Тогда
Продолжить;
КонецЕсли;
Для Н = РасположениеРавно По МаксимальноеРасположение - 1 Цикл
МассивСтрокБлока[Индекс] = СтрЗаменить(МассивСтрокБлока[Индекс], "=", " =");
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Процедура ВыровнятьЗапятые(МассивСтрокБлока, СоответствиеМаксимумов = "")
ПолноеСоответствиеРасположений = Новый Соответствие();
СтрокаСЗапятыми = 0;
НачалоСтроки = "";
Для Н = 0 По МассивСтрокБлока.ВГраница() Цикл
МассивУчастков = СтрРазделить(МассивСтрокБлока[Н], ",");
МассивУчастков_ = Новый Массив;
Соединение = Ложь;
СтрокаСоединения = "";
Для Каждого Участок Из МассивУчастков Цикл
ЧислоКавычек = СтрЧислоВхождений(Участок, """");
Если (ЧислоКавычек = 0 Или ЧислоКавычек % 2 = 0 ) И Не Соединение Тогда
МассивУчастков_.Добавить(Участок);
ИначеЕсли Соединение И ЧислоКавычек % 2 <> 0 Тогда
МассивУчастков_.Добавить(СтрокаСоединения + "," + Участок);
СтрокаСоединения = "";
Соединение = Ложь;
Иначе
СтрокаСоединения = ?(ЗначениеЗаполнено(СтрокаСоединения), СтрокаСоединения + "," + Участок, Участок);
Соединение = Истина;
КонецЕсли;
КонецЦикла;
МассивУчастков = МассивУчастков_;
Если МассивУчастков.Количество() < 2 Тогда
Продолжить;
Иначе
СтрокаСЗапятыми = СтрокаСЗапятыми + 1;
КонецЕсли;
МассивНачалаСтроки = СтрРазделить(МассивУчастков[0], "(");
Если МассивНачалаСтроки.Количество() < 2 Тогда
Продолжить;
КонецЕсли;
НачалоСтроки = МассивНачалаСтроки[0];
СоответствиеРасположений = ПолноеСоответствиеРасположений[НачалоСтроки];
Если Не ЗначениеЗаполнено(СоответствиеРасположений) Тогда
СоответствиеРасположений = Новый Соответствие;
КонецЕсли;
Для Р = 0 По МассивУчастков.ВГраница() - 1 Цикл
Если Не ЗначениеЗаполнено(СоответствиеМаксимумов) Тогда
ДлинаУчастка = СтрДлина(МассивУчастков[Р]);
ТекущийМаксимум = СоответствиеРасположений.Получить(Р);
ТекущийМаксимум = ?(ЗначениеЗаполнено(ТекущийМаксимум), ТекущийМаксимум, 0);
ТекущийМаксимум = ?(ДлинаУчастка > ТекущийМаксимум , ДлинаУчастка , ТекущийМаксимум);
СоответствиеРасположений.Вставить(Р, ТекущийМаксимум);
Иначе
ТекущееСоответствиеМаксимумов = СоответствиеМаксимумов[НачалоСтроки];
Если Не ЗначениеЗаполнено(ТекущееСоответствиеМаксимумов) Тогда
Прервать;
КонецЕсли;
НеобходимаяДлина = ТекущееСоответствиеМаксимумов[Р];
Если НеобходимаяДлина = Неопределено Тогда
Продолжить;
КонецЕсли;
Пока СтрДлина(МассивУчастков[Р]) < НеобходимаяДлина Цикл
МассивУчастков[Р] = МассивУчастков[Р] + " ";
КонецЦикла;
КонецЕсли;
КонецЦикла;
ПолноеСоответствиеРасположений.Вставить(НачалоСтроки, СоответствиеРасположений);
МассивСтрокБлока[Н] = СтрСоединить(МассивУчастков, ",");
КонецЦикла;
Если Не ЗначениеЗаполнено(СоответствиеМаксимумов)
И ЗначениеЗаполнено(ПолноеСоответствиеРасположений)
И СтрокаСЗапятыми > 1 Тогда
ВыровнятьЗапятые(МассивСтрокБлока, ПолноеСоответствиеРасположений);
КонецЕсли;
КонецПроцедуры
Для Каждого Файл Из НайтиФайлы("./src", "*.os", Истина) Цикл
Если СтрНайти(Файл.ПолноеИмя, "\cli\") = 0
И СтрНайти(Файл.ПолноеИмя, "/cli/") = 0 Тогда
ОтформатироватьМодуль(Файл.ПолноеИмя);
КонецЕсли;
КонецЦикла;
Для Каждого Файл Из НайтиФайлы("./src", "*.bsl", Истина) Цикл
Если СтрНайти(Файл.ПолноеИмя, "\cli\") = 0
И СтрНайти(Файл.ПолноеИмя, "/cli/") = 0 Тогда
ОтформатироватьМодуль(Файл.ПолноеИмя);
КонецЕсли;
КонецЦикла;

View File

@ -1,4 +1,4 @@
#Использовать "./internal" #Использовать "./internal"
#Использовать "../../tools" #Использовать "../../tools"
Тесты = OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс(); Тесты = OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс();

View File

@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_Airtable.os // OneScript: ./OInt/core/Modules/OPI_Airtable.os
// Lib: Airtable // Lib: Airtable
// CLI: airtable // CLI: airtable

View File

@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_Bitrix24.os // OneScript: ./OInt/core/Modules/OPI_Bitrix24.os
// Lib: Bitrix24 // Lib: Bitrix24
// CLI: bitrix24 // CLI: bitrix24

View File

@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_Dropbox.os // OneScript: ./OInt/core/Modules/OPI_Dropbox.os
// Lib: Dropbox // Lib: Dropbox
// CLI: dropbox // CLI: dropbox

View File

@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_GoogleCalendar.os // OneScript: ./OInt/core/Modules/OPI_GoogleCalendar.os
// Lib: Google Calendar // Lib: Google Calendar
// CLI: gcalendar // CLI: gcalendar

View File

@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_GoogleDrive.os // OneScript: ./OInt/core/Modules/OPI_GoogleDrive.os
// Lib: Google Drive // Lib: Google Drive
// CLI: gdrive // CLI: gdrive

View File

@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_GoogleSheets.os // OneScript: ./OInt/core/Modules/OPI_GoogleSheets.os
// Lib: Google Sheets // Lib: Google Sheets
// CLI: gsheets // CLI: gsheets

View File

@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_GoogleWorkspace.os // OneScript: ./OInt/core/Modules/OPI_GoogleWorkspace.os
// Lib: Google Workspace // Lib: Google Workspace
// CLI: google // CLI: google

View File

@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_Notion.os // OneScript: ./OInt/core/Modules/OPI_Notion.os
// Lib: Notion // Lib: Notion
// CLI: notion // CLI: notion

View File

@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_Slack.os // OneScript: ./OInt/core/Modules/OPI_Slack.os
// Lib: Slack // Lib: Slack
// CLI: slack // CLI: slack

View File

@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_Telegram.os // OneScript: ./OInt/core/Modules/OPI_Telegram.os
// Lib: Telegram // Lib: Telegram
// CLI: telegram // CLI: telegram

View File

@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_Twitter.os // OneScript: ./OInt/core/Modules/OPI_Twitter.os
// Lib: Twitter // Lib: Twitter
// CLI: twitter // CLI: twitter

View File

@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_VK.os // OneScript: ./OInt/core/Modules/OPI_VK.os
// Lib: VK // Lib: VK
// CLI: vk // CLI: vk

View File

@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_Viber.os // OneScript: ./OInt/core/Modules/OPI_Viber.os
// Lib: Viber // Lib: Viber
// CLI: viber // CLI: viber

View File

@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_YandexDisk.os // OneScript: ./OInt/core/Modules/OPI_YandexDisk.os
// Lib: Yandex Disk // Lib: Yandex Disk
// CLI: yadisk // CLI: yadisk

View File

@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_YandexID.os // OneScript: ./OInt/core/Modules/OPI_YandexID.os
// Lib: Yandex ID // Lib: Yandex ID
// CLI: yandex // CLI: yandex

View File

@ -1,4 +1,4 @@
// OneScript: ./OInt/tools/Modules/internal/Modules/OPI_Инструменты.os // OneScript: ./OInt/tools/Modules/internal/Modules/OPI_Инструменты.os
// MIT License // MIT License

View File

@ -1,4 +1,4 @@
// OneScript: ./OInt/tools/Modules/internal/Modules/OPI_Криптография.os // OneScript: ./OInt/tools/Modules/internal/Modules/OPI_Криптография.os
// MIT License // MIT License

View File

@ -1,4 +1,4 @@
// OneScript: ./OInt/tools/Modules/OPI_ПолучениеДанныхТестов.os // OneScript: ./OInt/tools/Modules/OPI_ПолучениеДанныхТестов.os
// MIT License // MIT License

View File

@ -1,4 +1,4 @@
// OneScript: ./OInt/tools/Modules/OPI_ПреобразованиеТипов.os // OneScript: ./OInt/tools/Modules/OPI_ПреобразованиеТипов.os
// MIT License // MIT License

View File

@ -1,4 +1,4 @@
// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os // OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os
// MIT License // MIT License