Нужны более компактные / удобочитаемые обозначения для контекстных меню - PullRequest
0 голосов
/ 03 октября 2018

Я работаю над дублированием функциональности bbCodeXtra , устаревшего аддона Firefox.

Я создал таблицу, в которой подробно описываются все функции, их иерархия и т. Д.

Используя обычную систему меню, я бы в итоге получил меню, подобные этому:

browser.menus.create({
            id: "test_clipboard",
            title: " &Test Clipboard",
            contexts: ["all"]
        }, onCreated);
browser.menus.create({
            id: "clipboard",
            title: " Check Clipboard",
            contexts: ["all"]
        }, onCreated);

Это могло бы привести к таким выражениям, как это:

browser.menus.onClicked.addListener((info, tab) => {
    switch (info.menuItemId) {
        case "test_clipboard":
            browser.tabs.sendMessage(tab.id,{runwhat: "zzBBCode", ParseArg: "[b]{{selection}}[/b]"});
        break;
        case "clipboard":
            browser.tabs.sendMessage(tab.id,{runwhat: "zzBBCode", ParseArg: "[b]{{selection}}[/b]"});
        break;
    }
});

Дело в том,что между различными опциями (не включая пользовательские теги пользователей) у меня более 100 опций меню.(У вас есть подменю для bbCode, Vbulletin, markdown, html, xml и т. Д. И подменю под каждым из них)

Я бы предпочел сделать такую ​​таблицу, которую я уже в значительной степениустановить в электронной таблице (не издевайтесь надо мной), что будет примерно так:

| Menu ID | Menu Title | Parent ID | Contexts | Code to Execute |
| MenuID1 | MenuTitle1 | ParentID1 | Context1 | Code to Execut1 |
| MenuID2 | MenuTitle2 | ParentID2 | Context2 | Code to Execut2 |

Я думаю, что в этом случае структура меню, представленная в каком-либо табличном формате, упростит написание иотладка меню.

Мой вопрос заключается в том, может ли какой-нибудь трюк с массивами / объектами / программированием позволить мне сделать это?

По сути, можно было бы определить, чтово всех меню с первого взгляда, вместо того, чтобы медленно пробираться вниз к каждому пункту меню для устранения неполадок.

Видя, как мой код настолько уродлив, что он, вероятно, вызывает рак, я полагаю, что ядолжен сделать его как можно более читабельным, когда я или мой еще не раковый преемник попытаемся обновить или сохранить его.

Окончательная структура меню должна выглядеть примерно таккак это: Структура меню изображения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...