Class: Gherkin::Formatter::PrettyFormatter
- Inherits:
-
Object
- Object
- Gherkin::Formatter::PrettyFormatter
show all
- Includes:
- AnsiEscapes, Escaping
- Defined in:
- lib/gherkin/formatter/pretty_formatter.rb
Defined Under Namespace
Classes: ColorFormat, MonochromeFormat
Constant Summary
Constants included
from AnsiEscapes
AnsiEscapes::ALIASES, AnsiEscapes::COLORS
Instance Method Summary
collapse
Methods included from Escaping
#escape_cell
#reset, #up
Constructor Details
#initialize(io, monochrome, executing) ⇒ PrettyFormatter
Returns a new instance of PrettyFormatter.
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/gherkin/formatter/pretty_formatter.rb', line 17
def initialize(io, monochrome, executing)
@io = io
@step_printer = StepPrinter.new
@monochrome = monochrome
@executing = executing
@steps = []
@background = @tag_statement = @formats = @statement = nil
end
|
Instance Method Details
137
138
139
|
# File 'lib/gherkin/formatter/pretty_formatter.rb', line 137
def arg_format(key)
format("#{key}_arg")
end
|
#background(background) ⇒ Object
39
40
41
42
|
# File 'lib/gherkin/formatter/pretty_formatter.rb', line 39
def background(background)
replay
@statement = background
end
|
#done ⇒ Object
159
160
161
|
# File 'lib/gherkin/formatter/pretty_formatter.rb', line 159
def done
end
|
#eof ⇒ Object
154
155
156
157
|
# File 'lib/gherkin/formatter/pretty_formatter.rb', line 154
def eof
replay
end
|
#examples(examples) ⇒ Object
78
79
80
81
82
83
84
85
86
|
# File 'lib/gherkin/formatter/pretty_formatter.rb', line 78
def examples(examples)
replay
@io.puts
(examples., ' ')
print_tags(examples.tags, ' ')
@io.puts " #{examples.keyword}: #{examples.name}"
print_description(examples.description, ' ')
table(examples.rows)
end
|
#feature(feature) ⇒ Object
32
33
34
35
36
37
|
# File 'lib/gherkin/formatter/pretty_formatter.rb', line 32
def feature(feature)
(feature., '')
print_tags(feature.tags, '')
@io.puts "#{feature.keyword}: #{feature.name}"
print_description(feature.description, ' ', false)
end
|
141
142
143
144
145
146
147
148
149
150
151
152
|
# File 'lib/gherkin/formatter/pretty_formatter.rb', line 141
def format(key)
if @formats.nil?
if @monochrome
@formats = Hash.new(MonochromeFormat.new)
else
@formats = Hash.new do |formats, status|
formats[status] = ColorFormat.new(status)
end
end
end
@formats[key]
end
|
#match(match) ⇒ Object
92
93
94
95
96
|
# File 'lib/gherkin/formatter/pretty_formatter.rb', line 92
def match(match)
@match = match
print_statement
print_step('executing', @match.arguments, @match.location, false)
end
|
#print_statement ⇒ Object
59
60
61
62
63
64
65
66
67
68
69
70
|
# File 'lib/gherkin/formatter/pretty_formatter.rb', line 59
def print_statement
return if @statement.nil?
calculate_location_indentations
@io.puts
(@statement., ' ')
print_tags(@statement.tags, ' ') if @statement.respond_to?(:tags) @io.write " #{@statement.keyword}: #{@statement.name}"
location = @executing ? "#{@uri}:#{@statement.line}" : nil
@io.puts indented_location(location, true)
print_description(@statement.description, ' ')
@statement = nil
end
|
#print_step(status, arguments, location, proceed) ⇒ Object
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
# File 'lib/gherkin/formatter/pretty_formatter.rb', line 103
def print_step(status, arguments, location, proceed)
step = proceed ? @steps.shift : @steps[0]
text_format = format(status)
arg_format = arg_format(status)
(step., ' ')
@io.write(' ')
@io.write(text_format.text(step.keyword))
@step_printer.write_step(@io, text_format, arg_format, step.name, arguments)
@io.puts(indented_location(location, proceed))
doc_string(step.doc_string) if step.doc_string
table(step.rows) if step.rows
end
|
#print_steps ⇒ Object
72
73
74
75
76
|
# File 'lib/gherkin/formatter/pretty_formatter.rb', line 72
def print_steps
while(@steps.any?)
print_step('skipped', [], nil, true)
end
end
|
#replay ⇒ Object
54
55
56
57
|
# File 'lib/gherkin/formatter/pretty_formatter.rb', line 54
def replay
print_statement
print_steps
end
|
#result(result) ⇒ Object
98
99
100
101
|
# File 'lib/gherkin/formatter/pretty_formatter.rb', line 98
def result(result)
@io.write(up(1))
print_step(result.status, @match.arguments, @match.location, true)
end
|
#scenario(scenario) ⇒ Object
44
45
46
47
|
# File 'lib/gherkin/formatter/pretty_formatter.rb', line 44
def scenario(scenario)
replay
@statement = scenario
end
|
#scenario_outline(scenario_outline) ⇒ Object
49
50
51
52
|
# File 'lib/gherkin/formatter/pretty_formatter.rb', line 49
def scenario_outline(scenario_outline)
replay
@statement = scenario_outline
end
|
#step(step) ⇒ Object
88
89
90
|
# File 'lib/gherkin/formatter/pretty_formatter.rb', line 88
def step(step)
@steps << step
end
|
#table(rows) ⇒ Object
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
|
# File 'lib/gherkin/formatter/pretty_formatter.rb', line 163
def table(rows)
cell_lengths = rows.map do |row|
row.cells.map do |cell|
escape_cell(cell).unpack("U*").length
end
end
max_lengths = cell_lengths.transpose.map { |col_lengths| col_lengths.max }.flatten
rows.each_with_index do |row, i|
row..each do ||
@io.puts " #{.value}"
end
j = -1
@io.puts ' | ' + row.cells.zip(max_lengths).map { |cell, max_length|
j += 1
color(cell, nil, j) + ' ' * (max_length - cell_lengths[i][j])
}.join(' | ') + ' |'
end
end
|
#uri(uri) ⇒ Object
28
29
30
|
# File 'lib/gherkin/formatter/pretty_formatter.rb', line 28
def uri(uri)
@uri = uri
end
|