Class: Kapusta::Env
- Inherits:
-
Object
- Object
- Kapusta::Env
- Defined in:
- lib/kapusta/env.rb
Defined Under Namespace
Classes: MethodBinding
Instance Method Summary collapse
- #child ⇒ Object
- #define(name, value) ⇒ Object
- #defined?(name) ⇒ Boolean
-
#initialize(parent = nil) ⇒ Env
constructor
A new instance of Env.
- #local_ruby_name_defined?(name) ⇒ Boolean
- #lookup(name) ⇒ Object
- #ruby_name_defined?(name) ⇒ Boolean
- #set_existing!(name, value) ⇒ Object
Constructor Details
#initialize(parent = nil) ⇒ Env
Returns a new instance of Env.
7 8 9 10 |
# File 'lib/kapusta/env.rb', line 7 def initialize(parent = nil) @parent = parent @vars = {} end |
Instance Method Details
#define(name, value) ⇒ Object
12 13 14 |
# File 'lib/kapusta/env.rb', line 12 def define(name, value) @vars[name] = value end |
#defined?(name) ⇒ Boolean
26 27 28 |
# File 'lib/kapusta/env.rb', line 26 def defined?(name) @vars.key?(name) || @parent&.defined?(name) end |
#local_ruby_name_defined?(name) ⇒ Boolean
34 35 36 |
# File 'lib/kapusta/env.rb', line 34 def local_ruby_name_defined?(name) @vars.any? { |_source_name, value| binding_ruby_name(value) == name } end |
#lookup(name) ⇒ Object
16 17 18 19 20 21 22 23 24 |
# File 'lib/kapusta/env.rb', line 16 def lookup(name) if @vars.key?(name) @vars[name] elsif @parent @parent.lookup(name) else raise NameError, "undefined: #{name}" end end |
#ruby_name_defined?(name) ⇒ Boolean
30 31 32 |
# File 'lib/kapusta/env.rb', line 30 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
38 39 40 41 42 43 44 45 46 |
# File 'lib/kapusta/env.rb', line 38 def set_existing!(name, value) if @vars.key?(name) @vars[name] = value elsif @parent @parent.set_existing!(name, value) else raise NameError, "undefined: #{name}" end end |