class Gurke::Builder

Attributes

features[R]
keywords[W]

Public Class Methods

new() click to toggle source
# File lib/gurke/builder.rb, line 10
def initialize
  @language = 'en'
  @parser   = Gherkin::Parser::Parser.new(
    self, true, 'root', false, @language
  )
end

Public Instance Methods

background(raw) click to toggle source
# File lib/gurke/builder.rb, line 56
def background(raw)
  @context = Background.new @file, raw.line, raw
  @type    = nil

  @feature.backgrounds << @context
end
eof(*) click to toggle source
# File lib/gurke/builder.rb, line 80
def eof(*)
  @features.reject! {|f| f.scenarios.empty? }
  @feature  = nil
  @scenario = nil
  @context  = nil
  @type     = nil
  @file     = nil
end
feature(raw) click to toggle source
# File lib/gurke/builder.rb, line 46
def feature(raw)
  tags = raw.tags.map {|t| Tag.new @file, t.line, t }

  @feature  = Feature.new(@file, raw.line, tags, raw)
  @scenario = nil
  @type     = nil

  features << @feature
end
keywords() click to toggle source
# File lib/gurke/builder.rb, line 17
def keywords
  @keywords ||= begin
    keywords = {}
    Gherkin::I18n::LANGUAGES[@language].each do |k, v|
      v.split('|').map(&:strip).each do |str|
        keywords[str] = k.to_sym if str != '*'
      end
    end

    keywords
  end
end
load(files) click to toggle source
# File lib/gurke/builder.rb, line 30
def load(files)
  FeatureList.new.tap do |fl|
    @features = fl

    files.each do |file|
      @parser.parse File.read(file), file, 0
    end

    @features = nil
  end
end
scenario(raw) click to toggle source
# File lib/gurke/builder.rb, line 63
def scenario(raw)
  tags  = raw.tags.map {|t| Tag.new @file, t.line, t }
  tags += features.last.tags

  @scenario = Scenario.new @feature, @file, raw.line, tags, raw
  @context  = @scenario
  @type     = nil

  @feature.scenarios << @scenario
end
step(raw) click to toggle source
# File lib/gurke/builder.rb, line 74
def step(raw)
  @type = lookup_type raw.keyword.strip

  @context.steps << Step.new(@file, raw.line, @type, raw)
end
uri(raw) click to toggle source
# File lib/gurke/builder.rb, line 42
def uri(raw)
  @file = raw.to_s
end

Private Instance Methods

lookup_type(keyword) click to toggle source
# File lib/gurke/builder.rb, line 91
def lookup_type(keyword)
  case (kw = keywords.fetch(keyword))
    when :and, :but
      @type
    else
      kw
  end
end