Class: RuboCop::Cop::Money::MissingCurrency

Inherits:
RuboCop::Cop show all
Defined in:
lib/rubocop/cop/money/missing_currency.rb

Instance Method Summary collapse

Instance Method Details

#autocorrect(node) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/rubocop/cop/money/missing_currency.rb', line 48

def autocorrect(node)
  receiver, method, _ = *node

  lambda do |corrector|
    money_new(node) do |amount, currency_arg|
      return if currency_arg

      corrector.replace(
        node.loc.expression,
        "#{receiver.source}.#{method}(#{amount&.source || 0}, #{replacement_currency})"
      )
    end

    if to_money_without_currency?(node)
      corrector.insert_after(node.loc.expression, "(#{replacement_currency})")
    elsif to_money_block?(node)
      corrector.replace(
        node.loc.expression,
        "#{receiver.source}.#{method} { |x| x.to_money(#{replacement_currency}) }"
      )
    end
  end
end

#on_send(node) ⇒ Object Also known as: on_csend



34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/rubocop/cop/money/missing_currency.rb', line 34

def on_send(node)
  money_new(node) do |amount, currency_arg|
    return if amount&.splat_type?
    return if currency_arg

    add_offense(node, message: 'Money is missing currency argument')
  end

  if to_money_block?(node) || to_money_without_currency?(node)
    add_offense(node, message: 'to_money is missing currency argument')
  end
end