Class: Gherkin::Formatter::FilterFormatter

Inherits:
Object
  • Object
show all
Defined in:
lib/gherkin/formatter/filter_formatter.rb

Instance Method Summary collapse

Constructor Details

#initialize(formatter, filters) ⇒ FilterFormatter

Returns a new instance of FilterFormatter.



13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/gherkin/formatter/filter_formatter.rb', line 13

def initialize(formatter, filters)
  @formatter = formatter
  @filter    = detect_filter(filters)

  @feature_tags           = []
  @feature_element_tags   = []
  @examples_tags          = []

  @feature_events         = []
  @background_events      = []
  @feature_element_events = []
  @examples_events        = []
end

Instance Method Details

#background(background) ⇒ Object



37
38
39
40
41
# File 'lib/gherkin/formatter/filter_formatter.rb', line 37

def background(background)
  @feature_element_name   = background.name
  @feature_element_range  = background.line_range
  @background_events      = [background]
end

#doneObject



92
93
94
# File 'lib/gherkin/formatter/filter_formatter.rb', line 92

def done
  @formatter.done
end

#eofObject



87
88
89
90
# File 'lib/gherkin/formatter/filter_formatter.rb', line 87

def eof
  replay!
  @formatter.eof
end

#examples(examples) ⇒ Object



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/gherkin/formatter/filter_formatter.rb', line 59

def examples(examples)
  replay!
  @examples_tags = examples.tags
  @examples_name = examples.name

  table_body_range = case(examples.rows.length)
    when 0 then examples.line_range.last..examples.line_range.last
    when 1 then examples.rows[0].line..examples.rows[0].line
    else examples.rows[1].line..examples.rows[-1].line
  end

  @examples_range = examples.line_range.first..table_body_range.last
  if(@filter.eval([], [], [table_body_range]))
    examples.rows = @filter.filter_table_body_rows(examples.rows)
  end
  @examples_events = [examples]
end

#feature(feature) ⇒ Object



31
32
33
34
35
# File 'lib/gherkin/formatter/filter_formatter.rb', line 31

def feature(feature)
  @feature_tags   = feature.tags
  @feature_name   = feature.name
  @feature_events = [feature]
end

#scenario(scenario) ⇒ Object



43
44
45
46
47
48
49
# File 'lib/gherkin/formatter/filter_formatter.rb', line 43

def scenario(scenario)
  replay!
  @feature_element_tags   = scenario.tags
  @feature_element_name   = scenario.name
  @feature_element_range  = scenario.line_range
  @feature_element_events = [scenario]
end

#scenario_outline(scenario_outline) ⇒ Object



51
52
53
54
55
56
57
# File 'lib/gherkin/formatter/filter_formatter.rb', line 51

def scenario_outline(scenario_outline)
  replay!
  @feature_element_tags   = scenario_outline.tags
  @feature_element_name   = scenario_outline.name
  @feature_element_range  = scenario_outline.line_range
  @feature_element_events = [scenario_outline]
end

#step(step) ⇒ Object



77
78
79
80
81
82
83
84
85
# File 'lib/gherkin/formatter/filter_formatter.rb', line 77

def step(step)
  if @feature_element_events.any?
    @feature_element_events << step
  else
    @background_events << step
  end

  @feature_element_range = @feature_element_range.first..step.line_range.last
end

#uri(uri) ⇒ Object



27
28
29
# File 'lib/gherkin/formatter/filter_formatter.rb', line 27

def uri(uri)
  @formatter.uri(uri)
end