Class: Kapusta::Env
- Inherits:
-
Object
show all
- Defined in:
- lib/kapusta/env.rb
Defined Under Namespace
Classes: MethodBinding, SelfMethodBinding
Instance Method Summary
collapse
Constructor Details
#initialize(parent = nil) ⇒ Env
Returns a new instance of Env.
8
9
10
11
|
# File 'lib/kapusta/env.rb', line 8
def initialize(parent = nil)
@parent = parent
@vars = {}
end
|
Instance Method Details
#child ⇒ Object
60
61
62
|
# File 'lib/kapusta/env.rb', line 60
def child
Env.new(self)
end
|
#define(name, value) ⇒ Object
13
14
15
|
# File 'lib/kapusta/env.rb', line 13
def define(name, value)
@vars[binding_key(name)] = value
end
|
#defined?(name) ⇒ Boolean
37
38
39
|
# File 'lib/kapusta/env.rb', line 37
def defined?(name)
@vars.key?(binding_key(name)) || @parent&.defined?(name)
end
|
#local_ruby_name_defined?(name) ⇒ Boolean
45
46
47
|
# File 'lib/kapusta/env.rb', line 45
def local_ruby_name_defined?(name)
@vars.any? { |_source_name, value| binding_ruby_name(value) == name }
end
|
#lookup(name) ⇒ Object
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/kapusta/env.rb', line 17
def lookup(name)
key = binding_key(name)
if @vars.key?(key)
@vars[key]
elsif @parent
@parent.lookup(name)
else
raise NameError, "undefined: #{name}"
end
end
|
#lookup_if_defined(name) ⇒ Object
28
29
30
31
32
33
34
35
|
# File 'lib/kapusta/env.rb', line 28
def lookup_if_defined(name)
key = binding_key(name)
if @vars.key?(key)
@vars[key]
else
@parent&.lookup_if_defined(name)
end
end
|
#ruby_name_defined?(name) ⇒ Boolean
41
42
43
|
# File 'lib/kapusta/env.rb', line 41
def ruby_name_defined?(name)
@vars.any? { |_source_name, value| binding_ruby_name(value) == name } || @parent&.ruby_name_defined?(name)
end
|
#set_existing!(name, value) ⇒ Object
49
50
51
52
53
54
55
56
57
58
|
# File 'lib/kapusta/env.rb', line 49
def set_existing!(name, value)
key = binding_key(name)
if @vars.key?(key)
@vars[key] = value
elsif @parent
@parent.set_existing!(name, value)
else
raise NameError, "undefined: #{name}"
end
end
|