2015-11-22 19:15:54 +00:00
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://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 ) ;
else // Plain browser env
2017-09-05 03:39:06 +00:00
mod ( CodeMirror , window . HTMLHint ) ;
} ) ( function ( CodeMirror , HTMLHint ) {
2015-11-22 19:15:54 +00:00
"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 = [ ] ;
2017-09-05 03:39:06 +00:00
if ( HTMLHint && ! HTMLHint . verify ) 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 ;
}
2015-11-22 19:15:54 +00:00
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 ;
} ) ;
} ) ;