All checks were successful
Publish To Prod / deploy_and_publish (push) Successful in 35s
57 lines
1.8 KiB
JavaScript
57 lines
1.8 KiB
JavaScript
'use strict'
|
|
|
|
var html = require('property-information/html')
|
|
var svg = require('property-information/svg')
|
|
var voids = require('html-void-elements')
|
|
var omission = require('./omission')
|
|
var one = require('./one')
|
|
|
|
module.exports = toHtml
|
|
|
|
var deprecationWarningIssued
|
|
|
|
function toHtml(node, options) {
|
|
var settings = options || {}
|
|
var quote = settings.quote || '"'
|
|
var alternative = quote === '"' ? "'" : '"'
|
|
|
|
if (quote !== '"' && quote !== "'") {
|
|
throw new Error('Invalid quote `' + quote + '`, expected `\'` or `"`')
|
|
}
|
|
|
|
if ('allowDangerousHTML' in settings && !deprecationWarningIssued) {
|
|
deprecationWarningIssued = true
|
|
console.warn(
|
|
'Deprecation warning: `allowDangerousHTML` is a nonstandard option, use `allowDangerousHtml` instead'
|
|
)
|
|
}
|
|
|
|
return one(
|
|
{
|
|
valid: settings.allowParseErrors ? 0 : 1,
|
|
safe: settings.allowDangerousCharacters ? 0 : 1,
|
|
schema: settings.space === 'svg' ? svg : html,
|
|
omit: settings.omitOptionalTags && omission,
|
|
quote: quote,
|
|
alternative: alternative,
|
|
smart: settings.quoteSmart,
|
|
unquoted: settings.preferUnquoted,
|
|
tight: settings.tightAttributes,
|
|
upperDoctype: settings.upperDoctype,
|
|
tightDoctype: settings.tightDoctype,
|
|
bogusComments: settings.bogusComments,
|
|
tightLists: settings.tightCommaSeparatedLists,
|
|
tightClose: settings.tightSelfClosing,
|
|
collapseEmpty: settings.collapseEmptyAttributes,
|
|
dangerous: settings.allowDangerousHtml || settings.allowDangerousHTML,
|
|
voids: settings.voids || voids.concat(),
|
|
entities: settings.entities || {},
|
|
close: settings.closeSelfClosing,
|
|
closeEmpty: settings.closeEmptyElements
|
|
},
|
|
node && typeof node === 'object' && 'length' in node
|
|
? {type: 'root', children: node}
|
|
: node
|
|
)
|
|
}
|