123456789_123456789_123456789_123456789_123456789_

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

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Instance Chain:
Inherits: Object
Defined in: lib/rubocop/formatter/html_formatter.rb

Overview

This class provides helper methods used in the ERB template.

Constant Summary

::RuboCop::PathUtil - Included

HIDDEN_FILE_PATTERN, SMART_PATH_CACHE

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new(files, summary) ⇒ ERBContext

[ GitHub ]

  
# File 'lib/rubocop/formatter/html_formatter.rb', line 69

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

Instance Attribute Details

#files (readonly)

[ GitHub ]

  
# File 'lib/rubocop/formatter/html_formatter.rb', line 67

attr_reader :files, :summary

#summary (readonly)

[ GitHub ]

  
# File 'lib/rubocop/formatter/html_formatter.rb', line 67

attr_reader :files, :summary

Instance Method Details

#base64_encoded_logo_image

[ GitHub ]

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

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

  # `Base64.encode64` compatible:
  # https://github.com/ruby/base64/blob/v0.1.1/lib/base64.rb#L27-L40
  [image].pack('m')
end

#binding

Make Kernel#binding public.

[ GitHub ]

  
# File 'lib/rubocop/formatter/html_formatter.rb', line 76

def binding
  super
end

#decorated_message(offense)

[ GitHub ]

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

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

#escape(string)

[ GitHub ]

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

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

#highlight_source_tag(offense)

[ GitHub ]

  
# File 'lib/rubocop/formatter/html_formatter.rb', line 92

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

#highlighted_source_line(offense)

[ GitHub ]

  
# File 'lib/rubocop/formatter/html_formatter.rb', line 85

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

#possible_ellipses(location)

[ GitHub ]

  
# File 'lib/rubocop/formatter/html_formatter.rb', line 108

def possible_ellipses(location)
  location.single_line? ? '' : " #{ELLIPSES}"
end

#render_css

[ GitHub ]

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

def render_css
  context = CSSContext.new
  template = File.read(CSS_PATH, encoding: Encoding::UTF_8)
  erb = ERB.new(template, trim_mode: '-')
  erb.result(context.binding).lines.map do |line|
    line == "\n" ? line : "      #{line}"
  end.join
end

#source_after_highlight(offense)

[ GitHub ]

  
# File 'lib/rubocop/formatter/html_formatter.rb', line 103

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

#source_before_highlight(offense)

[ GitHub ]

  
# File 'lib/rubocop/formatter/html_formatter.rb', line 98

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