Page 2 of 3

Posted: 18.08.2023 13:18
by main Alexey
исправил этот баг. будет в обновлении.

Posted: 18.08.2023 14:42
by bb.slipers
Спасибо.
У меня вопрос по руссификации плагинов - меню, интерфейс.
Подскажите как это сделать максимально корректно (если такое возможно, что бы при их обновлении не потерять локализацию).

Posted: 18.08.2023 14:47
by main Alexey
плагины переводятся пакетами -
https://sourceforge.net/projects/cudate ... anslation/
самые свежие пакеты мне присылают для de_AT.
делаются переводы софтом для .pot файлов.

в коде они должны вызывать функцию _

Code: Select all

from cudax_lib import get_translation
_ = get_translation(__file__)  # I18N

Posted: 19.08.2023 10:53
by bb.slipers
переделать code-tree?
Провел вчера весь день в раздумьях.
По итогу под конец прибывал в печали.
Алексей, боюсь без вашей помощи нам не справится (во всяком случае быстро и качественно)
Я прочитал много всего на форуме, знаю что вас много что просили сделать, а потом это оставалось невостребованым и даже без фитбеков.
Это не тот случай точно. Нам это очень нужно. Не переделать, а немного доделать (хотя когда я пишу "немного" я насамом деле не представляю объем доработок).

Было бы классно если бы в code-tree было бы 2 колонки: одна как сейчас - основной элемент структуры, а вторая коментарий который написан в той же строке где определен элемент структуры.
У каждого лексера свой символ однострочного коментария (многострочные не рассматриваем): -- (lua); # (yalm); // (javascript) и так далее.
Если еще сделать возможным отбор (содержит, начинается с, регулярное выражение) и сортировку по данной колонке будет вообще супер. Это позволит структурировать любые тексты использующие тот или иной язык разметки.
Нам конечно интересует прежде всего yaml на нем можно поэкперементировать, например:

Code: Select all

- ivan: " # Иван и Питер
  Привет Питер! Как хорошо, что я застал тебя дома" 
  scene: petr_home # Дом Питера
В code-tree:

Code: Select all

- ivan.......................|Иван и Питер
  scene......................|Дом Питера

Posted: 19.08.2023 15:22
by main Alexey
могу помоч. мне не трудно попробовать доработать yaml.
выводить не в колонку конечно (в "дереве" нет колонок) а просто в пункт дерева после пробела или чего-то.
смотрим на ваш пример

Code: Select all

- ivan: " # Иван и Питер
  Привет Питер! Как хорошо, что я застал тебя дома"
  scene: petr_home # Дом Питера
тут коммент стоит только после 'scene'.
его я попробую добавить в дерево.

а после 'ivan' стоит не комент, а строка (которая включает в себя как бы комент но это всее равно строка).
тогда на строке 'ivan' доделка не сработает.
как быть?

Posted: 19.08.2023 15:29
by main Alexey
вот доделка.
на скрине.
я открыл yaml file в SynWrite. там открыл диалог Lexer Properties. там нашел элемент списка 'Block', и дляя него поправил 'name format string'
%s0 --> %sz0.

после чего дерево стало выводить хвост от токкена-0.

%s0 - вывести токен 0
%sz0 - вывести токен 0 и все до конца строки
(что тут можно вводить, описано в одном из lexer tutorial)

сделайту эту правку в копии лексера yaml.

Posted: 19.08.2023 15:35
by main Alexey
думаю что делать эту правку в моем лексере не хорошо, дерево становится слишком детальным и не красиво.

Posted: 19.08.2023 18:09
by bb.slipers
Алексей, я попробывал то как вы посоветовали, это немного не то - это вывод всей строки, а важно выводить только то что после комментария.
Есть особенность в том когда код или размеченный документ пишут дети или для них, там очень большое количество именно in-line комментариев.
Вот небольшой реальный пример (и без этого невозможно двигаться вперед, дети забывают о том, что у них в каждой строке).
Так со всем: с кодом, с документом в разметке (html, css, yalm, json) это особенность детского восприятия.
Особенно когда код на английском, а коментарии на русском (их ценность возрастает, плюс появляется
смысл учить писать их структурно). Беда, но почему-то разработчики редакторов не задумываются,
что возраст аудитории их пользователей от 7+, а это совсем другой мир.

Code: Select all

local unicode=require("unicode") -- библиотека для работы с русскими строками
local term = require("term") -- библиотека для работы с терминалом
local gpu = term.gpu() -- получаем видеокарту подключенную к терминалу
term.clear() -- очищаем экран терминала

local function str2tab(str) -- функция конвертирует строку в таблицу из символов
    tab = {} -- создание пустой таблицы
    string.gsub(str,'.', function(s) tab[#tab+1]=s end) -- заполнение таблицы
    return tab -- возврат результата
end

local summ = math.random(5,10)*1000 -- сумма в сейфе
local code = string.gsub("****",'.', function(s) return tostring(math.random(0,9)) end) -- код от сейфа
print("Код от сейфа: " .. code) -- вывод на экран кода от сейфа

while true do -- игровой цикл
    io.write("\n".."Введите 4 цифры кода (СТОП - завершить): "); var = tostring(io.read()) -- ввод варианта кода
    var = unicode.sub(var,1,4) -- оставим только 4 первых символа введенного кода
    if var == "СТОП" then os.exit() end -- выход по "СТОП"

    local corr = 0 -- число угаданых чисел
    local color = nil -- цвет печати символа
    local vartab = str2tab(var) -- вариант кода как таблица
    local codetab = str2tab(code) -- код от сейфа как таблица

    for i,v in pairs(vartab) do -- для каждого разряда варианта
        color = 0xFFFFFF -- белый цвет
        for j,w in pairs(codetab) do -- для каждого разряда кода
            if v == w and i == j then
                color = 0x33FF5E -- зеленый цвет
                corr = corr + 1 -- увеличиваем количество угаданных цифр на 1
                codetab[j] = "" -- очищаем разряд кода (мы его уже использовали)
                break -- выходим из цикла
            elseif v == w then
                color = 0xFCFF33 -- желтый цвет 
                codetab[j] = "" -- очищаем разряд кода (мы его уже использовали)
            end
        end
        gpu.setForeground(color); io.write(v) -- вывод значения цветом
    end
    gpu.setForeground(0xFFFFFF) -- отключаем цвета
    if corr == 4 then
        gpu.setForeground(0xFF0000) -- переключаемся на красный цвет текста
        io.write("\n".."Остаток в сейфе: "..summ) -- выводим остаток в сейфе
        break -- выходим из игрового цикла
    else
        if summ ~=0 then summ = summ - 1000 end
        summ = math.max(0,summ-1000) -- уменьшаем сумму пока она не станет равной 0
    end 
end

Posted: 19.08.2023 18:23
by bb.slipers
Пока писал предыдущий ответ понял, что для файла приведенного в пример Дерево кода вообще состоит из одной строки (функции).
Это в случае с yalm - отражается каждый структурный элемент, с другими языками все савсем иначе.
Я если честно ожидал, что дерево кода будет напоминать дерево свертки блоков кода в редакторе.
наверно для этого нужно писать отдельный плагин, причем в нижнюю панель.
Я могу максимально точно с примерами описать что-бы хотелось получить
в итоге.

Posted: 19.08.2023 18:27
by main Alexey
>>Пока писал предыдущий ответ понял, что для файла приведенного в пример Дерево кода вообще состоит из одной строки (функции).
Я если честно ожидал, что дерево кода будет напоминать дерево свертки блоков кода в редакторе.
наверно для этого нужно писать отдельный плагин, причем в нижнюю панель.
можно и просто поправить лексер чтобы в дерево вывести не только ф-ции - а также if/else/for/while....
это легко для меня. помогу сделать копию лексера Питон с этим.