Utility for testing grammar files, used with vscode.
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`
);
}
);
type Expect = string[][][] | string;
type Text = string[] | string;
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;
}
type Run = (name: string, text: Text, expect: Expect, options?: Partial<RunOptions>) => void;
type RunOptions = Pick<Options, 'logAllTokens'>;
Generated with suf-cli
Copyright (c) 2020 Leonard Grosoli Licensed under the MIT license.