class Cucumber::Tree::Feature

def Scenario(name, &proc)

def Scenario(name, &proc)
  line = caller[0] =~ /:(\d+)$/ ? $1 : nil
  add_scenario(name, line, &proc)
end

def Table(matrix = [], &proc)

def Table(matrix = [], &proc)
  table = Table.new(matrix)
  proc.call(table)
  template_scenario = @scenarios.last
  template_scenario.table_header = matrix[0]
  matrix[1..-1].each do |row|
    add_row_scenario(template_scenario, row, row.line)
  end
end

def accept(visitor)

def accept(visitor)
  visitor.visit_header(@header)
  @scenarios.each do |scenario|
    if scenario.row?
      visitor.visit_row_scenario(scenario)
    else
      visitor.visit_regular_scenario(scenario)
    end
  end
end

def add_row_scenario(template_scenario, values, line)

def add_row_scenario(template_scenario, values, line)
  scenario = RowScenario.new(self, template_scenario, values, line)
  @scenarios << scenario
  scenario
end

def add_scenario(name, line, &proc)

def add_scenario(name, line, &proc)
  scenario = Scenario.new(self, name, line, &proc)
  @scenarios << scenario
  scenario
end

def initialize(header, &proc)

def initialize(header, &proc)
  @header = header
  @scenarios = []
  instance_eval(&proc) if block_given?
end

def padding_length

def padding_length
  MIN_PADDING
end

def scenario_named(name)

def scenario_named(name)
  @scenarios.find {|s| s.name == name}
end