Skip to content

Commit

Permalink
Load gherkin parser considering language comment
Browse files Browse the repository at this point in the history
  • Loading branch information
vslinko committed Jan 28, 2013
1 parent 1d16d85 commit 4b1cf13
Showing 1 changed file with 15 additions and 4 deletions.
19 changes: 15 additions & 4 deletions lib/cucumber/parser.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
var Parser = function(featureSources, astFilter) {
var Gherkin = require('gherkin');
var GherkinLexer = require('gherkin/lib/gherkin/lexer/en');
var Cucumber = require('../cucumber');

var features = Cucumber.Ast.Features();
Expand All @@ -9,13 +8,25 @@ var Parser = function(featureSources, astFilter) {

var self = {
parse: function parse() {
var eventHandler = self.getEventHandlers();
var lexer = new GherkinLexer(self.getEventHandlers());
var lexers = {};
var lexer = function (lang) {
if (!(lang in lexers)) {
lexers[lang] = new (Gherkin.Lexer(lang))(self.getEventHandlers());
}

return lexers[lang];
};

for (i in featureSources) {
var currentSourceUri = featureSources[i][Parser.FEATURE_NAME_SOURCE_PAIR_URI_INDEX];
var featureSource = featureSources[i][Parser.FEATURE_NAME_SOURCE_PAIR_SOURCE_INDEX];
self.setCurrentSourceUri(currentSourceUri);
lexer.scan(featureSource);
featureSource = featureSource.toString();

var languageMatch = /^# language: (.*)\n/.exec(featureSource);
var language = languageMatch == null ? 'en' : languageMatch[1];

lexer(language).scan(featureSource);
}
return features;
},
Expand Down

0 comments on commit 4b1cf13

Please sign in to comment.