Files
30-seconds-of-code/node_modules/hast-util-to-html/lib/index.js
2019-08-20 15:52:05 +02:00

51 lines
1.4 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
/* Characters. */
var DQ = '"'
var SQ = "'"
/* Stringify the given HAST node. */
function toHTML(node, options) {
var settings = options || {}
var quote = settings.quote || DQ
var alternative = quote === DQ ? SQ : DQ
var smart = settings.quoteSmart
if (quote !== DQ && quote !== SQ) {
throw new Error(
'Invalid quote `' + quote + '`, expected `' + SQ + '` or `' + DQ + '`'
)
}
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: smart ? alternative : null,
unquoted: Boolean(settings.preferUnquoted),
tight: settings.tightAttributes,
tightDoctype: Boolean(settings.tightDoctype),
tightLists: settings.tightCommaSeparatedLists,
tightClose: settings.tightSelfClosing,
collapseEmpty: settings.collapseEmptyAttributes,
dangerous: settings.allowDangerousHTML,
voids: settings.voids || voids.concat(),
entities: settings.entities || {},
close: settings.closeSelfClosing,
closeEmpty: settings.closeEmptyElements
},
node
)
}