Hyperscript (and virtual-hyperscript
)
compatible DSL for creating virtual HAST trees.
npm:
npm install hastscript
Dependencies:
var h = require('hastscript');
AST:
var tree = h('.foo#some-id', [
h('span', 'some text'),
h('input', {
'type': 'text',
'value': 'foo'
}),
h('a.alpha', {
'class': 'bravo charlie',
'download': 'download'
}, ['delta', 'echo'])
]);
Yields:
{ type: 'element',
tagName: 'div',
properties: { id: 'some-id', className: [ 'foo' ] },
children:
[ { type: 'element',
tagName: 'span',
properties: {},
children: [ { type: 'text', value: 'some text' } ] },
{ type: 'element',
tagName: 'input',
properties: { type: 'text', value: 'foo' },
children: [] },
{ type: 'element',
tagName: 'a',
properties: { className: [ 'alpha', 'bravo', 'charlie' ], download: true },
children:
[ { type: 'text', value: 'delta' },
{ type: 'text', value: 'echo' } ] } ] }
DSL for creating virtual HAST trees.
selector
(string
, optional) — Simple CSS selector, e.g., tag names (foo
), IDs (#bar
) and classes (.baz
) are supported, defaults to adiv
element.properties
(Object.<string, *>
, optional) — Map of properties;children
(string
,Node
,Array.<string|Node>
, optional) — (List of) child nodes, when strings are encountered, they are normalised totext
nodes.
Node
— A HAST node.