/twig-lexer

A TypeScript lexer for Twig language

Primary LanguageTypeScriptApache License 2.0Apache-2.0

twig-lexer NPM version Build Status Coverage percentage

A lossless Twig lexer

Installation

npm install twig-lexer --save-dev

Usage

import {TwigLexer} from 'twig-lexer';

let lexer = new TwigLexer();

let tokens = lexer.tokenize('Hello {{world}}!');

API

Read the documentation for more information.

About Twig specifications - or lack thereof

As incredible as it sounds, Twig is a language with no official specifications - even internally at SensioLabs, it seems. As such, it is subject to interpretations and twig-lexer is one of them. It's very close to TwigPHP lexer (and as such implements things like the operator confusion) but also outputs some token types that are not output by TwigPHP lexer - like OPENING_QUOTE or WHITESPACE - or with different names - like TAG_START instead of BLOCK_START.

When (if) official specifications are available, twig-lexer will be updated to match them.

Contributing

  • Fork this repository
  • Code
  • Implement tests using tape
  • Issue a pull request keeping in mind that all pull requests must reference an issue in the issue queue

Running the test suite

The test suite can be run by executing the native test npm script:

npm test

Checking code coverage

This project adheres to a strict 100% code coverage policy. Code coverage can be checked by executing the cover npm script:

npm run cover

Generating the documentation

The documentation can be generated by executing the build:doc npm script:

npm run build:doc

This is usually not needed as the doc will be generated on every new release.

License

Apache-2.0 © Eric MORAND