33 lines
805 B
JavaScript
33 lines
805 B
JavaScript
var rules = require('./lib/rules')
|
|
var codeframe = require('./lib/codeframe')
|
|
|
|
module.exports = function (node, source) {
|
|
if (typeof node === 'string') {
|
|
source = node
|
|
node = parse(node)
|
|
}
|
|
var warnings = []
|
|
var warn = function () {
|
|
warnings.push(codeframe.apply(null, arguments))
|
|
}
|
|
node.childNodes.forEach(function (node, index) {
|
|
validate(node, source, warn, index)
|
|
})
|
|
return warnings
|
|
}
|
|
|
|
function validate (node, source, warn, index) {
|
|
rules.forEach(function (rule) {
|
|
rule(node, source, warn, index)
|
|
})
|
|
if (node.childNodes) {
|
|
node.childNodes.forEach(function (node, index) {
|
|
validate(node, source, warn, index)
|
|
})
|
|
}
|
|
}
|
|
|
|
function parse (str) {
|
|
return require('parse5').parseFragment(str, { locationInfo: true })
|
|
}
|