Sha256: fd441791616852f475059c65f8af541685074549cfbc28a5c1fba1f26041730c

Contents?: true

Size: 1.17 KB

Versions: 17

Compression:

Stored size: 1.17 KB

Contents

class FeatureCompiler
  def initialize
    require 'yaml'
    require 'erb'
    
    @tt = 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

17 entries across 17 versions & 4 rubygems

Version Path
aslakhellesoy-cucumber-0.1.10 gem_tasks/treetop.rake
aslakhellesoy-cucumber-0.1.11 gem_tasks/treetop.rake
aslakhellesoy-cucumber-0.1.12 gem_tasks/treetop.rake
aslakhellesoy-cucumber-0.1.13.2 gem_tasks/treetop.rake
aslakhellesoy-cucumber-0.1.13.3 gem_tasks/treetop.rake
aslakhellesoy-cucumber-0.1.13 gem_tasks/treetop.rake
aslakhellesoy-cucumber-0.1.9 gem_tasks/treetop.rake
bts-cucumber-0.1.13.1 gem_tasks/treetop.rake
bts-cucumber-0.1.13.2 gem_tasks/treetop.rake
bts-cucumber-0.1.13.3 gem_tasks/treetop.rake
jeffrafter-cucumber-0.1.10 gem_tasks/treetop.rake
jeffrafter-cucumber-0.1.12 gem_tasks/treetop.rake
cucumber-0.1.10 gem_tasks/treetop.rake
cucumber-0.1.12 gem_tasks/treetop.rake
cucumber-0.1.13 gem_tasks/treetop.rake
cucumber-0.1.11 gem_tasks/treetop.rake
cucumber-0.1.9 gem_tasks/treetop.rake