TextMate helpers

npm install first-mate
20 downloads in the last day
33 downloads in the last week
337 downloads in the last month

First Mate Build Status

TextMate helpers


npm install first-mate



{ScopeSelector} = require 'first-mate'
selector = new ScopeSelector('a | b')
selector.matches(['c']) # false
selector.matches(['a']) # true


{GrammarRegistry} = require 'first-mate'
registry = new GrammarRegistry()
grammar = registry.loadGrammarSync('./spec/fixtures/javascript.json')
{tokens} = grammar.tokenizeLine('var offset = 3;')
for {value, scopes} in tokens
  console.log("Token text: '#{value}' with scopes: #{scopes}")

loadGrammar(grammarPath, callback)

Asynchronously load a grammar and add it to the registry.

grammarPath - A string path to the grammar file.

callback - A function to call after the grammar is read and added to the registry. The callback receives (error, grammar) arguments.


Synchronously load a grammar and add it to the registry.

grammarPath - A string path to the grammar file.

Returns a Grammar instance.


tokenizeLine(line, [ruleStack], [firstLine])

Generate the tokenize for the given line of text.

line - The string text of the line.

ruleStack - An array of Rule objects that was returned from a previous call to this method.

firstLine - true to indicate that the very first line is being tokenized.

Returns an object with a tokens key pointing to an array of token objects and a ruleStack key pointing to an array of rules to pass to this method on future calls for lines proceeding the line that was just tokenized.


text - The string text possibly containing newlines.

Returns an array of tokens for each line tokenized.


  • Clone the repository
  • Run npm install
  • Run npm test to run the specs
  • Run npm run benchmark to benchmark fully tokenizing jQuery 2.0.3 and the CSS for Twitter Bootstrap 3.1.1
npm loves you