diff options
author | Olivier Hallot <olivier.hallot@libreoffice.org> | 2020-02-11 15:49:05 -0300 |
---|---|---|
committer | Olivier Hallot <olivier.hallot@libreoffice.org> | 2020-02-11 19:52:21 +0100 |
commit | 9b13d491adb09073913c2f4a18e1834b54c44b29 (patch) | |
tree | ed0153450d11a5f97efebe1dad691b012d454ffc /help3/xhpeditor/cm/addon/lint/yaml-lint.js | |
parent | 96b7217971b02de9789b70e988aa8d03846b6c90 (diff) |
xhpeditor: refactor to make CM as component
Move codemirror to a folder to ease maintenance/update
Change-Id: Id1ec9451cc49bd305f53406dcfff8978bd639016
Reviewed-on: https://gerrit.libreoffice.org/c/dev-tools/+/88472
Tested-by: Olivier Hallot <olivier.hallot@libreoffice.org>
Reviewed-by: Olivier Hallot <olivier.hallot@libreoffice.org>
Diffstat (limited to 'help3/xhpeditor/cm/addon/lint/yaml-lint.js')
-rw-r--r-- | help3/xhpeditor/cm/addon/lint/yaml-lint.js | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/help3/xhpeditor/cm/addon/lint/yaml-lint.js b/help3/xhpeditor/cm/addon/lint/yaml-lint.js new file mode 100644 index 00000000..b4ac5abc --- /dev/null +++ b/help3/xhpeditor/cm/addon/lint/yaml-lint.js @@ -0,0 +1,41 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: https://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +// Depends on js-yaml.js from https://github.com/nodeca/js-yaml + +// declare global: jsyaml + +CodeMirror.registerHelper("lint", "yaml", function(text) { + var found = []; + if (!window.jsyaml) { + if (window.console) { + window.console.error("Error: window.jsyaml not defined, CodeMirror YAML linting cannot run."); + } + return found; + } + try { jsyaml.loadAll(text); } + catch(e) { + var loc = e.mark, + // js-yaml YAMLException doesn't always provide an accurate lineno + // e.g., when there are multiple yaml docs + // --- + // --- + // foo:bar + from = loc ? CodeMirror.Pos(loc.line, loc.column) : CodeMirror.Pos(0, 0), + to = from; + found.push({ from: from, to: to, message: e.message }); + } + return found; +}); + +}); |