Sha256: 504d5458efd056f70926e1b056a8f6c224b2736ef73b0bd404a43fde9e9bcecf

Contents?: true

Size: 1.17 KB

Versions: 13

Compression:

Stored size: 1.17 KB

Contents

class FeatureCompiler
  def initialize
    require 'yaml'
    require 'erb'
    
    @tt = RUBY_PLATFORM =~ /mswin|mingw/ ? 'tt.bat' : 'tt'

    @template = ERB.new(IO.read(File.dirname(__FILE__) + '/../lib/cucumber/treetop_parser/feature.treetop.erb'))
    @langs = YAML.load_file(File.dirname(__FILE__) + '/../lib/cucumber/languages.yml')
  end
  
  def compile_all
    @langs.keys.each do |lang|
      compile(lang)
    end
  end
  
  def compile(lang)
    words = @langs['en'].merge(@langs[lang]) # Use English words if languages.yml is missing a word
    grammar_file = File.dirname(__FILE__) + "/../lib/cucumber/treetop_parser/feature_#{lang}.treetop"
    ruby_file    = File.dirname(__FILE__) + "/../lib/cucumber/treetop_parser/feature_#{lang}.rb"
    grammar      = @template.result(binding)
    File.open(grammar_file, "wb") do |io|
      io.write(grammar)
    end
    sh "#{@tt} #{grammar_file}"
    FileUtils.rm(grammar_file)
  end
end

namespace :treetop do
  desc 'Compile the grammar for all languages in languages.yml'
  task :compile do
    FeatureCompiler.new.compile_all
  end

  desc 'Compile the English grammar'
  task :compile_en do
    FeatureCompiler.new.compile('en')
  end
end

Version data entries

13 entries across 13 versions & 3 rubygems

Version Path
aslakhellesoy-cucumber-0.1.14.1 gem_tasks/treetop.rake
aslakhellesoy-cucumber-0.1.14.2 gem_tasks/treetop.rake
aslakhellesoy-cucumber-0.1.15 gem_tasks/treetop.rake
aslakhellesoy-cucumber-0.1.16.1 gem_tasks/treetop.rake
aslakhellesoy-cucumber-0.1.16.2 gem_tasks/treetop.rake
aslakhellesoy-cucumber-0.1.16.3 gem_tasks/treetop.rake
aslakhellesoy-cucumber-0.1.16.4 gem_tasks/treetop.rake
aslakhellesoy-cucumber-0.1.16 gem_tasks/treetop.rake
kosmas58-cucumber-0.1.16.5 gem_tasks/treetop.rake
kosmas58-cucumber-0.1.16.6 gem_tasks/treetop.rake
cucumber-0.1.14 gem_tasks/treetop.rake
cucumber-0.1.16 gem_tasks/treetop.rake
cucumber-0.1.15 gem_tasks/treetop.rake