Class: RuboCop::Formatter::FuubarStyleFormatter
Overview
This formatter displays a progress bar and shows details of offenses as soon as they are detected. This is inspired by the Fuubar formatter for RSpec by Jeff Kreeftmeijer. github.com/jeffkreeftmeijer/fuubar
Constant Summary
collapse
- RESET_SEQUENCE =
"\e[0m".freeze
ClangStyleFormatter::ELLIPSES
SimpleTextFormatter::COLOR_FOR_SEVERITY
Instance Attribute Summary
#options, #output
Instance Method Summary
collapse
#report_file
#finished, #report_file, #report_summary
Methods included from PathUtil
absolute?, match_path?, pwd, relative_path, reset_pwd, smart_path
#colorize, #rainbow
#file_started, #finished
Constructor Details
14
15
16
17
18
|
# File 'lib/rubocop/formatter/fuubar_style_formatter.rb', line 14
def initialize(*output)
@severest_offense = nil
super
end
|
Instance Method Details
#count_stats(offenses) ⇒ Object
51
52
53
54
55
56
57
58
59
|
# File 'lib/rubocop/formatter/fuubar_style_formatter.rb', line 51
def count_stats(offenses)
super
offenses = offenses.reject(&:corrected?)
return if offenses.empty?
offenses << @severest_offense if @severest_offense
@severest_offense = offenses.max_by(&:severity)
end
|
#file_finished(file, offenses) ⇒ Object
40
41
42
43
44
45
46
47
48
49
|
# File 'lib/rubocop/formatter/fuubar_style_formatter.rb', line 40
def file_finished(file, offenses)
count_stats(offenses)
unless offenses.empty?
@progressbar.clear
report_file(file, offenses)
end
with_color { @progressbar.increment }
end
|
#progressbar_color ⇒ Object
71
72
73
74
75
76
77
|
# File 'lib/rubocop/formatter/fuubar_style_formatter.rb', line 71
def progressbar_color
if @severest_offense
COLOR_FOR_SEVERITY[@severest_offense.severity.name]
else
:green
end
end
|
#started(target_files) ⇒ Object
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/rubocop/formatter/fuubar_style_formatter.rb', line 20
def started(target_files)
super
@severest_offense = nil
file_phrase = target_files.count == 1 ? 'file' : 'files'
bar_format = " %c/%C #{file_phrase} |%w>%i| %e "
@progressbar = ProgressBar.create(
output: output,
total: target_files.count,
format: bar_format,
autostart: false
)
with_color { @progressbar.start }
end
|
#with_color ⇒ Object
61
62
63
64
65
66
67
68
69
|
# File 'lib/rubocop/formatter/fuubar_style_formatter.rb', line 61
def with_color
if rainbow.enabled
output.write colorize('', progressbar_color).chomp(RESET_SEQUENCE)
yield
output.write RESET_SEQUENCE
else
yield
end
end
|