class RuboCop::Cop::Style::ModuleFunction
implications to each approach.
These offenses are not auto-corrected since there are different
end
# …
extend self
module Test
# good
end
# …
module_function
module Test
# bad
@example EnforcedStyle: extend_self
end
# …
module_function
module Test
# good
end
# …
extend self
module Test
# bad
@example EnforcedStyle: module_function (default)
Supported styles are: module_function, extend_self.
module.
This cop checks for use of ‘extend self` or `module_function` in a
def autocorrect(node)
def autocorrect(node) lambda do |corrector| if extend_self_node?(node) corrector.replace(node.source_range, 'module_function') else corrector.replace(node.source_range, 'extend self') end end end
def each_wrong_style(nodes)
def each_wrong_style(nodes) case style when :module_function nodes.each do |node| yield node if extend_self_node?(node) end when :extend_self nodes.each do |node| yield node if module_function_node?(node) end end end
def message(_node)
def message(_node) style == :module_function ? MODULE_FUNCTION_MSG : EXTEND_SELF_MSG end
def on_module(node)
def on_module(node) _name, body = *node return unless body && body.begin_type? each_wrong_style(body.children) do |child_node| add_offense(child_node) end end