class RuboCop::Cop::Style::ClassAndModuleChildren
This cop checks the style of children definitions at classes and modules. Basically there are two different styles:
nested - have each child on its own line
class Foo class Bar end end
compact - combine definitions as much as possible
class Foo::Bar end
The compact style is only forced for classes/modules with one child.
Constants
- COMPACT_MSG
- NESTED_MSG
Public Instance Methods
on_class(node)
click to toggle source
# File lib/rubocop/cop/style/class_and_module_children.rb, line 27 def on_class(node) _name, superclass, body = *node return if superclass && style != :nested check_style(node, body) end
on_module(node)
click to toggle source
# File lib/rubocop/cop/style/class_and_module_children.rb, line 33 def on_module(node) _name, body = *node check_style(node, body) end
Private Instance Methods
check_compact_style(node, body)
click to toggle source
# File lib/rubocop/cop/style/class_and_module_children.rb, line 53 def check_compact_style(node, body) return unless one_child?(body) && !compact_node_name?(node) add_offense(node, location: :name, message: COMPACT_MSG) end
check_nested_style(node)
click to toggle source
# File lib/rubocop/cop/style/class_and_module_children.rb, line 48 def check_nested_style(node) return unless compact_node_name?(node) add_offense(node, location: :name, message: NESTED_MSG) end
check_style(node, body)
click to toggle source
# File lib/rubocop/cop/style/class_and_module_children.rb, line 40 def check_style(node, body) if style == :nested check_nested_style(node) else check_compact_style(node, body) end end
compact_node_name?(node)
click to toggle source
# File lib/rubocop/cop/style/class_and_module_children.rb, line 62 def compact_node_name?(node) node.loc.name.source =~ /::/ end
one_child?(body)
click to toggle source
# File lib/rubocop/cop/style/class_and_module_children.rb, line 58 def one_child?(body) body && %i[module class].include?(body.type) end