class RuboCop::Cop::Style::EmptyMethod
end
def self.foo(bar)
end
def foo(bar)
# good
def self.foo(bar); end
def foo(bar); end
# bad
@example EnforcedStyle: expanded
def self.foo(bar); end
end
# baz
def foo(bar)
def foo(bar); end
# good
end
def self.foo(bar)
end
def foo(bar)
# bad
@example EnforcedStyle: compact (default)
comments.
Note: A method definition is not considered empty if it contains
to go on its own line (expanded style).
line (compact style), but it can be configured to enforce the ‘end`
By default it enforces empty method definitions to go on a single
This cop checks for the formatting of empty method definitions.
def autocorrect(node)
def autocorrect(node) lambda do |corrector| corrector.replace(node.source_range, corrected(node)) end end
def comment_lines?(node)
def comment_lines?(node) processed_source[line_range(node)].any? { |line| comment_line?(line) } end
def compact?(node)
def compact?(node) node.single_line? end
def compact_style?
def compact_style? style == :compact end
def correct_style?(node)
def correct_style?(node) compact_style? && compact?(node) || expanded_style? && expanded?(node) end
def corrected(node)
def corrected(node) arguments = node.arguments? ? node.arguments.source : '' scope = node.receiver ? "#{node.receiver.source}." : '' signature = [scope, node.method_name, arguments].join ["def #{signature}", 'end'].join(joint(node)) end
def expanded?(node)
def expanded?(node) node.multiline? end
def expanded_style?
def expanded_style? style == :expanded end
def joint(node)
def joint(node) indent = ' ' * node.loc.column compact_style? ? '; ' : "\n#{indent}" end
def message(_node)
def message(_node) compact_style? ? MSG_COMPACT : MSG_EXPANDED end
def on_def(node)
def on_def(node) return if node.body || comment_lines?(node) return if correct_style?(node) add_offense(node) end