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`
);
}
);
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;
}
type Run = (name: string, text: Text, expect: Expect, options?: Partial<RunOptions>) => void;
type RunOptions = Pick<Options, 'logAllTokens'>;