Skip to content

Commit

Permalink
Implements support for html-validate (minor)
Browse files Browse the repository at this point in the history
  • Loading branch information
zrrrzzt committed Feb 15, 2020
1 parent 5300763 commit a001aa9
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 24 deletions.
29 changes: 5 additions & 24 deletions lib/validate.js
Original file line number Diff line number Diff line change
@@ -1,27 +1,8 @@
const request = require('request')
const config = require('./config')
const filterData = require('./filter-data')
const w3c = require('./w3c-validator')
const whatwg = require('./whatwg-validator')

module.exports = async options => {
const requestOptions = await config(options)
const ignore = options.ignore
return new Promise((resolve, reject) => {
request(requestOptions, function (error, response, result) {
if (error) {
return reject(error)
}

if (response && response.statusCode !== 200) {
const error = new Error('Validator returned unexpected statuscode: ' + response.statusCode)
return reject(error)
}

let data = options.format === 'json' && !ignore ? JSON.parse(result) : result

if (ignore) {
data = filterData(data, ignore)
}
return resolve(data)
})
})
const { validator } = options
const useWHATWG = validator && validator.toLowerCase() === 'whatwg'
return useWHATWG ? whatwg(options) : w3c(options)
}
27 changes: 27 additions & 0 deletions lib/w3c-validator.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
const request = require('request')
const config = require('./config')
const filterData = require('./filter-data')

module.exports = async options => {
const requestOptions = await config(options)
const ignore = options.ignore
return new Promise((resolve, reject) => {
request(requestOptions, function (error, response, result) {
if (error) {
return reject(error)
}

if (response && response.statusCode !== 200) {
const error = new Error('Validator returned unexpected statuscode: ' + response.statusCode)
return reject(error)
}

let data = options.format === 'json' && !ignore ? JSON.parse(result) : result

if (ignore) {
data = filterData(data, ignore)
}
return resolve(data)
})
})
}
23 changes: 23 additions & 0 deletions lib/whatwg-validator.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
const { HtmlValidate } = require('html-validate')
const config = require('./config')

module.exports = async options => {
const htmlvalidate = new HtmlValidate()
options.isLocal = !options.data
const validatorOptions = await config(options)
const { body } = validatorOptions
const report = htmlvalidate.validateString(body)
const { valid, errorCount, warningCount, results } = report
const isValid = valid
const messages = results.length > 0 ? results[0].messages : []
const errors = messages.filter(message => message.severity === 2)
const warnings = messages.filter(message => message.severity === 1)

return {
isValid,
errorCount,
warningCount,
errors,
warnings
}
}

0 comments on commit a001aa9

Please sign in to comment.