Repository URL to install this package:
Version:
1.9.1-1486597190 ▾
|
.. |
release |
package.json |
README.md |
LICENSE.md |
An interpreter for grammar files as defined by TextMate. Supports loading grammar files from JSON or PLIST format. Cross - grammar injections are currently not supported.
npm install vscode-textmate
var Registry = require('vscode-textmate').Registry; var registry = new Registry(); var grammar = registry.loadGrammarFromPathSync('./javascript.tmbundle/Syntaxes/JavaScript.plist'); var lineTokens = grammar.tokenizeLine('function add(a,b) { return a+b; }'); for (var i = 0; i < lineTokens.tokens.length; i++) { var token = lineTokens.tokens[i]; console.log('Token from ' + token.startIndex + ' to ' + token.endIndex + ' with scopes ' + token.scopes); }
Sometimes, it is necessary to manage the list of known grammars outside of vscode-textmate
. The sample below shows how this works:
var Registry = require('vscode-textmate').Registry; var registry = new Registry({ getFilePath: function (scopeName) { // Return here the path to the grammar file for `scopeName` if (scopeName === 'source.js') { return './javascript.tmbundle/Syntaxes/JavaScript.plist'; } return null; } }); // Load the JavaScript grammar and any other grammars included by it async. registry.loadGrammar('source.js', function(err, grammar) { if (err) { console.error(err); return; } // at this point `grammar` is available... });
To tokenize multiple lines, you must pass in the previous returned ruleStack
.
var ruleStack = null; for (var i = 0; i < lines.length; i++) { var r = grammar.tokenizeLine(lines[i], ruleStack); console.log('Line: #' + i + ', tokens: ' + r.tokens); ruleStack = r.ruleStack; }
See the main.ts file
npm install
npm run watch
npm test
npm run benchmark
npm run inspect -- PATH_TO_GRAMMAR PATH_TO_FILE
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.