UNPKG

@launchmenu/applet-notes

Version:
96 lines (93 loc) 6.27 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.regexTokenizer = exports.setSearchPatternAction = void 0; const core_1 = require("@launchmenu/core"); const react_1 = __importDefault(require("react")); /** * An action to edit a search pattern */ exports.setSearchPatternAction = core_1.createContextAction({ name: "Set search pattern", contextItem: { icon: "edit", name: "Set search pattern", priority: [core_1.Priority.MEDIUM, core_1.Priority.MEDIUM - 7], content: (react_1.default.createElement(core_1.ReactMarkdown, null, ` Edits a search pattern, which can be 1 of three things: - Disabled: Enter only white spaces - A prefix: Enter normal text - Regex: Enter a regular expression between \`/\` characters. E.g. \`\`\`regex /^word\\s*:/ \`\`\` When regex is used, any non match text will be used as the search text. In addition capture groups prefixed with \`t_\` in order to also be considered text. E.g. a pattern to only match words prefixed with 'word': \`\`\`regex /^word\\s*:\\s*(?<t_smth>\w+)$/ \`\`\` or prefixed with \`c_\` followed by a css color for highlighting. E.g.: \`\`\`regex /^(?<c_f0f>test)\s*:/ \`\`\` `)), }, core: (fields) => { const getExecuteBindings = () => fields.map(field => core_1.promptInputExecuteHandler.createBinding({ field, highlighter: exports.regexTokenizer, })); return { // Return the bindings for executing the action in the menu actionBindings: getExecuteBindings, // As well as some result for programmatic access for extension result: { execute: ({ context }) => core_1.executeAction.execute(context, [ { actionBindings: getExecuteBindings() }, ]), getInputBindings: getExecuteBindings, }, }; }, }); /** * The regex tokenizer, but only if started with '/' * multigroup lexer: https://github.com/SAP/chevrotain/blob/master/examples/lexer/multi_mode_lexer/multi_mode_lexer.js */ exports.regexTokenizer = new core_1.HighlightLexer({ defaultMode: "unknown", modes: { unknown: core_1.createHighlightTokens({ regexStart: { pattern: /\//, tags: [core_1.highlightTags.operator], push_mode: "regex", }, textStart: { pattern: /./, tags: [], push_mode: "text" }, }).tokenList, // The regex matcher regex: core_1.createHighlightTokens({ group: { pattern: /\(|\)/, tags: [core_1.highlightTags.bracket, core_1.highlightTags.keyword], }, bracket: { pattern: /\<|\>|\[|\]|\{|\}/, tags: [core_1.highlightTags.bracket, core_1.highlightTags.literal], }, operator: { pattern: /\*|\+|\?|\||\!|\$|\^|\//, tags: [core_1.highlightTags.operator], }, charType: { pattern: /\\\w/, tags: ["charType"] }, words: { pattern: /./, tags: ["word"] }, }).tokenList, // The literal matcher text: core_1.createHighlightTokens({ text: { pattern: /./, tags: [] }, }).tokenList, }, }); // TODO: create a regex grammar in order to highligh syntax errors //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0U2VhcmNoUGF0dGVybkFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbnRlcmZhY2UvY2F0ZWdvcmllcy9hY3Rpb25IYW5kbGVycy9zZXRTZWFyY2hQYXR0ZXJuQWN0aW9uLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwyQ0FXMEI7QUFDMUIsa0RBQTBCO0FBRTFCOztHQUVHO0FBQ1UsUUFBQSxzQkFBc0IsR0FBRywwQkFBbUIsQ0FBQztJQUN0RCxJQUFJLEVBQUUsb0JBQW9CO0lBQzFCLFdBQVcsRUFBRTtRQUNULElBQUksRUFBRSxNQUFNO1FBQ1osSUFBSSxFQUFFLG9CQUFvQjtRQUMxQixRQUFRLEVBQUUsQ0FBQyxlQUFRLENBQUMsTUFBTSxFQUFFLGVBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2hELE9BQU8sRUFBRSxDQUNMLDhCQUFDLG9CQUFhLFFBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YUFtQmYsQ0FBaUIsQ0FDckI7S0FDSjtJQUNELElBQUksRUFBRSxDQUFDLE1BQXdCLEVBQUUsRUFBRTtRQUMvQixNQUFNLGtCQUFrQixHQUFHLEdBQUcsRUFBRSxDQUM1QixNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQ2YsZ0NBQXlCLENBQUMsYUFBYSxDQUFDO1lBQ3BDLEtBQUs7WUFDTCxXQUFXLEVBQUUsc0JBQWM7U0FDOUIsQ0FBQyxDQUNMLENBQUM7UUFFTixPQUFPO1lBQ0gsMkRBQTJEO1lBQzNELGNBQWMsRUFBRSxrQkFBa0I7WUFDbEMsK0RBQStEO1lBQy9ELE1BQU0sRUFBRTtnQkFDSixPQUFPLEVBQUUsQ0FBQyxFQUFDLE9BQU8sRUFBYyxFQUFFLEVBQUUsQ0FDaEMsb0JBQWEsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO29CQUMzQixFQUFDLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxFQUFDO2lCQUN6QyxDQUFDO2dCQUNOLGdCQUFnQixFQUFFLGtCQUFrQjthQUN2QztTQUNKLENBQUM7SUFDTixDQUFDO0NBQ0osQ0FBQyxDQUFDO0FBRUg7OztHQUdHO0FBQ1UsUUFBQSxjQUFjLEdBQUcsSUFBSSxxQkFBYyxDQUFDO0lBQzdDLFdBQVcsRUFBRSxTQUFTO0lBQ3RCLEtBQUssRUFBRTtRQUNILE9BQU8sRUFBRSw0QkFBcUIsQ0FBQztZQUMzQixVQUFVLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsSUFBSSxFQUFFLENBQUMsb0JBQWEsQ0FBQyxRQUFRLENBQUM7Z0JBQzlCLFNBQVMsRUFBRSxPQUFPO2FBQ3JCO1lBQ0QsU0FBUyxFQUFFLEVBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUM7U0FDekQsQ0FBQyxDQUFDLFNBQVM7UUFDWixvQkFBb0I7UUFDcEIsS0FBSyxFQUFFLDRCQUFxQixDQUFDO1lBQ3pCLEtBQUssRUFBRTtnQkFDSCxPQUFPLEVBQUUsT0FBTztnQkFDaEIsSUFBSSxFQUFFLENBQUMsb0JBQWEsQ0FBQyxPQUFPLEVBQUUsb0JBQWEsQ0FBQyxPQUFPLENBQUM7YUFDdkQ7WUFDRCxPQUFPLEVBQUU7Z0JBQ0wsT0FBTyxFQUFFLG1CQUFtQjtnQkFDNUIsSUFBSSxFQUFFLENBQUMsb0JBQWEsQ0FBQyxPQUFPLEVBQUUsb0JBQWEsQ0FBQyxPQUFPLENBQUM7YUFDdkQ7WUFDRCxRQUFRLEVBQUU7Z0JBQ04sT0FBTyxFQUFFLHlCQUF5QjtnQkFDbEMsSUFBSSxFQUFFLENBQUMsb0JBQWEsQ0FBQyxRQUFRLENBQUM7YUFDakM7WUFDRCxRQUFRLEVBQUUsRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFDO1lBQy9DLEtBQUssRUFBRSxFQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUM7U0FDeEMsQ0FBQyxDQUFDLFNBQVM7UUFDWixzQkFBc0I7UUFDdEIsSUFBSSxFQUFFLDRCQUFxQixDQUFDO1lBQ3hCLElBQUksRUFBRSxFQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBQztTQUNqQyxDQUFDLENBQUMsU0FBUztLQUNmO0NBQ0osQ0FBQyxDQUFDO0FBRUgsa0VBQWtFIn0=