Skip to content

Instantly share code, notes, and snippets.

@aslakhellesoy
Created April 19, 2011 23:15
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aslakhellesoy/929952 to your computer and use it in GitHub Desktop.
Save aslakhellesoy/929952 to your computer and use it in GitHub Desktop.
A little example illustrating how to lex a Gherkin file with node.js
// First: npm install gherkin
// Usage: node cukelite.js path/to/some.feature
var fs = require('fs');
var Lexer = require('gherkin').Lexer('en');
var lexer = new Lexer({
comment: function(value, line) {
console.log(value);
},
tag: function(value, line) {
console.log(value);
},
feature: function(keyword, name, description, line) {
console.log(keyword + ': ' + name);
},
background: function(keyword, name, description, line) {
console.log(' ' + keyword + ': ' + name);
},
scenario: function(keyword, name, description, line) {
console.log(' ' + keyword + ': ' + name);
},
scenario_outline: function(keyword, name, description, line) {
console.log(' ' + keyword + ': ' + name);
},
examples: function(keyword, name, description, line) {
console.log(' ' + keyword + ': ' + name);
},
step: function(keyword, name, line) {
console.log(' ' + keyword + name);
},
py_string: function(string, line) {
console.log(' """\n' + string + '\n """');
},
row: function(row, line) {
console.log(' | ' + row.join(' | ') + ' |');
},
eof: function() {
console.log('=====');
}
});
lexer.scan(fs.readFileSync(process.ARGV[2]));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment