$ cnpm install hast-to-hyperscript
hast utility to transform a tree to something else through a hyperscript DSL.
npm:
npm install hast-to-hyperscript
var toH = require('hast-to-hyperscript')
var h = require('hyperscript')
var tree = {
type: 'element',
tagName: 'p',
properties: {id: 'alpha', className: ['bravo']},
children: [
{type: 'text', value: 'charlie '},
{
type: 'element',
tagName: 'strong',
properties: {style: 'color: red;'},
children: [{type: 'text', value: 'delta'}]
},
{type: 'text', value: ' echo.'}
]
}
// Transform (`hyperscript` needs `outerHTML` to stringify):
var doc = toH(h, tree).outerHTML
console.log(doc)
Yields:
<p class="bravo" id="alpha">charlie <strong>delta</strong> echo.</p>
toH(h, tree[, options|prefix])
Transform a hast tree to something else through a hyperscript DSL.
h
(Function
) — Hyperscript functiontree
(Node
) — Tree to transformprefix
— Treated as {prefix: prefix}
options.prefix
(string
or boolean
, optional)
— Prefix to use as a prefix for keys passed in attrs
to h()
,
this behaviour is turned off by passing false
, turned on by passing
a string
.
By default, h-
is used as a prefix if the given h
is detected as being
virtual-dom/h
or React.createElement
options.space
(enum, 'svg'
or 'html'
, default: 'html'
)
— Whether node
is in the 'html'
or 'svg'
space.
If an svg
element is found when inside the HTML space, toH
automatically
switches to the SVG space when entering the element, and switches back when
exiting*
— Anything returned by invoking h()
.
function h(name, attrs, children)
Create an element from the given values.
h
is called with the node that is currently compiled as the context object
(this
).
name
(string
) — Tag-name of element to createattrs
(Object.<string>
) — Attributes to setchildren
(Array.<* | string>
) — List of children (results of previously
invoking h()
)*
— Anything.
Most hyperscript implementations only support elements and texts. hast supports doctype, comment, and root as well.
element
or root
node is given, toH
throwsdiv
element is returneddiv
elementIf unknown nodes (a node with a type not defined by hast) are found as descendants of the given tree, they are ignored: only text and element are transformed.
Although there are lots of libraries mentioning support for a hyperscript-like
interface, there are significant differences between them.
For example, hyperscript
doesn’t support classes in attrs
and
virtual-dom/h
needs an attributes
object inside attrs
most of the
time.
toH
works around these differences for:
Use of hast-to-hyperscript
can open you up to a
cross-site scripting (XSS) attack if the hast tree is unsafe.
Use hast-util-santize
to make the hast tree safe.
hastscript
— Hyperscript compatible DSL for creating nodeshast-util-sanitize
— Sanitize nodeshast-util-from-dom
— Transform a DOM tree to hastunist-builder
— Create any unist treexastscript
— Create a xast treeSee contributing.md
in syntax-tree/.github
for ways to get
started.
See support.md
for ways to get help.
This project has a code of conduct. By interacting with this repository, organization, or community you agree to abide by its terms.
Copyright 2013 - present © cnpmjs.org