class RuboCop::Cop::Style::MethodCallWithArgsParentheses
end
bar :baz
class Foo
# bad
# IgnoreMacros: false
end
bar :baz
class Foo
# good
# IgnoreMacros: true (default)
puts ‘test’
# okay with ‘puts` listed in `IgnoredMethods`
foo.bar = baz
# Setter methods don’t need parens
# good
foo == bar
# Operators don’t need parens
# good
array.delete(e)
# good
array.delete e
# bad
@example
can be added to the ‘IgnoredMethods` list.
parameters. By default, macro methods are ignored. Additional methods
This cop checks presence of parentheses in method calls containing
def args_begin(node)
def args_begin(node) loc = node.loc selector = node.super_type? || node.yield_type? ? loc.keyword : loc.selector resize_by = args_parenthesized?(node) ? 2 : 1 selector.end.resize(resize_by) end
def args_end(node)
def args_end(node) node.loc.expression.end end
def args_parenthesized?(node)
def args_parenthesized?(node) return false unless node.arguments.one? first_node = node.arguments.first first_node.begin_type? && first_node.parenthesized_call? end
def autocorrect(node)
def autocorrect(node) lambda do |corrector| corrector.replace(args_begin(node), '(') unless args_parenthesized?(node) corrector.insert_after(args_end(node), ')') end end end
def ignore_macros?
def ignore_macros? cop_config['IgnoreMacros'] end
def ignored_method?(node)
def ignored_method?(node) node.operator_method? || node.setter_method? || ignore_macros? && node.macro? || super(node.method_name) end
def on_send(node)
def on_send(node) return if ignored_method?(node) return unless node.arguments? && !node.parenthesized? add_offense(node) end