Данные патчи действуют при генерации кода во всех поддерживаемых языках программирования. В данных патчах также интегрирован мой предыдущий патч
Case икона с текстом ElseИзменении логики генерации кода макроиконы ПереключательВ настоящее время для
Переключателя можно задавать только условия типа:
a=1 ,
a=2 ,
a=3 и т.д. То есть можно задавать условия только со знаком равенства, а также пустую икону которая означает
Else . Например:
Тут я вижу две проблемы.
1) Невозможно задавать условия без знака равенства, например
a<5 ,
a>5 или более сложные условия, например такое условие:
a>5 || b=>3 && c<=6 .
2) С эргономической точки зрения, считаю неудобным, когда одна часть условия пишется в одной иконе, а другая в другой. То есть, чтобы прочитать условие нужно смотреть на две иконы.
Я сделал несколько различных вариантов патчей, которые могут решить данную проблему.
Вариант 1 В данном варианте патча, из иконы
Select код вообще не генерируется, в него можно писать все что угодно. Код генерируется только из икон
Case . В данном варианте условие целиком пишется в икону
Case . Условия можно писать любой сложности. Например:
Плюсы:
1) Можно задавать любые виды условий.
2) Условие находится целиком в иконе
Case .
3) Можно в иконе Select писать любой текст и он не перейдет в код.
Недостатки:
1) Нарушается совместимость с диаграммами которые составлены с учетом нынешней логики генерации макроиконы
Переключатель .
2) Невозможность генерации диаграм типа
state machine (так как нарушается логика генерации
Переключателя , который ему необходим).
Вариант 2В данном варианте патча, если в иконе
Select мы пишем текст в котором первое слово
Select (не чувствителен к регистру букв), то используется вариант генерации как и в патче
Варианте 1 . Если в иконе
Select первое слово не
Select, то используется вариант генерации кода которую сейчас использует DRAKON Editor.
Плюсы:
1) Можно задавать любые виды условий.
2) Возможно условие задавать целиком в иконе
Case .
3) Хорошо совместим с диаграммами которые создавались с учетом нынешней логики генерации. Совместимость нарушается только лишь в случае, если в иконе
Select первое слово было
Select .
4) Можно в иконе Select писать любой текст (кроме первого слова
Select ) и он не перейдет в код.
5) Работа с диаграммами типа
state machine не нарушается.
Вариант 3В данном варианте патча, если в иконе
Select мы пишем текст в котором первое слово
Receive (не чувствителен к регистру букв), то используется нынешний вариант генерации кода (это нужно для возможности генерировать код из диаграмм типа
state machine). В остальных случаях используется вариант генерации кода как и в патче
Вариант 1 .
Плюсы:
1) Можно задавать любые виды условий.
2) Условие находится целиком в иконе
Case .
3) Можно в иконе Select писать любой текст (кроме первого слова
Receive ) и он не перейдет в код.
4) Работа с диаграммами типа
state machine не нарушается.
Недостатки:
1) Нарушается совместимость с диаграммами которые составлены с учетом нынешней логики генерации макроиконы
Переключатель .
Какой из патчей лучше всего включить в DRAKON EditorЕсли нужно выбирать из этих трех вариантов, то на мой взгляд больше подходит
Вариант 2 .
Но на мой взгляд есть возможность сделать еще лучше. Есть патч
Вариант 4 .
Вариант 4Данный патч работает следующим образом:
В файле
generators.tcl в процедуре
p.replace_select_ifs если переменная
gen_core_mode принимает значение
1 то логика генератора
Переключателя работает как сейчас. Если значение переменной
gen_core_mode равно
2 , то логика переключателя работает как в патче
Вариант 3. Все это уже сделано и работает.
К этому нужно еще добавить, чтобы было возможно в окне выбора языка (примерно там где сейчас красный квадрат) иметь возможность выбирать тип генератора: нынешний вариант или как в патче Вариант 3:
Этот выбор нужно связать с переменной
gen_core_mode из процедуры
p.replace_select_ifs которая находится в файле
generators.tcl . Также было бы хорошо чтобы в файл с расширением
.drn хранилась информация о выбранном типе генератора. А если файл создан в версии DRAKON Editor в котором возможность выбора не была, то при открытии в версии с выбором автоматически выбирался бы нынешний вариант генерирования кода. Был бы рад если бы кто-нибудь сделал недостающую часть патча
Вариант 4, к сожалению у меня с этой частью трудности.
Плюсы:
1) Можно задавать любые виды условий.
2) Условие находится целиком в иконе
Case .
3) Можно в иконе Select писать любой текст (кроме первого слова
Receive ) и он не перейдет в код.
4) Совместимость с диаграммами которые создавались с учетом нынешней логики генерации никак не нарушается.
5) Работа с диаграммами типа
state machine никак не нарушается.
Установка патчаДля установки выбранного патча, файлы из архива скопируйте с заменой в папку
scripts .