Class: RuboCop::Formatter::HTMLFormatter::ERBContext

Inherits:
Object
  • Object
show all
Includes:
TextUtil, PathUtil
Defined in:
lib/rubocop/formatter/html_formatter.rb

Overview

This class provides helper methods used in the ERB template.

Constant Summary collapse

SEVERITY_COLORS =
{
  refactor:   Color.new(0xED, 0x9C, 0x28, 1.0),
  convention: Color.new(0xED, 0x9C, 0x28, 1.0),
  warning:    Color.new(0x96, 0x28, 0xEF, 1.0),
  error:      Color.new(0xD2, 0x32, 0x2D, 1.0),
  fatal:      Color.new(0xD2, 0x32, 0x2D, 1.0)
}.freeze
LOGO_IMAGE_PATH =
File.expand_path('../../../../assets/logo.png', __FILE__)

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from TextUtil

pluralize

Methods included from PathUtil

absolute?, find_file_upwards, match_path?, pwd, relative_path, reset_pwd, smart_path

Constructor Details

#initialize(files, summary) ⇒ ERBContext

Returns a new instance of ERBContext.



80
81
82
83
# File 'lib/rubocop/formatter/html_formatter.rb', line 80

def initialize(files, summary)
  @files = files.sort_by(&:path)
  @summary = summary
end

Instance Attribute Details

#filesObject (readonly)

Returns the value of attribute files.



78
79
80
# File 'lib/rubocop/formatter/html_formatter.rb', line 78

def files
  @files
end

#summaryObject (readonly)

Returns the value of attribute summary.



78
79
80
# File 'lib/rubocop/formatter/html_formatter.rb', line 78

def summary
  @summary
end

Instance Method Details

#base64_encoded_logo_imageObject



127
128
129
130
# File 'lib/rubocop/formatter/html_formatter.rb', line 127

def base64_encoded_logo_image
  image = File.read(LOGO_IMAGE_PATH, binmode: true)
  Base64.encode64(image)
end

#bindingObject

Make Kernel#binding public.



86
87
88
# File 'lib/rubocop/formatter/html_formatter.rb', line 86

def binding
  super
end

#decorated_message(offense) ⇒ Object



90
91
92
93
94
# File 'lib/rubocop/formatter/html_formatter.rb', line 90

def decorated_message(offense)
  offense.message.gsub(/`(.+?)`/) do
    "<code>#{Regexp.last_match(1)}</code>"
  end
end

#escape(s) ⇒ Object



123
124
125
# File 'lib/rubocop/formatter/html_formatter.rb', line 123

def escape(s)
  CGI.escapeHTML(s)
end

#highlighted_source_line(offense) ⇒ Object



96
97
98
99
100
101
# File 'lib/rubocop/formatter/html_formatter.rb', line 96

def highlighted_source_line(offense)
  source_before_highlight(offense) +
    hightlight_source_tag(offense) +
    source_after_highlight(offense) +
    possible_ellipses(offense.location)
end

#hightlight_source_tag(offense) ⇒ Object



103
104
105
106
107
# File 'lib/rubocop/formatter/html_formatter.rb', line 103

def hightlight_source_tag(offense)
  "<span class=\"highlight #{offense.severity}\">" \
    "#{escape(offense.highlighted_area.source)}" \
    '</span>'
end

#possible_ellipses(location) ⇒ Object



119
120
121
# File 'lib/rubocop/formatter/html_formatter.rb', line 119

def possible_ellipses(location)
  location.first_line == location.last_line ? '' : " #{ELLIPSES}"
end

#source_after_highlight(offense) ⇒ Object



114
115
116
117
# File 'lib/rubocop/formatter/html_formatter.rb', line 114

def source_after_highlight(offense)
  source_line = offense.location.source_line
  escape(source_line[offense.highlighted_area.end_pos..-1])
end

#source_before_highlight(offense) ⇒ Object



109
110
111
112
# File 'lib/rubocop/formatter/html_formatter.rb', line 109

def source_before_highlight(offense)
  source_line = offense.location.source_line
  escape(source_line[0...offense.highlighted_area.begin_pos])
end