Class: Yoda::Model::Environment
- Inherits:
-
Object
- Object
- Yoda::Model::Environment
show all
- Defined in:
- lib/yoda/model/environment.rb,
lib/yoda/model/environment/with_cache.rb,
lib/yoda/model/environment/value_factory.rb,
lib/yoda/model/environment/instance_accessor.rb,
lib/yoda/model/environment/namespace_members.rb,
lib/yoda/model/environment/accessor_interface.rb,
lib/yoda/model/environment/singleton_accessor.rb,
lib/yoda/model/environment/value_resolve_context.rb
Overview
Environment can resolve constants from type expressions.
Defined Under Namespace
Modules: AccessorInterface, WithCache
Classes: InstanceAccessor, NamespaceMembers, SingletonAccessor, ValueFactory, ValueResolveContext
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(registry:, rbs_environment:) ⇒ Environment
39
40
41
42
|
# File 'lib/yoda/model/environment.rb', line 39
def initialize(registry:, rbs_environment:)
@registry = registry
@rbs_environment = rbs_environment
end
|
Instance Attribute Details
#rbs_environment ⇒ RBS::Environment
35
36
37
|
# File 'lib/yoda/model/environment.rb', line 35
def rbs_environment
@rbs_environment
end
|
32
33
34
|
# File 'lib/yoda/model/environment.rb', line 32
def registry
@registry
end
|
Class Method Details
.build(registry: nil, rbs_environment: nil) ⇒ Environment
24
25
26
27
28
29
|
# File 'lib/yoda/model/environment.rb', line 24
def self.build(registry: nil, rbs_environment: nil)
registry ||= Yoda::Store::Project.temporal.registry
rbs_environment ||= RBS::Environment.new
new(registry: registry, rbs_environment: rbs_environment)
end
|
.from_project(project) ⇒ Object
17
18
19
|
# File 'lib/yoda/model/environment.rb', line 17
def self.from_project(project)
new(registry: project.registry, rbs_environment: project.rbs_environment)
end
|
Instance Method Details
#pretty_print(pp) ⇒ Object
98
99
100
101
102
103
104
105
106
107
|
# File 'lib/yoda/model/environment.rb', line 98
def pretty_print(pp)
pp.object_group(self) do
pp.breakable
pp.text "@rbs_environment="
pp.pp rbs_environment
pp.comma_breakable
pp.text "@registry="
pp.pp registry
end
end
|
69
70
71
|
# File 'lib/yoda/model/environment.rb', line 69
def resolve_constant(key)
Store::Query::FindConstant.new(registry).find(key)&.with_connection(registry: registry)
end
|
#resolve_rbs_class_decl(type_name) ⇒ Object
81
82
83
|
# File 'lib/yoda/model/environment.rb', line 81
def resolve_rbs_class_decl(type_name)
rbs_environment.class_decls[type_name]
end
|
#resolve_rbs_constant_decl(type_name) ⇒ Object
93
94
95
|
# File 'lib/yoda/model/environment.rb', line 93
def resolve_rbs_constant_decl(type_name)
environment.rbs_environment.constant_decls[type_name]&.decl
end
|
#resolve_rbs_interface_decl(type_name) ⇒ Object
87
88
89
|
# File 'lib/yoda/model/environment.rb', line 87
def resolve_rbs_interface_decl(type_name)
rbs_environment.interface_decls[type_name]&.decl
end
|
#resolve_rbs_type(type_expression) ⇒ RBS::Types::Bases::Base, ...
52
53
54
|
# File 'lib/yoda/model/environment.rb', line 52
def resolve_rbs_type(type_expression)
type_expression.to_rbs_type(self)
end
|
#resolve_rbs_type_name(path) ⇒ RBS::TypeName?
Return RBS::TypeName for the instance of the given path.
59
60
61
62
63
64
65
|
# File 'lib/yoda/model/environment.rb', line 59
def resolve_rbs_type_name(path)
scoped_path = ScopedPath.build(path)
object = resolve_constant(scoped_path)
return TypeName(object.path).absolute! if object
rbs_type_name_resolver.resolve(TypeName(scoped_path.path.to_s), context: scoped_path.lexical_context.to_rbs_context)
end
|
75
76
77
|
# File 'lib/yoda/model/environment.rb', line 75
def resolve_singleton_class(key)
Store::Query::FindMetaClass.new(registry).find(key)&.with_connection(registry: registry)
end
|
#resolve_value_by_rbs_type(rbs_type) ⇒ Values::Base?
46
47
48
|
# File 'lib/yoda/model/environment.rb', line 46
def resolve_value_by_rbs_type(rbs_type)
ValueFactory.from_environment(self).resolve_value_by_rbs_type(rbs_type)
end
|