class RailsBestPractices::InlineDisables::InlineDisable

Public Class Methods

new(*args) click to toggle source
Calls superclass method RailsBestPractices::Core::Check::new
# File lib/rails_best_practices/inline_disables/inline_disable.rb, line 9
def initialize(*args)
  super
  @disabled_errors = []
end

Public Instance Methods

check(filename, content) click to toggle source
# File lib/rails_best_practices/inline_disables/inline_disable.rb, line 14
def check(filename, content)
  comments = CommentRipper.new(content).tap(&:parse).comments
  comments.each do |_sexp_type, statement, (line_number, _column)|
    add_as_disable_errors(filename, statement, line_number)
  end
end
disabled?(error) click to toggle source
# File lib/rails_best_practices/inline_disables/inline_disable.rb, line 21
def disabled?(error)
  error_key = [error.filename, error.line_number, error.type.split('::').last].join('-')
  disabled_error_keys.include?(error_key)
end

Private Instance Methods

add_as_disable_error(filename, check_name, line_number) click to toggle source
# File lib/rails_best_practices/inline_disables/inline_disable.rb, line 42
def add_as_disable_error(filename, check_name, line_number)
  @disabled_errors <<
    RailsBestPractices::Core::Error.new(
      filename: filename, line_number: line_number, message: 'disable by inline comment', type: check_name, url: url
    )
end
add_as_disable_errors(filename, statement, line_number) click to toggle source
# File lib/rails_best_practices/inline_disables/inline_disable.rb, line 32
def add_as_disable_errors(filename, statement, line_number)
  match = statement.match(/rails_b(?:est_)?p(?:ractices)?:disable (.*)/)
  return unless match

  check_names = match[1].split(',')
  check_names.each do |check_name|
    add_as_disable_error(filename, check_name.gsub(/Check$/, 'Review'), line_number)
  end
end
disabled_error_keys() click to toggle source
# File lib/rails_best_practices/inline_disables/inline_disable.rb, line 28
def disabled_error_keys
  @disabled_error_keys ||= Set.new(@disabled_errors.map { |e| [e.filename, e.line_number, e.type].join('-') })
end