Sha256: 024a13820536dd190e8c633768b855fb38355f3e8f9c7ed9d83c1f97591e765b

Contents?: true

Size: 1.6 KB

Versions: 5

Compression:

Stored size: 1.6 KB

Contents

# This generator bootstraps a Rails project for use with Cucumber
class FeatureGenerator < Rails::Generator::NamedBase
  attr_reader :language
  
  def initialize(runtime_args, runtime_options = {})
    super
    @features_path = "features"
  end  
  
  def manifest 
    if options[:language]
      @language = options[:language]
      set_language(@language)
    end
    
    record do |m|
      m.directory File.join(@features_path, "step_definitions")
      m.template  "feature.erb", File.join(@features_path, "manage_#{plural_name}.feature")
      m.template  "steps.erb", File.join(@features_path, "step_definitions", "#{singular_name}_steps.rb")  

      m.gsub_file 'features/support/paths.rb', /root_path/mi do |match|
        "#{match}\n    when /the new #{singular_name} page/\n      new_#{singular_name}_path\n"
      end
    end
  end

  class NamedArg
    attr_reader :name

    def initialize(s)
      @name, @type = *s.split(':')
    end

    def value(n)
      if @type == 'boolean'
        (n % 2) == 0
      else
        "#{@name} #{n}"
      end
    end
  end

  def named_args
    args.map{|arg| NamedArg.new(arg)}
  end

  protected

  def banner
    "Usage: #{$0} feature ModelName [field:type, field:type]"
  end
  
  def add_options!(opt)
    opt.separator ""
    opt.separator "Options:"
    opt.on("-l", "--language=lang", String, "Use a [language] subdirectoy in /features.") { |v| options[:language] = v }
   end
  
  # Load up the transations for the passed language, and modify the features_path accordingly
  def set_language(language)
    @features_path = File.join(@features_path, language)
  end

end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
kosmas58-cucumber-0.1.100.5 rails_generators/feature/feature_generator.rb
kosmas58-cucumber-0.2.0.1 rails_generators/feature/feature_generator.rb
kosmas58-cucumber-0.2.0 rails_generators/feature/feature_generator.rb
kosmas58-cucumber-0.2.2.1 rails_generators/feature/feature_generator.rb
kosmas58-cucumber-0.2.3.3 rails_generators/feature/feature_generator.rb