Структура проекта - CompPrehension/plugin-draw-io GitHub Wiki

Весь проект написан на языке JavaScript, так как пользовательские плагины для Draw.io пишутся на данном языке. Далее будут описаны ветки репозитория и их предназначения.

Ветка parser-jison

В данной ветке находится парсер выражений. Правила для лексера и парсера находятся в файле parser.jison. Правила для парсера и лексера написаны с помощью библиотеки Jison. Написание грамматик и структура парсера схожа с Bison. В файле create_nodes.js находятся структуры и функции для создания абстрактного синтаксического дерева. В файле print_tree.js находятся функции для вывода абстрактного синтаксического дерева. В файле autotests.js находятся тесты для тестирования парсера.

Генерация парсера

Для того чтобы сгенерировать парсер нужно установить пакеты npm. Для этого следует выполнить команду:

npm install

Далее для генерации парсера нужно выполнить команду:

node generateParse.js > parser.js

Сгенерированный парсер будет находится в файле parser.js.

Ветка test_site_blockly

В данной ветке находится сайт для составления выражений с помощью языка выражений и блоков из Blockly. После генерации парсера в ветке parser-jison, файл parser.js и create_nodes.js следует обновить и в данной ветке. В файлах blocks_definition.js и blocks_generator.js находятся определения блоков и генерация текста из этих блоков. Для определения блоков используется библиотека Blockly. В файле toolbox.js находится определение левого меню в рабочей области Blockly. В файле code_to_block.js определены функции для перевода написанного языка выражения в блоки Blockly. В файле semantic.js находится функция для определения верхнего типа выражения. Для трансляции языка выражения в XML используется Blockly. Однако синтаксис XML из Blockly нам не подходит, поэтому для преобразования XML из Blockly в нужный нам формат используется XSL. Код экспорта в XML и его преобразование находится в файле script.js. Данная ветка выведена на хостинг-платформе netlify, для того чтобы можно легко проверить уже составленные выражения или составить выражения через блоки или с помощью языка выражений https://test-site-blockly--creative-pony-d30fc3.netlify.app/

Ветка plagin-draw-io

В данной ветке находятся исходники плагина. Файл main.js является главным файлом, где находится загрузка и формирование плагина. В папках находятся вспомогательные функции и классы, которые используются в главном файле. В папке dictionaries находятся классы и функции для отображения окон конструкторов словарей и создания словарей. В папке tree_nodes находятся функции и классы для отображения конструкторов узлов и их создания. В папке export находятся функции для экспорта словарей и всего дерева целиком. В папке utils находятся файлы из предыдущих веток с парсером языка выражения и блоков Blockly.

Для того, чтобы сгенерировать цельный файл плагина необходимо выполнить команду:

sh build.sh

После этого в папке build сформируется файл plugin.js, который можно уже импортировать в Draw.io.

Ветка main

В данной ветке находится конечный вариант плагина. В папке chrome_plugin находится версия плагина для хрома для использования плагина в веб версии Draw.io. В папке plugin находится версия плагина для десктопной версии Draw.io

⚠️ **GitHub.com Fallback** ⚠️