'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 quotationMark = '"' var apostrophe = "'" var deprecationWarningIssued = false function toHtml(node, options) { var settings = options || {} var quote = settings.quote || quotationMark var alternative = quote === quotationMark ? apostrophe : quotationMark var smart = settings.quoteSmart var value = node && typeof node === 'object' && 'length' in node ? {type: 'root', children: node} : node if (quote !== quotationMark && quote !== apostrophe) { throw new Error( 'Invalid quote `' + quote + '`, expected `' + apostrophe + '` or `' + quotationMark + '`' ) } if (settings.allowDangerousHTML !== undefined) { if (!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: smart, unquoted: Boolean(settings.preferUnquoted), tight: settings.tightAttributes, upperDoctype: Boolean(settings.upperDoctype), tightDoctype: Boolean(settings.tightDoctype), bogusComments: Boolean(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 }, value ) }