Skip to content

Commit

Permalink
Merge pull request #187 from lead-tools/dev
Browse files Browse the repository at this point in the history
Поддержка OneScript, миграция узлов на таблицы и поправки документации
  • Loading branch information
tsukanov-as authored May 4, 2020
2 parents 65ce736 + 14cf531 commit 940f6bf
Show file tree
Hide file tree
Showing 15 changed files with 1,654 additions and 1,258 deletions.
378 changes: 194 additions & 184 deletions book.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion common.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ $list = @{
Консоль = "", "\console\src"
ГлобальноеОкружение = "", "\scope\global\src"
Компилятор = "Примеры\Бакенды", "\examples\backends\Компилятор\src"
ГенераторДокументацииДляПарсера = "Примеры\Бакенды", "\examples\backends\ГенераторДокументацииДляПарсера\src"
Визажист = "Примеры\Плагины - генераторы текста", "\examples\plugins\Визажист\src"
ГенераторДокументацииДляПарсера = "Примеры\Плагины - генераторы текста", "\examples\plugins\ГенераторДокументацииДляПарсера\src"
РекурсивныйПодсчетСерверныхВызововВМодуляхФорм = "Примеры\Плагины - генераторы текста", "\examples\plugins\РекурсивныйПодсчетСерверныхВызововВМодуляхФорм\src"
ПодсчетКогнитивнойСложностиМетодов = "Примеры\Плагины - генераторы ошибок", "\examples\plugins\ПодсчетКогнитивнойСложностиМетодов\src"
ДетекторФункцийБезВозвратаВКонце = "Примеры\Плагины - генераторы ошибок", "\examples\plugins\ДетекторФункцийБезВозвратаВКонце\src"
Expand Down
40 changes: 12 additions & 28 deletions console/src/Консоль/Forms/Форма/Ext/Form.xml
Original file line number Diff line number Diff line change
Expand Up @@ -75,14 +75,14 @@
<Presentation>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>АСД (JSON)</v8:content>
<v8:content>АСД (Дерево)</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>AST (JSON)</v8:content>
<v8:content>AST (Tree)</v8:content>
</v8:item>
</Presentation>
<Value xsi:type="xs:string">АСД</Value>
<Value xsi:type="xs:string">Дерево</Value>
</xr:Value>
</xr:Item>
<xr:Item>
Expand All @@ -92,14 +92,14 @@
<Presentation>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>АСД (Дерево)</v8:content>
<v8:content>Бакенд</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>AST (Tree)</v8:content>
<v8:content>Backend</v8:content>
</v8:item>
</Presentation>
<Value xsi:type="xs:string">Дерево</Value>
<Value xsi:type="xs:string">Бакенд</Value>
</xr:Value>
</xr:Item>
<xr:Item>
Expand All @@ -126,14 +126,10 @@
<Presentation>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Токены</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Tokens</v8:content>
<v8:content>Замены</v8:content>
</v8:item>
</Presentation>
<Value xsi:type="xs:string">Токены</Value>
<Value xsi:type="xs:string">Замены</Value>
</xr:Value>
</xr:Item>
<xr:Item>
Expand All @@ -143,27 +139,14 @@
<Presentation>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Бакенд</v8:content>
<v8:content>Токены</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Backend</v8:content>
</v8:item>
</Presentation>
<Value xsi:type="xs:string">Бакенд</Value>
</xr:Value>
</xr:Item>
<xr:Item>
<xr:Presentation/>
<xr:CheckState>0</xr:CheckState>
<xr:Value xsi:type="FormChoiceListDesTimeValue">
<Presentation>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Замены</v8:content>
<v8:content>Tokens</v8:content>
</v8:item>
</Presentation>
<Value xsi:type="xs:string">Замены</Value>
<Value xsi:type="xs:string">Токены</Value>
</xr:Value>
</xr:Item>
</ChoiceList>
Expand Down Expand Up @@ -423,6 +406,7 @@
</CheckBoxField>
<CheckBoxField name="ИспользоватьКэшАСД" id="164">
<DataPath>ИспользоватьКэшАСД</DataPath>
<Visible>false</Visible>
<TitleLocation>Right</TitleLocation>
<CheckBoxType>Auto</CheckBoxType>
<ContextMenu name="ИспользоватьКэшАСДКонтекстноеМеню" id="165"/>
Expand Down
47 changes: 24 additions & 23 deletions console/src/Консоль/Forms/Форма/Ext/Form/Module.bsl
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@
КонецЕсли;

ЭтотОбъект.Вывод = "Дерево";


ИспользоватьКэшАСД = Ложь;

КонецПроцедуры

&НаКлиенте
Expand Down Expand Up @@ -348,7 +350,9 @@

ЭтотОбъект.Ошибки.Загрузить(Парсер.ТаблицаОшибок());
ЭтотОбъект.КоличествоОшибок = ЭтотОбъект.Ошибки.Количество();


Парсер.Очистить();

КонецПроцедуры

&НаСервере
Expand Down Expand Up @@ -384,12 +388,12 @@

Модуль = Парсер.Разобрать(ТекстМодуля, Окружение);

Модуль = Новый ФиксированнаяСтруктура(Модуль);
//Модуль = Новый ФиксированнаяСтруктура(Модуль);

ЭтотОбъект.АдресКэшаАСД = ПоместитьВоВременноеХранилище(Модуль, ЭтотОбъект.УникальныйИдентификатор);;
ЭтотОбъект.АдресКэшаОшибок = ПоместитьВоВременноеХранилище(Парсер.ТаблицаОшибок().Скопировать(), ЭтотОбъект.УникальныйИдентификатор);
ЭтотОбъект.АдресКэшаТокенов = ПоместитьВоВременноеХранилище(Парсер.ТаблицаТокенов(), ЭтотОбъект.УникальныйИдентификатор);
ЭтотОбъект.ХэшИсходника = НовыйХэшИсходника;
//ЭтотОбъект.АдресКэшаАСД = ПоместитьВоВременноеХранилище(Модуль, ЭтотОбъект.УникальныйИдентификатор);;
//ЭтотОбъект.АдресКэшаОшибок = ПоместитьВоВременноеХранилище(Парсер.ТаблицаОшибок().Скопировать(), ЭтотОбъект.УникальныйИдентификатор);
//ЭтотОбъект.АдресКэшаТокенов = ПоместитьВоВременноеХранилище(Парсер.ТаблицаТокенов(), ЭтотОбъект.УникальныйИдентификатор);
//ЭтотОбъект.ХэшИсходника = НовыйХэшИсходника;

Исключение

Expand All @@ -416,14 +420,16 @@

&НаСервере
Процедура ЗаполнитьУзел(СтрокаДерева, Узел)
Перем Начало, Конец;
Если ТипЗнч(Узел) = Тип("Структура") И Узел.Свойство("Начало", Начало) И Узел.Свойство("Конец", Конец) Тогда
СтрокаДерева.НомерСтроки = Начало.НомерСтроки;
СтрокаДерева.Позиция = Начало.Позиция;
СтрокаДерева.Длина = Конец.Позиция + Конец.Длина - Начало.Позиция;
Если ТипЗнч(Узел) = Тип("СтрокаТаблицыЗначений")
И Узел.Владелец().Колонки.Найти("Начало") <> Неопределено
И Узел.Владелец().Колонки.Найти("Начало") <> Неопределено Тогда
СтрокаДерева.НомерСтроки = Узел.Начало.НомерСтроки;
СтрокаДерева.Позиция = Узел.Начало.Позиция;
СтрокаДерева.Длина = Узел.Конец.Позиция + Узел.Конец.Длина - Узел.Начало.Позиция;
КонецЕсли;
ЭлементыДерева = СтрокаДерева.ПолучитьЭлементы();
Для Каждого Элемент Из Узел Цикл
Для Каждого Колонка Из Узел.Владелец().Колонки Цикл
Элемент = Новый Структура("Ключ, Значение", Колонка.Имя, Узел[Колонка.Имя]);
Если Элемент.Ключ = "Тип" Или Элемент.Ключ = "Начало" Или Элемент.Ключ = "Конец" Тогда
Продолжить;
КонецЕсли;
Expand All @@ -444,24 +450,19 @@
СтрокаДерева.Тип = "Строка";
СтрокаДерева.Значение = Элемент;
Иначе
Элемент.Свойство("Тип", СтрокаДерева.Тип);
Колонка = Элемент.Владелец().Колонки.Найти("Тип");
СтрокаДерева.Тип = ?(Колонка = Неопределено, "СтрокаТаблицыЗначений", Элемент.Тип);
СтрокаДерева.Значение = "<...>";
ЗаполнитьУзел(СтрокаДерева, Элемент);
КонецЕсли;
КонецЦикла;
ИначеЕсли ТипЗнч(Элемент.Значение) = Тип("Структура") Тогда
ИначеЕсли ТипЗнч(Элемент.Значение) = Тип("СтрокаТаблицыЗначений") Тогда
СтрокаДерева = ЭлементыДерева.Добавить();
СтрокаДерева.Имя = Элемент.Ключ;
Если Не Элемент.Значение.Свойство("Тип", СтрокаДерева.Тип) Тогда
СтрокаДерева.Тип = "Структура";
КонецЕсли;
Колонка = Элемент.Значение.Владелец().Колонки.Найти("Тип");
СтрокаДерева.Тип = ?(Колонка = Неопределено, "СтрокаТаблицыЗначений", Элемент.Значение.Тип);
СтрокаДерева.Значение = "<...>";
ЗаполнитьУзел(СтрокаДерева, Элемент.Значение);
ИначеЕсли ТипЗнч(Элемент.Значение) = Тип("СтрокаТаблицыЗначений") Тогда
СтрокаДерева = ЭлементыДерева.Добавить();
СтрокаДерева.Имя = Элемент.Ключ;
СтрокаДерева.Значение = Элемент.Значение.Токен;
СтрокаДерева.Тип = ТипЗнч(Элемент.Значение);
Иначе
СтрокаДерева = ЭлементыДерева.Добавить();
СтрокаДерева.Имя = Элемент.Ключ;
Expand Down
8 changes: 5 additions & 3 deletions docgen.os
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@

ПодключитьСценарий(".\src\ПарсерВстроенногоЯзыка\Ext\ObjectModule.bsl", "ПарсерВстроенногоЯзыка");
ПодключитьСценарий(".\examples\plugins\ГенераторДокументацииДляПарсера\src\ГенераторДокументацииДляПарсера\Ext\ObjectModule.bsl", "ГенераторДокументацииДляПарсера");
ПодключитьСценарий(".\examples\backends\ГенераторДокументацииДляПарсера\src\ГенераторДокументацииДляПарсера\Ext\ObjectModule.bsl", "ГенераторДокументацииДляПарсера");

ЧтениеТекста = Новый ЧтениеТекста(".\src\ПарсерВстроенногоЯзыка\Ext\ObjectModule.bsl");
Исходник = ЧтениеТекста.Прочитать();

ГенераторДокументации = Новый ГенераторДокументацииДляПарсера;

ПарсерВстроенногоЯзыка = Новый ПарсерВстроенногоЯзыка;
Результаты = ПарсерВстроенногоЯзыка.Пуск(Исходник, ГенераторДокументации);
АСД = ПарсерВстроенногоЯзыка.Разобрать(Исходник);
Сайт = ГенераторДокументации.Посетить(ПарсерВстроенногоЯзыка, АСД);
ПарсерВстроенногоЯзыка.Очистить();

ЗаписьТекста = Новый ЗаписьТекста(".\docs\index.html");
ЗаписьТекста.Записать(СтрСоединить(Результаты));
ЗаписьТекста.Записать(Сайт);
Loading

0 comments on commit 940f6bf

Please sign in to comment.