module Inch module CodeObject module Proxy # a namespace object can have methods and other namespace objects # inside itself (e.g. classes and modules) class NamespaceObject < Base # The wording is a bit redundant, but this means the class and # instance attributes of the namespace def attributes self[:attributes] end MANY_ATTRIBUTES_THRESHOLD = 5 def has_many_attributes? attributes.size > MANY_ATTRIBUTES_THRESHOLD end MANY_CHILDREN_THRESHOLD = 20 def has_many_children? children.size > MANY_CHILDREN_THRESHOLD end def has_methods? children.any?(&:method?) end def pure_namespace? children.all?(&:namespace?) end end end end end