Transform hast to HTML
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

readme.md

hast-util-to-html

Build Coverage Downloads Chat

Transform HAST to HTML.

Installation

npm:

npm install hast-util-to-html

Usage

var h = require('hastscript')
var toHTML = require('hast-util-to-html')

var tree = h('.alpha', [
  'bravo ',
  h('b', 'charlie'),
  ' delta ',
  h('a.echo', {download: true}, 'foxtrot')
])

console.log(toHTML(tree))

Yields:

<div class="alpha">bravo <b>charlie</b> delta <a class="echo" download>foxtrot</a></div>

API

toHTML(tree[, options])

Stringify the given HAST tree.

options.space

Whether the root of the given tree is in the 'html' or 'svg' space (enum, 'svg' or 'html', default: 'html').

If an svg element is found in the HTML space, toHTML automatically switches to the SVG space when entering the element, and switches back when leaving.

options.entities

Configuration for stringify-entities (Object, default: {}). Do not use escapeOnly, attribute, or subset (toHTML already passes those). However, useNamedReferences, useShortestReferences, and omitOptionalSemicolons are all fine.

options.voids

Tag-names of elements to stringify without closing tag (Array.<string>, default: html-void-elements).

Not used in the SVG space.

options.quote

Preferred quote to use ('"' or '\'', default: '"').

options.quoteSmart

Use the other quote if that results in less bytes (boolean, default: false).

options.preferUnquoted

Leave attributes unquoted if that results in less bytes (boolean, default: false).

Not used in the SVG space.

options.omitOptionalTags

Omit optional opening and closing tags (boolean, default: false). For example, in <ol><li>one</li><li>two</li></ol>, both </li> closing tags can be omitted. The first because it’s followed by another li, the last because it’s followed by nothing.

Not used in the SVG space.

options.collapseEmptyAttributes

Collapse empty attributes: class="" is stringified as class instead (boolean, default: false). Note: boolean attributes, such as hidden, are always collapsed.

Not used in the SVG space.

options.closeSelfClosing

Close self-closing nodes with an extra slash (/): <img /> instead of <img> (boolean, default: false).

Not used in the SVG space.

options.closeEmptyElements

Close SVG elements without any content with slash (/) on the opening tag instead of an end tag: <circle /> instead of <circle></circle> (boolean, default: false).

Not used in the HTML space.

options.tightSelfClosing

Do not use an extra space when closing self-closing elements: <img/> instead of <img /> (boolean, default: false). Note: Only used if closeSelfClosing: true or closeEmptyElements: true.

options.tightCommaSeparatedLists

Join known comma-separated attribute values with just a comma (,), instead of padding them on the right as well (, where · represents a space) (boolean, default: false).

options.tightAttributes

Join attributes together, without white-space, if possible: class="a b" title="c d" is stringified as class="a b"title="c d" instead to save bytes (boolean, default: false). Note: creates invalid (but working) markup.

Not used in the SVG space.

options.tightDoctype

Drop unneeded spaces in doctypes: <!doctypehtml> instead of <!doctype html> to save bytes (boolean, default: false). Note: creates invalid (but working) markup.

options.allowParseErrors

Do not encode characters which trigger parse errors (even though they work), to save bytes (boolean, default: false). Note: creates invalid (but working) markup.

Not used in the SVG space.

options.allowDangerousCharacters

Do not encode some characters which cause XSS vulnerabilities in older browsers (boolean, default: false). Note: Only set this if you completely trust the content.

options.allowDangerousHTML

Allow raw nodes and insert them as raw HTML. When falsey, encodes raw nodes (boolean, default: false). Note: Only set this if you completely trust the content.

Related

Contribute

See contributing.md in syntax-tree/hast for ways to get started.

This organisation has a Code of Conduct. By interacting with this repository, organisation, or community you agree to abide by its terms.

License

MIT © Titus Wormer