Parent

Gherkin::Formatter::FilterFormatter

Public Class Methods

new(formatter, filters) click to toggle source
    # 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

Public Instance Methods

background(background) click to toggle source
    # 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
eof() click to toggle source
    # File lib/gherkin/formatter/filter_formatter.rb, line 82
82:       def eof
83:         replay!
84:         @formatter.eof
85:       end
examples(examples) click to toggle source
    # 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
feature(feature) click to toggle source
    # 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
scenario(scenario) click to toggle source
    # 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
scenario_outline(scenario_outline) click to toggle source
    # 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
step(step) click to toggle source
    # 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
uri(uri) click to toggle source
    # File lib/gherkin/formatter/filter_formatter.rb, line 27
27:       def uri(uri)
28:         @formatter.uri(uri)
29:       end

Private Instance Methods

detect_filter(filters) click to toggle source
    # 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
replay!() click to toggle source
     # 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
replay_events!(events) click to toggle source
     # File lib/gherkin/formatter/filter_formatter.rb, line 128
128:       def replay_events!(events)
129:         events.each do |event|
130:           event.replay(@formatter)
131:         end
132:         events.clear
133:       end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.