Class: RuboCop::Cop::Rails::PluralizationGrammar

Inherits:
RuboCop::Cop
  • Object
show all
Defined in:
lib/rubocop/cop/rails/pluralization_grammar.rb

Overview

This cop checks for correct grammar when using ActiveSupport’s core extensions to the numeric classes.

Examples:

# bad
3.day.ago
1.months.ago

# good
3.days.ago
1.month.ago

Constant Summary collapse

SINGULAR_DURATION_METHODS =
{ second: :seconds,
minute: :minutes,
hour: :hours,
day: :days,
week: :weeks,
fortnight: :fortnights,
month: :months,
year: :years }.freeze
PLURAL_DURATION_METHODS =
SINGULAR_DURATION_METHODS.invert.freeze
MSG =
'Prefer `%<number>s.%<correct>s`.'

Instance Method Summary collapse

Instance Method Details

#autocorrect(node) ⇒ Object



40
41
42
43
44
45
46
# File 'lib/rubocop/cop/rails/pluralization_grammar.rb', line 40

def autocorrect(node)
  lambda do |corrector|
    method_name = node.loc.selector.source

    corrector.replace(node.loc.selector, correct_method(method_name))
  end
end

#on_send(node) ⇒ Object



31
32
33
34
35
36
37
38
# File 'lib/rubocop/cop/rails/pluralization_grammar.rb', line 31

def on_send(node)
  return unless duration_method?(node.method_name)
  return unless literal_number?(node.receiver)

  return unless offense?(node)

  add_offense(node)
end