Class: Yoda::Store::Objects::NamespaceObject Abstract

Inherits:
Base
  • Object
show all
Defined in:
lib/yoda/store/objects/namespace_object.rb

Overview

This class is abstract.

Direct Known Subclasses

ClassObject, MetaClassObject, ModuleObject

Instance Attribute Summary collapse

Attributes inherited from Base

#document, #path, #primary_source, #sources, #tag_list

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#==, #address, #eql?, #hash, #kind, #merge

Methods included from Patchable

#kind

Methods included from Serializable

#derive, included, #to_json

Methods included from Addressable

#address

Constructor Details

#initialize(instance_method_addresses: [], mixin_addresses: [], constant_addresses: [], **kwargs) ⇒ NamespaceObject

Returns a new instance of NamespaceObject.

Parameters:

  • path (String)
  • document (Document, nil)
  • tag_list (TagList, nil)
  • instance_method_paths (Array<String>)
  • constant_addresses (Array<String>) (defaults to: [])
  • mixin_addresses (Array<String>) (defaults to: [])


32
33
34
35
36
37
38
# File 'lib/yoda/store/objects/namespace_object.rb', line 32

def initialize(instance_method_addresses: [], mixin_addresses: [], constant_addresses: [], **kwargs)
  super(kwargs)
  @instance_method_addresses = instance_method_addresses
  @mixin_addresses = mixin_addresses
  @constant_addresses = constant_addresses
  @ancestors ||= []
end

Instance Attribute Details

#ancestorsEnumerable<NamespaceObject>

Returns:



16
17
18
# File 'lib/yoda/store/objects/namespace_object.rb', line 16

def ancestors
  @ancestors
end

#constant_addressesObject (readonly)

Returns the value of attribute constant_addresses.



13
14
15
# File 'lib/yoda/store/objects/namespace_object.rb', line 13

def constant_addresses
  @constant_addresses
end

#instance_method_addressesArray<String> (readonly)

Returns:

  • (Array<String>)


7
8
9
# File 'lib/yoda/store/objects/namespace_object.rb', line 7

def instance_method_addresses
  @instance_method_addresses
end

#methodsEnumerable<MethodObject>

Returns:



19
20
21
# File 'lib/yoda/store/objects/namespace_object.rb', line 19

def methods
  @methods
end

#mixin_addressesObject (readonly)

Returns the value of attribute mixin_addresses.



10
11
12
# File 'lib/yoda/store/objects/namespace_object.rb', line 10

def mixin_addresses
  @mixin_addresses
end

Class Method Details

.attr_namesArray<Symbol>

Returns:

  • (Array<Symbol>)


22
23
24
# File 'lib/yoda/store/objects/namespace_object.rb', line 22

def self.attr_names
  super + %i(instance_method_addresses mixin_addresses constant_addresses)
end

Instance Method Details

#nameString

Returns:

  • (String)


41
42
43
# File 'lib/yoda/store/objects/namespace_object.rb', line 41

def name
  @name ||= path.match(MODULE_TAIL_PATTERN) { |md| md[1] || md[2] }
end

#to_hObject



45
46
47
48
49
50
51
# File 'lib/yoda/store/objects/namespace_object.rb', line 45

def to_h
  super.merge(
    instance_method_addresses: instance_method_addresses,
    mixin_addresses: mixin_addresses,
    constant_addresses: constant_addresses,
  )
end