codemirror-infusion
Version:
An Infusion component wrapper for CodeMirror
40 lines (33 loc) • 1.22 kB
JavaScript
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
// Depends on json5.js from https://github.com/aseemk/json5
// declare global: JSON5
(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) {
;
CodeMirror.registerHelper("lint", "json5", function(text, options, cm) {
var found = [];
try {
JSON5.parse(text);
} catch (e) {
var messageGeneric = e.message.indexOf(" at ");
var message = e.message.substring(0, messageGeneric);
var line = e.lineNumber - 1, col = e.columnNumber;
if (e.columnNumber === 0) { // More usefully assign column 0 errors to last character of previous line
--line;
var prevLine = cm.doc.getLine(line);
col = prevLine.length;
}
found.push({from: CodeMirror.Pos(line, col - 1),
to: CodeMirror.Pos(line, col),
message: message});
}
return found;
});
});