// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: https://codemirror.net/LICENSE // Depends on htmlhint.js from http://htmlhint.com/js/htmlhint.js // declare global: HTMLHint ;(function (mod) { if (typeof exports == 'object' && typeof module == 'object') // CommonJS mod(require('../../lib/codemirror'), require('htmlhint')) else if (typeof define == 'function' && define.amd) // AMD define(['../../lib/codemirror', 'htmlhint'], mod) // Plain browser env else mod(CodeMirror, window.HTMLHint) })(function (CodeMirror, HTMLHint) { 'use strict' var defaultRules = { 'tagname-lowercase': true, 'attr-lowercase': true, 'attr-value-double-quotes': true, 'doctype-first': false, 'tag-pair': true, 'spec-char-escape': true, 'id-unique': true, 'src-not-empty': true, 'attr-no-duplication': true, } CodeMirror.registerHelper('lint', 'html', function (text, options) { var found = [] if (HTMLHint && !HTMLHint.verify) { if (typeof HTMLHint.default !== 'undefined') { HTMLHint = HTMLHint.default } else { HTMLHint = HTMLHint.HTMLHint } } if (!HTMLHint) HTMLHint = window.HTMLHint if (!HTMLHint) { if (window.console) { window.console.error('Error: HTMLHint not found, not defined on window, or not available through define/require, CodeMirror HTML linting cannot run.') } return found } var messages = HTMLHint.verify(text, (options && options.rules) || defaultRules) for (var i = 0; i < messages.length; i++) { var message = messages[i] var startLine = message.line - 1, endLine = message.line - 1, startCol = message.col - 1, endCol = message.col found.push({ from: CodeMirror.Pos(startLine, startCol), to: CodeMirror.Pos(endLine, endCol), message: message.message, severity: message.type, }) } return found }) })