Object
# File lib/gherkin/formatter/filter_formatter.rb, line 13
13: def initialize(formatter, filters)
14: @formatter = formatter
15: @filter = detect_filter(filters)
16:
17: @feature_tags = []
18: @feature_element_tags = []
19: @examples_tags = []
20:
21: @feature_events = []
22: @background_events = []
23: @feature_element_events = []
24: @examples_events = []
25: end
# File lib/gherkin/formatter/filter_formatter.rb, line 37
37: def background(background)
38: @feature_element_name = background.name
39: @feature_element_range = background.line_range
40: @background_events = [background]
41: end
# File lib/gherkin/formatter/filter_formatter.rb, line 82
82: def eof
83: replay!
84: @formatter.eof
85: end
# File lib/gherkin/formatter/filter_formatter.rb, line 59
59: def examples(examples)
60: replay!
61: @examples_tags = examples.tags
62: @examples_name = examples.name
63:
64: table_body_range = examples.rows[1].line..examples.rows[1].line
65: @examples_range = examples.line_range.first..table_body_range.last
66: if(@filter.eval([], [], [table_body_range]))
67: examples.rows = @filter.filter_table_body_rows(examples.rows)
68: end
69: @examples_events = [examples]
70: end
# File lib/gherkin/formatter/filter_formatter.rb, line 31
31: def feature(feature)
32: @feature_tags = feature.tags
33: @feature_name = feature.name
34: @feature_events = [feature]
35: end
# File lib/gherkin/formatter/filter_formatter.rb, line 43
43: def scenario(scenario)
44: replay!
45: @feature_element_tags = scenario.tags
46: @feature_element_name = scenario.name
47: @feature_element_range = scenario.line_range
48: @feature_element_events = [scenario]
49: end
# File lib/gherkin/formatter/filter_formatter.rb, line 51
51: def scenario_outline(scenario_outline)
52: replay!
53: @feature_element_tags = scenario_outline.tags
54: @feature_element_name = scenario_outline.name
55: @feature_element_range = scenario_outline.line_range
56: @feature_element_events = [scenario_outline]
57: end
# File lib/gherkin/formatter/filter_formatter.rb, line 72
72: def step(step)
73: if @feature_element_events.any?
74: @feature_element_events << step
75: else
76: @background_events << step
77: end
78:
79: @feature_element_range = @feature_element_range.first..step.line_range.last
80: end
# File lib/gherkin/formatter/filter_formatter.rb, line 89
89: def detect_filter(filters)
90: raise "Inconsistent filters: #{filters.inspect}" if filters.map{|filter| filter.class}.uniq.length > 1
91: case(filters[0])
92: when Fixnum
93: LineFilter.new(filters)
94: when Regexp
95: RegexpFilter.new(filters)
96: when String
97: TagFilter.new(filters)
98: end
99: end
# File lib/gherkin/formatter/filter_formatter.rb, line 101
101: def replay!
102: feature_element_ok = @filter.eval(
103: (@feature_tags + @feature_element_tags),
104: [@feature_name, @feature_element_name].compact,
105: [@feature_element_range].compact
106: )
107: examples_ok = @filter.eval(
108: (@feature_tags + @feature_element_tags + @examples_tags),
109: [@feature_name, @feature_element_name, @examples_name].compact,
110: [@feature_element_range, @examples_range].compact
111: )
112:
113: if feature_element_ok || examples_ok
114: replay_events!(@feature_events)
115: replay_events!(@background_events)
116: replay_events!(@feature_element_events)
117:
118: if examples_ok
119: replay_events!(@examples_events)
120: end
121: end
122:
123: @examples_events.clear
124: @examples_tags.clear
125: @examples_name = nil
126: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.