UNPKG

@nlighten/monaco-json-transform

Version:

JSON Transform language tokenizer (and syntax highlight), hover provider and more

56 lines 2.12 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.registerJsonTransformDSTProvider = exports.jsonTransformDSTProvider = void 0; const tokenizeLine_1 = __importDefault(require("./tokenizeLine")); const LEGEND = { tokenTypes: [ "variable", "variable_deprecated", "member", "context", "annotation", "function", "function_context", "function_deprecated", "comment", "no_style", ], tokenModifiers: ["declaration"], }; exports.jsonTransformDSTProvider = { getLegend: () => LEGEND, provideDocumentSemanticTokens: function (model /*, lastResultId, token*/) { const lines = model.getLinesContent(); const ts = { tokens: [] }; for (let i = 0; i < lines.length; i++) { const line = lines[i]; (0, tokenizeLine_1.default)(line, i, ts); } ts.tokens.sort((a, b) => a.line - b.line || a.char - b.char); const newData = []; let prevLine = 0, prevChar = 0; ts.tokens.forEach(t => { const deltaLine = t.line - prevLine, // translate line to deltaLine deltaStart = prevLine === t.line ? t.char - prevChar : t.char; newData.push(deltaLine, deltaStart, t.length, t.type, t.modifier); prevLine = t.line; prevChar = t.char; }); return { data: new Uint32Array(newData), //ts.data), resultId: undefined, }; }, releaseDocumentSemanticTokens: ( /*resultId*/) => { }, }; /** * Add syntax highlighting in JSON transformers (e.g `$.variable`, `$$date:...`, etc) */ const registerJsonTransformDSTProvider = (monaco) => { monaco.languages.registerDocumentSemanticTokensProvider("json", exports.jsonTransformDSTProvider); }; exports.registerJsonTransformDSTProvider = registerJsonTransformDSTProvider; //# sourceMappingURL=jsonTransformVariablesTokensProvider.js.map