summaryrefslogtreecommitdiff
path: root/help3/xhpeditor/cm/addon/lint/yaml-lint.js
diff options
context:
space:
mode:
authorOlivier Hallot <olivier.hallot@libreoffice.org>2020-02-11 15:49:05 -0300
committerOlivier Hallot <olivier.hallot@libreoffice.org>2020-02-11 19:52:21 +0100
commit9b13d491adb09073913c2f4a18e1834b54c44b29 (patch)
treeed0153450d11a5f97efebe1dad691b012d454ffc /help3/xhpeditor/cm/addon/lint/yaml-lint.js
parent96b7217971b02de9789b70e988aa8d03846b6c90 (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.js41
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;
+});
+
+});