class RubocopChallenger::Rubocop::Rule

Parse rubocop rule which loaded from Rubocop::TodoReader class

Attributes

contents[R]
offense_count[R]
title[R]

Public Class Methods

new(contents) click to toggle source
# File lib/rubocop_challenger/rubocop/rule.rb, line 11
def initialize(contents)
  @contents = contents.dup
  @title = extract_title
  @offense_count = extract_offense_count
end

Public Instance Methods

<=>(other) click to toggle source
# File lib/rubocop_challenger/rubocop/rule.rb, line 25
def <=>(other)
  offense_count <=> other.offense_count
end
==(other) click to toggle source

Compare to other rule

@param other [Rule] Target of comparison @return [Boolean] Return true in case of coincidence

# File lib/rubocop_challenger/rubocop/rule.rb, line 21
def ==(other)
  title == other.title
end
auto_correctable?() click to toggle source
# File lib/rubocop_challenger/rubocop/rule.rb, line 29
def auto_correctable?
  contents.include?('# Cop supports --auto-correct')
end
rubydoc_url() click to toggle source
# File lib/rubocop_challenger/rubocop/rule.rb, line 33
def rubydoc_url
  if title.start_with?('RSpec')
    "https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/#{title}"
  else
    "https://www.rubydoc.info/gems/rubocop/RuboCop/Cop/#{title}"
  end
end

Private Instance Methods

extract_offense_count() click to toggle source
# File lib/rubocop_challenger/rubocop/rule.rb, line 48
def extract_offense_count
  contents =~ /# Offense count: (\d+)/
  Regexp.last_match(1).to_i
end
extract_title() click to toggle source
# File lib/rubocop_challenger/rubocop/rule.rb, line 43
def extract_title
  contents =~ /^([^# ].+):$/
  Regexp.last_match(1)
end