class RuboCop::Cop::Style::ClassAndModuleChildren
The compact style is only forced for classes/modules with one child.
end
class Foo::Bar
compact - combine definitions as much as possible
end
end
class Bar
class Foo
nested - have each child on its own line
modules. Basically there are two different styles:
This cop checks the style of children definitions at classes and
def check_compact_style(node, body)
def check_compact_style(node, body) return unless one_child?(body) && !compact_node_name?(node) add_offense(node, :name, COMPACT_MSG) end
def check_nested_style(node)
def check_nested_style(node) return unless compact_node_name?(node) add_offense(node, :name, NESTED_MSG) end
def check_style(node, body)
def check_style(node, body) if style == :nested check_nested_style(node) else check_compact_style(node, body) end end
def compact_node_name?(node)
def compact_node_name?(node) node.loc.name.source =~ /::/ end
def on_class(node)
def on_class(node) _name, superclass, body = *node return if superclass && style != :nested check_style(node, body) end
def on_module(node)
def on_module(node) _name, body = *node check_style(node, body) end
def one_child?(body)
def one_child?(body) body && [:module, :class].include?(body.type) end