class RuboCop::Cop::Performance::BigDecimalWithNumericArgument
def on_send(node)
def on_send(node) if (numeric = big_decimal_with_numeric_argument(node)) if numeric.numeric_type? add_offense(numeric, message: MSG_FROM_FLOAT_TO_STRING) do |corrector| corrector.wrap(numeric, "'", "'") end elsif numeric.value.match?(/\A\d+\z/) add_offense(numeric, message: MSG_FROM_INTEGER_TO_STRING) do |corrector| corrector.replace(numeric, numeric.value) end end elsif (numeric_to_d = to_d(node)) if numeric_to_d.numeric_type? add_offense(numeric_to_d, message: MSG_FROM_FLOAT_TO_STRING) do |corrector| big_decimal_args = node.arguments.map(&:source).unshift("'#{numeric_to_d.source}'").join(', ') corrector.replace(node, "BigDecimal(#{big_decimal_args})") end elsif numeric_to_d.value.match?(/\A\d+\z/) add_offense(numeric_to_d, message: MSG_FROM_INTEGER_TO_STRING) do |corrector| corrector.replace(node, "#{numeric_to_d.value}.to_d") end end end end