Navigator Prefabricating Marinates

    moo-indentation-lexer

    6.0.0 • Public • Published

    moo-indentation-lexer

    Usage

    Quick

    const moo = require('moo')
    const IndentationLexer = require('moo-indentation-lexer')
     
    // Create a lexer from rules
    const mooLexer = moo.compile({ ... })
    // Create an indentation-aware lexer using the lexer
    const lexer = new IndentationLexer({ lexer: mooLexer })
     
    // Specify the data
    lexer.reset('...')
     
    // In addition to the normal Moo tokens,
    // extra indent/dedent tokens will be emitted for matching indentation/unindentation
    // Indentation levels are also closed off by matching enclosures of {}, () and []
    // When a separator and newline appears just before a de-indentation, the dedent
    // will be emitted first, followed by the separator and newline.
    lexer.next()

    Custom

    // Create a lexer from rules
    const mooLexer = moo.compile({
        WS: /[ \t]+/,
        comment: /\/\/.*?$/,
        ...,
        NL: { match: /\n/, lineBreaks: true }
    })
    // Create an indentation-aware lexer using the lexer
    const lexer = new IndentationLexer({
        lexer: mooLexer,
        indentationType: 'WS',
        newlineType: 'NL',
        commentType: 'comment',
        indentName: 'indent',
        dedentName: 'dedent',
        enclosingPunctuations: { '[': ']', '<': '>' },   // defaults {}, () and []
        separators: [',']
    })

    Keywords

    none

    Install

    npm i moo-indentation-lexer

    DownloadsWeekly Downloads

    24

    Version

    6.0.0

    License

    MIT

    Unpacked Size

    18.8 kB

    Total Files

    6

    Last publish

    Collaborators

    • aliclark