require 'erb' require 'cucumber/platform' require 'cucumber/ast' require 'cucumber/parser/treetop_ext' require 'cucumber/parser/table' module Cucumber # Classes in this module parse feature files and translate the parse tree # (concrete syntax tree) into an abstract syntax tree (AST) using # Embedded translation. # # The AST is built by the various #build methods in the parse tree. # # The AST classes are defined in the Cucumber::Ast module. module Parser translator = Module.new do def keywordz(key) 'Scenario' end end def self.load_parser(keywords) Loader.new(keywords) end class Loader def initialize(keywords) @keywords = keywords i18n_tt = File.expand_path(File.dirname(__FILE__) + '/parser/i18n.tt') template = File.open(i18n_tt, Cucumber.file_mode('r')).read erb = ERB.new(template) grammar = erb.result(binding) Treetop.load_from_string(grammar) require 'cucumber/parser/feature' end def keywords(key) values = @keywords[key].split('|') values.map{|value| "'#{value}'"}.join(" / ") end end end end