Transform HAST 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;
Yields:
<p class="bravo" id="alpha">charlie <strong>delta</strong> echo.</p>
Transform HAST to something else through a hyperscript DSL.
h
(Function
)node
(Element
)prefix
(string
orboolean
, optional) — Prefix to use as a prefix for keys passed inattrs
toh()
, this behaviour is turned off by passingfalse
, turned on by passing astring
. By default,h-
is used as a prefix if the givenh
is detected as beingvirtual-dom/h
orReact.createElement
*
— Anything returned by invoking h()
.
Transform HAST to something else through a hyperscript DSL.
name
(string
) — Tag-name of element to createattrs
(Object.<string>
) — Attributes to setchildren
(Array.<* | string>
) — List of children and text, where children are the result of invokingh()
previously
*
— Anything.
Nodes: Most hyperscript implementations only support elements and text (as
leave nodes). HAST supports doctype
, comment
, and root
as well.
- If anything other than an
element
orroot
node is given,hast-to-hyperscript
throws - If a
root
is given with one element child, that element is transformed - If a
root
with no children, a non-element only child, or more than one children, the children are wrapped in adiv
element
If unknown nodes are found deeper in the tree, they are ignored: only text
and element
nodes are transformed.
Support: Although there are lots of libs mentioning support for this
interface, there are significant differences between them. For example,
hyperscript doesn’t support classes in attrs
, virtual-dom/h
needs an
attributes
object inside attrs
most of the time. hast-to-hyperscript
works around these differences for:
See contribute.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.