test-grammar
TypeScript icon, indicating that this package has built-in type declarations

1.0.3 • Public • Published

Test grammar

npmV Custom githubLastCommit

Utility for testing grammar files, used with vscode.

Usage example

import { TestGrammar } from 'test-grammar';
new TestGrammar(
  JSON.stringify({
    scopeName: 'source.test',
    name: 'test',
    patterns: [
      {
        begin: '@',
        end: '$\\n?|(?=\\s|,|\\(|\\)|\\[|>)',
        name: 'at',
        patterns: [
          {
            match: '.*',
            name: 'name'
          }
        ]
      },
      {
        begin: '\\*\\*',
        end: '\\*\\*',
        name: 'bold',
        patterns: [
          {
            match: '[A-z]+',
            name: 'text'
          },
          {
            match: '\\d+',
            name: 'number'
          },
          {
            match: ' *',
            name: 'whitespace'
          }
        ]
      }
    ]
  }),
  { useSourceAsFile: true },
  run => {
    run(
      'test',
      `@syler
**text 0**`,
      `at|at name
bold|bold text|bold whitespace|bold number|bold`
    );
  }
);

Docs

index

TestGrammar
class TestGrammar {
    protected initFunc: (run: Run) => void;
    private registry;
    private grammar;
    private scope;
    private stats;
    private options;
    constructor(source: string, options: Partial<Options> | null, initFunc: (run: Run) => void);
    private SetOptions;
    private getOption;
    private Init;
    private transformText;
    private transformExpect;
    private run;
}

interfaces

Expect
type Expect = string[][][] | string;
Text
type Text = string[] | string;
Options
interface Options {
    /** Also Logs Tokens that passed the test. */
    logAllTokens: boolean;
    /** Calls `process.exit(1)` when tests failed or if there is an error. */
    exitProcess: boolean;
    /** Uses the source parameter as input file, the input string is expected to be valid json textmate grammar. */
    useSourceAsFile: boolean;
}
Run
type Run = (name: string, text: Text, expect: Expect, options?: Partial<RunOptions>) => void;
RunOptions
type RunOptions = Pick<Options, 'logAllTokens'>;

logger

Stats
interface Stats {
    cases: number;
    errors: number;
    failedCases: number;
    passedCases: number;
    tokens: number;
    failedTokens: number;
    passedTokens: number;
    lines: number;
    failedLines: number;
    passedLines: number;
}
logger
const logger: Logger<{
    invalid: LoggerType;
    failed: LoggerType;
    passed: LoggerType;
    stats: LoggerType;
}

Generated with suf-cli

Copyright (c) 2020 Leonard Grosoli Licensed under the MIT license.

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.0.3
    2
    • latest

Version History

  • Version
    Downloads (Last 7 Days)
    • Published
  • 1.0.3
    2
  • 1.0.2
    0
  • 1.0.1
    0
  • 1.0.0
    0

Package Sidebar

Install

npm i test-grammar

Weekly Downloads

2

Version

1.0.3

License

MIT

Unpacked Size

30.7 kB

Total Files

9

Last publish

Collaborators

  • the_real_syler