1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-11-25 22:12:29 +02:00

Правки и расширение скриптов автодокументации

This commit is contained in:
Anton Titovets
2025-11-04 19:22:29 +03:00
parent 68389be810
commit 1c45356c46
15 changed files with 343 additions and 178 deletions

124
ci/os/docs_main.os vendored
View File

@@ -24,9 +24,15 @@
Перем КаталогИнструкцийОригинал;
Перем КаталогИнструкцийЛокализация;
Перем СоответствиеМетодовПутям;
Перем ИменаБиблиотек;
Процедура ПриСозданииОбъекта()
ЧтениеJSON = Новый ЧтениеJSON();
ЧтениеJSON.ОткрытьФайл("./media/catalogs/names.json");
ИменаБиблиотек = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
Языки = Новый Массив();
Языки.Добавить("ru");
Языки.Добавить("en");
@@ -49,6 +55,7 @@
КаталогПримеров = "./docs/" + Язык + "/examples/";
КаталогЗначений = "./docs/" + Язык + "/data/";
КаталогCLI = "./docs/" + Язык + "/cli/";
СписокОбластей = Новый СписокЗначений();
ТекущаяОбласть = "";
СчетчикОбласти = 0;
@@ -61,12 +68,16 @@
ПолучитьТаблицуТранслитации();
ПроверитьСоздатьКаталог(КаталогДокументации);
СоздатьФайлыДокументации();
СоздатьЗаглушкиИнструкций();
ЗапуститьПриложение(СтрШаблон("robocopy ""./Melezh/docs/%1/md/Melezh"" ""./docs/%1/md/Addons/Melezh"" /MIR", Язык));
КопироватьФайл(СтрШаблон("./Melezh/docs/%1/md/Melezh.mdx", Язык), СтрШаблон("./docs/%1/md/Addons/Melezh.mdx", Язык));
КонецЦикла;
ДополнитьФайлСтиля();
СоздатьЗаглушкиИконок();
КонецПроцедуры
#Область СлужебныеПроцедурыИФункции
@@ -206,6 +217,41 @@
КонецПроцедуры
Процедура СоздатьЗаглушкиИнструкций()
СписокИнструкций = Новый СписокЗначений();
Для Каждого СуществующаяИнструкция Из НайтиФайлы("КаталогИнструкцийЛокализация", "*.md") Цикл
СписокИнструкций.Добавить(СуществующаяИнструкция.ИмяБезРасширения);
КонецЦикла;
ШаблонИнструкции = "---
|id: %1
|sidebar_class_name: %1
|%2
|---
|
|<img src={require('../../static/img/APIs/%1.png').default} width='64px' />
|
|# %1";
Если ТекущийЯзык = "ru" Тогда
ШаблонТегов = "keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, %1]";
Иначе
ШаблонТегов = "keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, %1]";
КонецЕсли;
Для Каждого Библиотека Из ИменаБиблиотек Цикл
Если СписокИнструкций.НайтиПоЗначению(Библиотека) = Неопределено Тогда
ТекущиеТеги = СтрШаблон(ШаблонТегов, Библиотека);
ПолучитьДвоичныеДанныеИзСтроки(СтрШаблон(ШаблонИнструкции, Библиотека, ТекущиеТеги)).Записать(КаталогИнструкцийЛокализация + СтрШаблон("/%1.md", Библиотека));
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область РазборМодуля
@@ -562,6 +608,84 @@
#КонецОбласти
#Область ПрочиеФайлы
Процедура ДополнитьФайлСтиля()
ПутьКФайлуСтиля = "/docs/docusaurus/src/css/custom.css";
ТекстовыйДокумент = Новый ТекстовыйДокумент();
ТекстовыйДокумент.Прочитать(ТекстовыйДокумент);
НомерСтрокиГенерации = Неопределено;
Для Н = 1 По ТекстовыйДокумент.КоличествоСтрок() Цикл
Если СтрНайти(ТекстовыйДокумент.ПолучитьСтроку(Н), "AUTOGENERATED") > 0 Тогда
НомерСтрокиГенерации = Н;
КонецЕсли;
КонецЦикла;
Если НомерСтрокиГенерации = Неопределено Тогда
ВызватьИсключение "Строка с отметкой начала генерации не найдена в custom.css";
КонецЕсли;
Пока ТекстовыйДокумент.КоличествоСтрок() > НомерСтрокиГенерации Цикл
ТекстовыйДокумент.УдалитьСтроку(ТекстовыйДокумент.КоличествоСтрок());
КонецЦикла;
МассивКлассов = Новый Массив;
МассивСтилей = Новый Массив;
Для Каждого ИмяБиблиотеки Из ИменаБиблиотек Цикл
МассивКлассов.Добавить(СтрШаблон(".%1 a::before,", ИмяБиблиотеки));
МассивСтилей.Добавить(СтрШаблон(".%1 > div > a::before{
| content: url(../../static/img/APIs/small/%1.png);
|}", ИмяБиблиотеки));
КонецЦикла;
ТекстВставки = СтрСоединить(МассивКлассов, Символы.ПС);
ТекстВставки = ТекстВставки + "{
| padding-right: 0.7rem;
| padding-top: 0.4rem;
|}
|
|";
ТекстВставки = ТекстВставки + СтрСоединить(МассивСтилей, Символы.ПС + Символы.ПС);
ОбщийТекст = ТекстовыйДокумент.ПолучитьТекст() + Символы.ПС + ТекстВставки;
ПолучитьДвоичныеДанныеИзСтроки(ОбщийТекст).Записать(ПутьКФайлуСтиля);
КонецПроцедуры
Процедура СоздатьЗаглушкиИконок()
ПутьКаталогаИконок = "/docs/docusaurus/static/img/APIs/";
ПутьКаталогаМаленькихИконок = "/docs/docusaurus/static/img/APIs/small/";
СоздатьЗаглушкиВКаталоге(ПутьКаталогаИконок);
СоздатьЗаглушкиВКаталоге(ПутьКаталогаМаленькихИконок);
КонецПроцедуры
Процедура СоздатьЗаглушкиИконок(ПутьКаталога);
Для Каждого ИмяБиблиотеки Из ИменаБиблиотек Цикл
ФайлыИконок = НайтиФайлы(ПутьКаталога, ИмяБиблиотеки + ".png");
Если ФайлыИконок.Количество() = 0 Тогда
КопироватьФайл(ПутьКаталога + "default.png", ПутьКаталога + ИмяБиблиотеки + ".png");
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область Инструменты
Процедура ОчиститьКаталогиДокументов()

View File

@@ -20,6 +20,7 @@
СтрокаТаблицы = "|![%1](../%2.png)| `%1`| %3 |";
МассивТэгов = Новый Массив;
МассивИменБезПробелов = Новый Массив;
Для Каждого КлючЗначение Из СоответствиеКаталога Цикл
@@ -43,11 +44,17 @@
+ Символы.ПС;
МассивТэгов.Добавить(КлючЗначение.Ключ);
МассивИменБезПробелов.Добавить(ИмяБезПробелов);
КонецЦикла;
ПолучитьДвоичныеДанныеИзСтроки(ТаблицаКаталога).Записать("./media/catalogs/Catalog.md");
ЗаписьJSON = Новый ЗаписьJSON();
ЗаписьJSON.ОткрытьФайл("./media/catalogs/names.json");
ЗаписатьJSON(ЗаписьJSON, МассивИменБезПробелов);
ЗаписьJSON.Закрыть();
ДополнитьReadmeОблакомТэгов(МассивТэгов);
КонецПроцедуры

View File

@@ -1,10 +1,3 @@
/**
* Any CSS included here will be global. The classic template
* bundles Infima by default. Infima is a CSS framework designed to
* work well for content-centric websites.
*/
/* You can override the default Infima variables here. */
:root {
--ifm-color-primary: #ffffff;
--ifm-color-primary-dark: #ffffff;
@@ -192,6 +185,200 @@ li > a.menu__link {
justify-content: flex-start;
}
.theme-code-block,.tabs-container{
border: 1px solid rgba(27, 31, 35, 0.15);
border-radius: 16px;
box-shadow: rgba(27, 31, 35, 0.04) 0 1px 0, rgba(255, 255, 255, 0.25) 0 1px 0 inset;
}
/* CSS */
.button {
appearance: none;
background-color: white;
border: 1px solid rgba(27, 31, 35, 0.15);
border-radius: 16px;
box-shadow: rgba(27, 31, 35, 0.04) 0 1px 0, rgba(255, 255, 255, 0.25) 0 1px 0 inset;
box-sizing: border-box;
color: #24292E;
cursor: pointer;
display: inline-block;
font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
font-size: 14px;
font-weight: 400;
line-height: 20px;
list-style: none;
padding: 6px 16px;
position: relative;
transition: background-color 0.2s cubic-bezier(0.3, 0, 0.5, 1);
user-select: none;
-webkit-user-select: none;
touch-action: manipulation;
vertical-align: middle;
white-space: nowrap;
word-wrap: break-word;
}
.button:hover {
background-color: #F3F4F6;
text-decoration: none;
transition-duration: 0.1s;
}
.button:disabled {
background-color: #FAFBFC;
border-color: rgba(27, 31, 35, 0.15);
color: #959DA5;
cursor: default;
}
.button:active {
background-color: #EDEFF2;
box-shadow: rgba(225, 228, 232, 0.2) 0 1px 0 inset;
transition: none 0s;
}
.button:focus {
outline: 1px transparent;
}
.button:before {
display: none;
}
.button:-webkit-details-marker {
display: none;
}
.wp_logo{
margin-right: 5px;
}
[class*='iconExternalLink_'] {
display: none;
}
.falling-icon {
position: absolute;
top: -50px;
width: 40px;
height: auto;
opacity: 0;
animation: falling linear infinite;
will-change: transform;
user-select: none;
pointer-events: none;
}
@keyframes falling {
0% {
transform: translateY(-30px) ;
opacity: 0.3;
}
25% {
opacity: 0;
}
100% {
transform: translateY(calc(100vh + 100px));
opacity: 0;
}
}
/* Адаптивность для мобильных устройств */
@media (max-width: 768px) {
.falling-icon {
width: 30px !important;
}
}
.Messenger > div > a::before{
content: url(../../static/img/Categories/chat.png);
}
.Social > div > a::before{
content: url(../../static/img/Categories/social-media.png);
}
.Database > div > a::before{
content: url(../../static/img/Categories/database.png);
}
.Calendar > div > a::before{
content: url(../../static/img/Categories/calendar.png);
}
.CRM > div > a::before{
content: url(../../static/img/Categories/crm.png);
}
.Exchange > div > a::before{
content: url(../../static/img/Categories/network.png);
}
.Folder > div > a::before{
content: url(../../static/img/Categories/folder.png);
}
.Commerce > div > a::before{
content: url(../../static/img/Categories/e-commerce.png);
}
.Start > div > a::before{
content: url(../../static/img/Categories/welcome.png);
}
.Other > div > a::before{
content: url(../../static/img/Categories/other.png);
}
.AI > div > a::before{
content: url(../../static/img/Categories/ai.png);
}
.WebUI > div > a::before{
content: url(../../static/img/Categories/webui.png);
}
.CL > div > a::before{
content: url(../../static/img/Categories/cl.png);
}
.Info > div > a::before{
content: url(../../static/img/Categories/info.png);
}
.Addons > a::before{
content: url(../../static/img/Categories/addons.png);
}
.Melezh > a::before{
content: url(../../static/img/Categories/melezh.png);
}
.Messenger a::before,
.Social a::before,
.Database a::before,
.Folder a::before,
.Calendar a::before,
.CRM a::before,
.Commerce a::before,
.Start a::before,
.Other a::before,
.AI a:before,
.Exchange a::before,
.Addons a::before,
.Melezh a::before,
.CL a::before,
.WebUI a::before,
.Info a::before{
padding-right: 0.7rem;
padding-top: 0.4rem;
}
/* AUTOGENERATED */
.Airtable a::before , .Telegram a::before, .VK a::before, .Viber a::before, .Twitter a::before,
.Notion a::before, .GoogleCalendar a::before, .GoogleDrive a::before, .GoogleSheets a::before,
.Slack a::before, .YandexDisk a::before, .Dropbox a::before, .Bitrix24 a::before, .Messenger a::before,
@@ -199,7 +386,7 @@ li > a.menu__link {
.VKTeams a::before, .S3 a::before, .TCP a::before, .Neocities a::before, .CDEK a::before, .Start a::before,
.Other a::before, .SQLite a::before, .PostgreSQL a::before, .GreenAPI a::before, .RCON a::before, .MySQL a::before, .MSSQL a::before, .AI a:before,
.Ollama a::before, .Exchange a::before, .HTTP a::before, .OpenAI a::before, .Addons a::before, .Melezh a::before, .CL a::before, .WebUI a::before,
.Info a::before, .FTP a::before, .SFTP a::before, .SSH a::before, .GreenMax a::before{
.Info a::before, .FTP a::before, .SFTP a::before, .SSH a::before, .GreenMax a::before, .MongoDB a::before{
padding-right: 0.7rem;
padding-top: 0.4rem;
}
@@ -308,6 +495,9 @@ li > a.menu__link {
content: url(../../static/img/APIs/small/GreenMax.png);
}
.MongoDB > div > a::before{
content: url(../../static/img/APIs/small/MongoDB.png);
}
.Ollama > div > a::before{
content: url(../../static/img/APIs/small/Ollama.png);
@@ -329,171 +519,3 @@ li > a.menu__link {
content: url(../../static/img/APIs/small/SSH.png);
}
.Messenger > div > a::before{
content: url(../../static/img/Categories/chat.png);
}
.Social > div > a::before{
content: url(../../static/img/Categories/social-media.png);
}
.Database > div > a::before{
content: url(../../static/img/Categories/database.png);
}
.Calendar > div > a::before{
content: url(../../static/img/Categories/calendar.png);
}
.CRM > div > a::before{
content: url(../../static/img/Categories/crm.png);
}
.Exchange > div > a::before{
content: url(../../static/img/Categories/network.png);
}
.Folder > div > a::before{
content: url(../../static/img/Categories/folder.png);
}
.Commerce > div > a::before{
content: url(../../static/img/Categories/e-commerce.png);
}
.Start > div > a::before{
content: url(../../static/img/Categories/welcome.png);
}
.Other > div > a::before{
content: url(../../static/img/Categories/other.png);
}
.AI > div > a::before{
content: url(../../static/img/Categories/ai.png);
}
.WebUI > div > a::before{
content: url(../../static/img/Categories/webui.png);
}
.CL > div > a::before{
content: url(../../static/img/Categories/cl.png);
}
.Info > div > a::before{
content: url(../../static/img/Categories/info.png);
}
.Addons > a::before{
content: url(../../static/img/Categories/addons.png);
}
.Melezh > a::before{
content: url(../../static/img/Categories/melezh.png);
}
.theme-code-block,.tabs-container{
border: 1px solid rgba(27, 31, 35, 0.15);
border-radius: 16px;
box-shadow: rgba(27, 31, 35, 0.04) 0 1px 0, rgba(255, 255, 255, 0.25) 0 1px 0 inset;
}
/* CSS */
.button {
appearance: none;
background-color: white;
border: 1px solid rgba(27, 31, 35, 0.15);
border-radius: 16px;
box-shadow: rgba(27, 31, 35, 0.04) 0 1px 0, rgba(255, 255, 255, 0.25) 0 1px 0 inset;
box-sizing: border-box;
color: #24292E;
cursor: pointer;
display: inline-block;
font-family: -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
font-size: 14px;
font-weight: 400;
line-height: 20px;
list-style: none;
padding: 6px 16px;
position: relative;
transition: background-color 0.2s cubic-bezier(0.3, 0, 0.5, 1);
user-select: none;
-webkit-user-select: none;
touch-action: manipulation;
vertical-align: middle;
white-space: nowrap;
word-wrap: break-word;
}
.button:hover {
background-color: #F3F4F6;
text-decoration: none;
transition-duration: 0.1s;
}
.button:disabled {
background-color: #FAFBFC;
border-color: rgba(27, 31, 35, 0.15);
color: #959DA5;
cursor: default;
}
.button:active {
background-color: #EDEFF2;
box-shadow: rgba(225, 228, 232, 0.2) 0 1px 0 inset;
transition: none 0s;
}
.button:focus {
outline: 1px transparent;
}
.button:before {
display: none;
}
.button:-webkit-details-marker {
display: none;
}
.wp_logo{
margin-right: 5px;
}
[class*='iconExternalLink_'] {
display: none;
}
.falling-icon {
position: absolute;
top: -50px;
width: 40px;
height: auto;
opacity: 0;
animation: falling linear infinite;
will-change: transform;
user-select: none;
pointer-events: none;
}
@keyframes falling {
0% {
transform: translateY(-30px) ;
opacity: 0.3;
}
25% {
opacity: 0;
}
100% {
transform: translateY(calc(100vh + 100px));
opacity: 0;
}
}
/* Адаптивность для мобильных устройств */
@media (max-width: 768px) {
.falling-icon {
width: 30px !important;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 780 B

11
docs/en/md/Instructions/MongoDB.md vendored Normal file
View File

@@ -0,0 +1,11 @@
---
id: MongoDB
sidebar_class_name: MongoDB
---
<img src={require('../../static/img/APIs/MongoDB.png').default} width='64px' />
# MongoDB
This section is dedicated to the library for working with MongoDB. On this page, all the steps necessary to start working are described

View File

@@ -42,6 +42,7 @@
{ type: 'category', link: {type: 'doc', id:'Instructions/SQLite'}, label: 'SQLite', className: 'SQLite', items:[{type: 'autogenerated', dirName: 'SQLite'}]},
{ type: 'category', link: {type: 'doc', id:'Instructions/MySQL'}, label: 'MySQL', className: 'MySQL', items:[{type: 'autogenerated', dirName: 'MySQL'}]},
{ type: 'category', link: {type: 'doc', id:'Instructions/MSSQL' }, label: 'MS SQL Server', className: 'MSSQL', items: [{ type: 'autogenerated', dirName: 'MSSQL' }] },
{ type: 'category', link: { type: 'doc', id: 'Instructions/MongoDB' }, label: 'MongoDB', className: 'MongoDB', items: [{ type: 'autogenerated', dirName: 'MongoDB' }] },
],
},
{