Forked because of unist-util-is returning false when testing a node with type "element" with "element" as test. Could not immediatly figure out what was ultimately causing the issue. Disabled the thrown error for now.
hast utility to transform a tree to something else through a hyperscript DSL.
npm:
npm install hast-to-hyperscriptvar 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>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(stringorboolean, optional) — Prefix to use as a prefix for keys passed inattrstoh(), this behaviour is turned off by passingfalse, turned on by passing astring. By default,h-is used as a prefix if the givenhis detected as beingvirtual-dom/horReact.createElementoptions.space(enum,'svg'or'html', default:'html') — Whethernodeis in the'html'or'svg'space. If ansvgelement is found when inside the HTML space,toHautomatically switches to the SVG space when entering the element, and switches back when exiting
* — Anything returned by invoking h().
Create an element from the given values.
name(string) — Tag-name of element to createattrs(Object.<string>) — Attributes to setchildren(Array.<* | string>) — List of children (results of previously invokingh())
* — Anything.
Most Hyperscript implementations only support elements and texts. hast supports doctype, comment, and root as well.
- If anything other than an
elementorrootnode is given,toHthrows - If a root is given with no children, an empty
divelement is returned - If a root is given with one element child, that element is transformed
- Otherwise, the children are wrapped in a
divelement
If 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— Sanitise nodes
See 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, organisation, or community you agree to abide by its terms.