UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

64 lines (46 loc) 1.81 kB
import { JSHINT } from 'jshint'; if (typeof window !== 'undefined') { require('codemirror/addon/lint/lint.css'); require('codemirror/addon/lint/lint'); // eslint-disable-next-line @typescript-eslint/no-var-requires var CodeMirror = require('codemirror'); var parseErrors = function parseErrors(errors, output) { for (var i = 0; i < errors.length; i++) { var error = errors[i]; if (error) { if (error.line <= 0) { if (window.console) { window.console.warn("Cannot display JSHint error (invalid line ".concat(error.line, ")"), error); } continue; } var start = error.character - 1; var end = start + 1; if (error.evidence) { var index = error.evidence.substring(start).search(/.\b/); if (index > -1) { end += index; } } // Convert to format expected by validation service var hint = { message: error.reason, severity: error.code ? error.code.startsWith('W') ? 'warning' : 'error' : 'error', from: CodeMirror.Pos(error.line - 1, start), to: CodeMirror.Pos(error.line - 1, end) }; output.push(hint); } } }; var validator = function validator(text, options) { if (!options.indent) // JSHint error.character actually is a column index, this fixes underlining on lines using tabs for indentation options.indent = 1; // JSHint default value is 4 JSHINT(text, options, options.globals); var _JSHINT$data = JSHINT.data(), errors = _JSHINT$data.errors; var result = []; if (errors) parseErrors(errors, result); return result; }; CodeMirror.registerHelper('lint', 'javascript', validator); } //# sourceMappingURL=javascript.js.map