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

Defined Under Namespace

Classes: Connected

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, #meta_class_address, #parent_address, #with_connection

Methods included from Patchable

#kind

Methods included from Serializable

#==, #derive, #eql?, #hash, 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: [])


62
63
64
65
66
67
68
# File 'lib/yoda/store/objects/namespace_object.rb', line 62

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:



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

def ancestors
  @ancestors
end

#constant_addressesObject (readonly)

Returns the value of attribute constant_addresses.



43
44
45
# File 'lib/yoda/store/objects/namespace_object.rb', line 43

def constant_addresses
  @constant_addresses
end

#instance_method_addressesArray<String> (readonly)

Returns:

  • (Array<String>)


37
38
39
# File 'lib/yoda/store/objects/namespace_object.rb', line 37

def instance_method_addresses
  @instance_method_addresses
end

#methodsEnumerable<MethodObject>

Returns:



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

def methods
  @methods
end

#mixin_addressesObject (readonly)

Returns the value of attribute mixin_addresses.



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

def mixin_addresses
  @mixin_addresses
end

Class Method Details

.attr_namesArray<Symbol>

Returns:

  • (Array<Symbol>)


52
53
54
# File 'lib/yoda/store/objects/namespace_object.rb', line 52

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

Instance Method Details

#nameString

Note:

Override of Base#name

Returns:

  • (String)


72
73
74
# File 'lib/yoda/store/objects/namespace_object.rb', line 72

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

#namespace?Boolean

Note:

Override of Base#namespace?

Returns:

  • (Boolean)


86
87
88
# File 'lib/yoda/store/objects/namespace_object.rb', line 86

def namespace?
  true
end

#to_hObject

Note:

Override of Base#to_h



77
78
79
80
81
82
83
# File 'lib/yoda/store/objects/namespace_object.rb', line 77

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