Class: Rubocop::Cop::Style::NumericLiterals

Inherits:
Cop
  • Object
show all
Defined in:
lib/rubocop/cop/style/numeric_literals.rb

Overview

This cop checks for big numeric literals without _ between groups of digits in them.

Constant Summary collapse

MSG =
'Separate every 3 digits in the integer portion of a number' \
'with underscores(_).'

Constants inherited from Cop

Cop::OPERATOR_METHODS

Instance Attribute Summary

Attributes inherited from Cop

#config, #corrections, #offences, #processed_source

Instance Method Summary collapse

Methods inherited from Cop

#add_offence, all, #autocorrect?, #autocorrect_action, #convention, #cop_config, #cop_name, cop_name, cop_type, #debug?, #ignore_node, inherited, #initialize, lint?, #message, rails?, style?, #warning

Constructor Details

This class inherits a constructor from Rubocop::Cop::Cop

Instance Method Details

#check(node) ⇒ Object



28
29
30
31
32
33
34
35
36
37
# File 'lib/rubocop/cop/style/numeric_literals.rb', line 28

def check(node)
  value, = *node

  if enough_digits?(value)
    int = integer_part(node)
    if int =~ /\d{4}/ || int =~ /_\d{1,2}_/
      convention(node, :expression)
    end
  end
end

#enough_digits?(number) ⇒ Boolean

Returns:

  • (Boolean)


16
17
18
# File 'lib/rubocop/cop/style/numeric_literals.rb', line 16

def enough_digits?(number)
  number.to_s.size >= min_digits
end

#integer_part(node) ⇒ Object



39
40
41
# File 'lib/rubocop/cop/style/numeric_literals.rb', line 39

def integer_part(node)
  node.loc.expression.source.split('.').first
end

#min_digitsObject



12
13
14
# File 'lib/rubocop/cop/style/numeric_literals.rb', line 12

def min_digits
  cop_config['MinDigits']
end

#on_fload(node) ⇒ Object



24
25
26
# File 'lib/rubocop/cop/style/numeric_literals.rb', line 24

def on_fload(node)
  check(node)
end

#on_int(node) ⇒ Object



20
21
22
# File 'lib/rubocop/cop/style/numeric_literals.rb', line 20

def on_int(node)
  check(node)
end