Class: Yoda::Model::Environment::InstanceAccessor
- Inherits:
-
Object
- Object
- Yoda::Model::Environment::InstanceAccessor
- Includes:
- AccessorInterface, WithCache
- Defined in:
- lib/yoda/model/environment/instance_accessor.rb
Instance Attribute Summary collapse
- #environment ⇒ Environment readonly
- #path ⇒ String, Path readonly
- #type_args ⇒ RBS::Types::t readonly
Instance Method Summary collapse
- #class_object ⇒ Store::Objects::NamespaceObject::Connected?
-
#initialize(environment:, path:, type_args:) ⇒ InstanceAccessor
constructor
A new instance of InstanceAccessor.
- #instance_accessor ⇒ nil
- #members ⇒ NamespaceMembers
- #rbs_class_decl ⇒ Object
- #rbs_definition ⇒ RBS::Definition?
- #rbs_definition_builder ⇒ Object
- #rbs_interface_decl ⇒ Object
- #self_object ⇒ Store::Objects::NamespaceObject::Connected?
- #singleton_accessor ⇒ SingletonAccessor
- #type_name ⇒ RBS::TypeName
Methods included from WithCache
Constructor Details
#initialize(environment:, path:, type_args:) ⇒ InstanceAccessor
Returns a new instance of InstanceAccessor.
23 24 25 26 27 |
# File 'lib/yoda/model/environment/instance_accessor.rb', line 23 def initialize(environment:, path:, type_args:) @environment = environment @path = path @type_args = type_args end |
Instance Attribute Details
#environment ⇒ Environment (readonly)
12 13 14 |
# File 'lib/yoda/model/environment/instance_accessor.rb', line 12 def environment @environment end |
#path ⇒ String, Path (readonly)
15 16 17 |
# File 'lib/yoda/model/environment/instance_accessor.rb', line 15 def path @path end |
#type_args ⇒ RBS::Types::t (readonly)
18 19 20 |
# File 'lib/yoda/model/environment/instance_accessor.rb', line 18 def type_args @type_args end |
Instance Method Details
#class_object ⇒ Store::Objects::NamespaceObject::Connected?
35 36 37 38 39 40 |
# File 'lib/yoda/model/environment/instance_accessor.rb', line 35 def class_object with_cache(:class_object) do object = environment.resolve_constant(path)&.with_connection(registry: environment.registry) object&.namespace? ? object : nil end end |
#instance_accessor ⇒ nil
54 55 56 |
# File 'lib/yoda/model/environment/instance_accessor.rb', line 54 def instance_accessor nil end |
#members ⇒ NamespaceMembers
30 31 32 |
# File 'lib/yoda/model/environment/instance_accessor.rb', line 30 def members @members ||= NamespaceMembers.new(accessor: self, environment: environment) end |
#rbs_class_decl ⇒ Object
79 80 81 82 83 |
# File 'lib/yoda/model/environment/instance_accessor.rb', line 79 def rbs_class_decl with_cache(:rbs_class_decl) do environment.resolve_rbs_class_decl(type_name) end end |
#rbs_definition ⇒ RBS::Definition?
64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/yoda/model/environment/instance_accessor.rb', line 64 def rbs_definition with_cache(:rbs_definition) do if rbs_class_decl builder = RBS::DefinitionBuilder.new(env: environment.rbs_environment) builder.build_instance(type_name).sub(substitution) elsif rbs_interface_decl builder = RBS::DefinitionBuilder.new(env: environment.rbs_environment) builder.build_interface(type_name).sub(substitution) else nil end end end |
#rbs_definition_builder ⇒ Object
97 98 99 |
# File 'lib/yoda/model/environment/instance_accessor.rb', line 97 def rbs_definition_builder @rbs_definition_builder ||= RBS::DefinitionBuilder.new(env: environment.rbs_environment) end |
#rbs_interface_decl ⇒ Object
86 87 88 89 90 |
# File 'lib/yoda/model/environment/instance_accessor.rb', line 86 def rbs_interface_decl with_cache(:rbs_interface_decl) do environment.resolve_rbs_interface_decl(type_name) end end |
#self_object ⇒ Store::Objects::NamespaceObject::Connected?
43 44 45 46 47 48 49 50 51 |
# File 'lib/yoda/model/environment/instance_accessor.rb', line 43 def self_object with_cache(:self_object) do if class_object&.kind == :meta_class class_object.instance else nil end end end |
#singleton_accessor ⇒ SingletonAccessor
59 60 61 |
# File 'lib/yoda/model/environment/instance_accessor.rb', line 59 def singleton_accessor SingletonAccessor.new(self) end |
#type_name ⇒ RBS::TypeName
93 94 95 |
# File 'lib/yoda/model/environment/instance_accessor.rb', line 93 def type_name @type_name ||= TypeName(path.to_s) end |