A very small Markdown, HTML, and CSS parser.
npm install very-small-parservery-small-parser- JavaScript parser for Markdown, HTML, and inline CSS.
- Tiny, just over 4KB.
- Runs in browser and Node.js.
- No dependencies.
- Markdown is parsed into MDAST (Markdown Abstract Syntax Tree).
- HTML is parsed into HAST (Hypertext Abstract Syntax Tree).
On the web you can simply import the module using a script tag.
Using ESM.sh:
``html`
Using jsDelivr:
`html`
To use TypeScript types or import into a Node.js project, you can install the package from npm:
`sh`
npm install very-small-parser
Parse Markdown document (block elements):
`js
import { markdown } from 'very-small-parser';
const ast = markdown.block.parsef('Hello __world__!');
`
Parse Markdown inline markup only:
`js`
const ast = markdown.inline.parse('Hello __world__!');
Detect if text is likely to be a Markdown document:
`js
import { is } from 'very-small-parser/lib/markdown/is';
is('Hello __world__!'); // true
is('Hello!'); // false
`
Pretty-print MDAST back to text:
`js
import { markdown } from 'very-small-parser';
import { toText } from 'very-small-parser/lib/markdown/block/toText';
const mdast = markdown.block.parse('Hello __world__!');
const text = toText(mdast); // Hello __world__!
`
Convert MDAST to HAST (Markdown AST to HTML AST):
`js
import { markdown } from 'very-small-parser';
import { toHast } from 'very-small-parser/lib/markdown/block/toHast';
import { toText } from 'very-small-parser/lib/html/toText';
const mdast = markdown.block.parse('Hello __world__!');
const hast = toHast(mdast);
const html = toText(hast); //
Hello world!
$3
Parse HTML to HAST (Hypertext Abstract Syntax Tree):
`js
import { html } from 'very-small-parser';const ast = html.parse('Hello world!');
`Pretty-print HAST to HTML:
`js
import { html } from 'very-small-parser';
import { toText } from 'very-small-parser/lib/html/toText';const hast = html.parse('Hello world!');
const html = toText(hast); // 'Hello world!'
`Specify tabulation size for indentation when pretty-printing:
`js
import { html } from 'very-small-parser';
import { toText } from 'very-small-parser/lib/html/toText';const tab = ' ';
const hast = html.parse('
Helloworld!', tab);
const html = toText(hast);
//
// Hello
// world
// !
//
`Convert HAST to MDAST (HTML AST to Markdown AST):
`js
import { html } from 'very-small-parser';
import { toMdast } from 'very-small-parser/lib/html/toMdast';
import { toText } from 'very-small-parser/lib/markdown/block/toText';const hast = html.parse('
Hello world!
');
const mdast = toMdast(hast);
const text = toText(mdast); // __Hello__ _world_!
`
$3
JSON-ML is a simple way to represent HTML as JSON. For example, the HTML
Hello is represented as ['b', null, 'Hello']. The first element is
the tag name, the second is the attributes, and the rest are children.This package contains converters for JSON-ML to HAST and back. See the
/src/html/json-ml` directory.