cherow-dummy-plugin

0.0.3 • Public • Published

Cherow dummy plugin

This is just a demo repo to show how a plugin can be developed and integrated with Cherow parser.

Usage for this plugin

import { parseScript } from 'cherow';
import { dummy } from 'cherow-dummy-plugin';

 // Parse with the new plugin enabled
parseScript('1', {
    plugins: [
        dummy(123); // '123' will be the value on the literal node
    ]
});

How to

Location tracking

Start a new node with this.getLocations() and finish it with this.finishNode() as shown in this example:

const pos = this.getLocations();

return this.finishNode(pos, {
  type: 'dummy'
});

Note! The location tracking will not be enabled unless the options are set for it - { loc: true, ranges: true }

Core context

By default Cherow pass around context masks everywhere as a simple immutable bit set.

It's also possible to extend this with your own set of context masks.

export const Context = {
    None = 0,
    Foo = 1 << 0,
    Bar = 1 << 1,
}

export default function(value) {
    return (parser) => {
        parser.dummy(context | Context.Foo) {
            // do something with the context mask
        };
    };
}

Mutable parser flags

Cherow also let you use mutable parser flags, in case any flags need passed by reference. For this you can create your own bitmasks and hook them on the this.flags.

export const Flags = {
    None = 0,
    Literal = 1 << 0,
    Identifier = 1 << 1,
}

export default function(value) {
    return (parser) => {

        // Set the mutable parser flag
        parser.flags |= Flags.Identifier;

        parser.dummy(context) {

            // If the mutable parser flag is the 'Literal' mask, Cherow will return        
            // a literal AST node. Else it return a identifier AST node
            if (this.flags & Flags.Literal) return this.parseLiteral(context);

            return this.parseIdentifier(context);

        };
    };
};

Methods

  • parse(context) {} - the main parser function
  • parseLiteral(context) {} - parses a literal node
  • parseIdentifier(context) {} - parses a identifier node

For others, please see the Cherow source code

Dependents (0)

Package Sidebar

Install

npm i cherow-dummy-plugin

Weekly Downloads

2

Version

0.0.3

License

ISC

Last publish

Collaborators

  • kennyf