1.0.1 • Published 3 years ago

@lancer/ihtml-parser v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

ihtml-parser

NPM version

A fork of htmlparser2 with added interpolation syntax. Made for use with the Lancer html framework.

Installation

npm install @lancer/ihtml-parser

Usage

ihtml-parser extends htmlparser2 to support {{}} for interpolation. The biggest difference in usage is receiving string | Interpolation instead of string during the parsing process.

Note that {{}} is not arbitrary string interpolation; it can only appear as an element's attribute or within an element's text.

Here's a quick example:

const Parser = require("@lancer/ihtml-parser");
const parser = new htmlparser2.Parser({
    onopentag(name, attributes, iAttributes) {
        /*
         * `attributes` has type { [attrName: string]: string } | null
         *
         * However, for attributes with interpolations (e.g. foo="{{bar}}" or {{foo}}="bar"),
         * a third argument is present with type (ParsedAttribute[] | null)
         *
         * where ParsedAttribute = [DynamicContent, DynamicContent]
         * where DynamicContent = Array<string | Interpolation>
         * where Interpolation = { code: string }
         *
         * (Note that Interpolation is a class)
         */
         console.log("Open tag", name, attributes);
    },
    ontext(text) {
        /*
         * Before, `text` had type string
         *
         * Now, it has type string | Interpolation
         */
        console.log("-->", text);
    },
});
parser.write(
    `Xyz <a href="{{ myLink.url }}">Go to {{myLink.text}}</ a>`
);
parser.end();