Skip to content

syntax-tree/hastscript

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

hastscript Build Status Coverage Status

Hyperscript (and virtual-hyperscript) compatible DSL for creating virtual HAST trees.

Installation

npm:

npm install hastscript

Usage

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' } ] } ] }

API

h(selector?[, properties][, children])

DSL for creating virtual HAST trees.

Parameters
  • selector (string, optional) — Simple CSS selector, e.g., tag names (foo), IDs (#bar) and classes (.baz) are supported, defaults to a div 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 to text nodes.
Returns

Node — A HAST node.

License

MIT © Titus Wormer