Class: Rubyzen::Declarations::ModuleDeclaration
- Inherits:
-
Object
- Object
- Rubyzen::Declarations::ModuleDeclaration
- Includes:
- Providers::AttributesProvider, Providers::ClassNameProvider, Providers::ConstantsProvider, Providers::FilePathProvider, Providers::LineNumberProvider, Providers::LinesOfCodeProvider
- Defined in:
- lib/rubyzen/declarations/module_declaration.rb
Overview
Represents a Ruby module definition.
Instance Attribute Summary collapse
- #file_declaration ⇒ FileDeclaration readonly
- #node ⇒ RuboCop::AST::Node readonly
Instance Method Summary collapse
-
#all_methods ⇒ Collections::MethodsCollection
Returns methods defined directly in this module.
-
#classes ⇒ Array<ClassDeclaration>
Returns classes defined within this module.
-
#initialize(node, file_declaration) ⇒ ModuleDeclaration
constructor
A new instance of ModuleDeclaration.
-
#modules ⇒ Array<ModuleDeclaration>
Returns nested modules within this module.
-
#name ⇒ String
Returns the fully-qualified module name including parent modules.
-
#name_without_modules ⇒ String
Returns the module name without parent module prefixes.
Methods included from Providers::AttributesProvider
Methods included from Providers::LinesOfCodeProvider
Methods included from Providers::ConstantsProvider
Methods included from Providers::ClassNameProvider
Methods included from Providers::LineNumberProvider
Methods included from Providers::FilePathProvider
Constructor Details
#initialize(node, file_declaration) ⇒ ModuleDeclaration
Returns a new instance of ModuleDeclaration.
27 28 29 30 |
# File 'lib/rubyzen/declarations/module_declaration.rb', line 27 def initialize(node, file_declaration) @node = node @file_declaration = file_declaration end |
Instance Attribute Details
#file_declaration ⇒ FileDeclaration (readonly)
23 24 25 |
# File 'lib/rubyzen/declarations/module_declaration.rb', line 23 def file_declaration @file_declaration end |
#node ⇒ RuboCop::AST::Node (readonly)
20 21 22 |
# File 'lib/rubyzen/declarations/module_declaration.rb', line 20 def node @node end |
Instance Method Details
#all_methods ⇒ Collections::MethodsCollection
Returns methods defined directly in this module.
75 76 77 78 79 |
# File 'lib/rubyzen/declarations/module_declaration.rb', line 75 def all_methods Collections::MethodsCollection.new( direct_method_nodes.map { |method_node| MethodDeclaration.new(method_node, self) } ) end |
#classes ⇒ Array<ClassDeclaration>
Returns classes defined within this module.
66 67 68 69 70 |
# File 'lib/rubyzen/declarations/module_declaration.rb', line 66 def classes node.each_node(:class).map do |class_node| ClassDeclaration.new(class_node, file_declaration) end end |
#modules ⇒ Array<ModuleDeclaration>
Returns nested modules within this module.
59 60 61 |
# File 'lib/rubyzen/declarations/module_declaration.rb', line 59 def modules node.each_descendant(:module).map { |mod_node| ModuleDeclaration.new(mod_node, file_declaration) } end |
#name ⇒ String
Returns the fully-qualified module name including parent modules.
35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/rubyzen/declarations/module_declaration.rb', line 35 def name parent_module_names = [] current_node = node.parent while current_node if current_node.type == :module parent_module_names.unshift(current_node.identifier&.const_name) end current_node = current_node.parent end [parent_module_names, name_without_modules].flatten.compact.join('::') end |
#name_without_modules ⇒ String
Returns the module name without parent module prefixes.
52 53 54 |
# File 'lib/rubyzen/declarations/module_declaration.rb', line 52 def name_without_modules node.identifier&.const_name end |