class Yoda::Store::Objects::NamespaceObject

@abstract

Attributes

ancestors[RW]

@return [Enumerable<NamespaceObject>]

constant_addresses[R]

@type Array<String>

instance_method_addresses[R]

@return [Array<String>]

methods[RW]

@return [Enumerable<MethodObject>]

mixin_addresses[R]

@type Array<String>

Public Class Methods

attr_names() click to toggle source

@return [Array<Symbol>]

Calls superclass method Yoda::Store::Objects::Base::attr_names
# File lib/yoda/store/objects/namespace_object.rb, line 22
def self.attr_names
  super + %i(instance_method_addresses mixin_addresses constant_addresses)
end
new(instance_method_addresses: [], mixin_addresses: [], constant_addresses: [], **kwargs) click to toggle source

@param path [String] @param document [Document, nil] @param tag_list [TagList, nil] @param instance_method_paths [Array<String>] @param constant_addresses [Array<String>] @param mixin_addresses [Array<String>]

Calls superclass method Yoda::Store::Objects::Base::new
# 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

Public Instance Methods

name() click to toggle source

@return [String]

# 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_h() click to toggle source
Calls superclass method Yoda::Store::Objects::Base#to_h
# 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

Private Instance Methods

merge_attributes(another) click to toggle source

@param another [self] @return [Hash]

# File lib/yoda/store/objects/namespace_object.rb, line 57
def merge_attributes(another)
  super.merge(
    instance_method_addresses: (instance_method_addresses + another.instance_method_addresses).uniq,
    mixin_addresses: (mixin_addresses + another.mixin_addresses).uniq,
    constant_addresses: (constant_addresses + another.constant_addresses).uniq,
  )
end