Class: Yoda::Model::Environment::SingletonAccessor

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
AccessorInterface, WithCache
Defined in:
lib/yoda/model/environment/singleton_accessor.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from WithCache

#with_cache

Constructor Details

#initialize(instance_accessor) ⇒ SingletonAccessor

Returns a new instance of SingletonAccessor.

Parameters:



20
21
22
# File 'lib/yoda/model/environment/singleton_accessor.rb', line 20

def initialize(instance_accessor)
  @instance_accessor = instance_accessor
end

Instance Attribute Details

#instance_accessorInstanceAccessor, SingletonAccessor (readonly)



15
16
17
# File 'lib/yoda/model/environment/singleton_accessor.rb', line 15

def instance_accessor
  @instance_accessor
end

Instance Method Details

#class_objectStore::Objects::MetaClassObject::Connected?



51
52
53
54
55
# File 'lib/yoda/model/environment/singleton_accessor.rb', line 51

def class_object
  with_cache(:class_object) do
    instance_accessor.class_object&.meta_class
  end
end

#membersNamespaceMembers

Returns:



25
26
27
# File 'lib/yoda/model/environment/singleton_accessor.rb', line 25

def members
  @members ||= NamespaceMembers.new(accessor: self, environment: environment)
end

#rbs_definitionRBS::Definition?

Returns:

  • (RBS::Definition, nil)


35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/yoda/model/environment/singleton_accessor.rb', line 35

def rbs_definition
  with_cache(:rbs_definition) do
    if instance_accessor.rbs_definition
      if instance_accessor.rbs_definition.self_type.is_a?(RBS::Types::ClassInstance)
        rbs_definition_builder.build_singleton(instance_accessor.rbs_definition.type_name)
      else
        # Interface or Singleton
        nil
      end
    else
      nil
    end
  end
end

#self_objectStore::Objects::MetaClassObject::Connected?



58
59
60
61
62
# File 'lib/yoda/model/environment/singleton_accessor.rb', line 58

def self_object
  with_cache(:self_object) do
    instance_accessor.class_object
  end
end

#singleton_accessorSingletonAccessor

Returns:



30
31
32
# File 'lib/yoda/model/environment/singleton_accessor.rb', line 30

def singleton_accessor
  SingletonAccessor.new(self)
end