Class: Kapusta::Env
- Inherits:
-
Object
- Object
- Kapusta::Env
- Defined in:
- lib/kapusta/env.rb
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.
5 6 7 8 |
# File 'lib/kapusta/env.rb', line 5 def initialize(parent = nil) @parent = parent @vars = {} end |
Instance Method Details
#define(name, value) ⇒ Object
10 11 12 |
# File 'lib/kapusta/env.rb', line 10 def define(name, value) @vars[name] = value end |
#defined?(name) ⇒ Boolean
24 25 26 |
# File 'lib/kapusta/env.rb', line 24 def defined?(name) @vars.key?(name) || @parent&.defined?(name) end |
#local_ruby_name_defined?(name) ⇒ Boolean
32 33 34 |
# File 'lib/kapusta/env.rb', line 32 def local_ruby_name_defined?(name) @vars.value?(name) end |
#lookup(name) ⇒ Object
14 15 16 17 18 19 20 21 22 |
# File 'lib/kapusta/env.rb', line 14 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
28 29 30 |
# File 'lib/kapusta/env.rb', line 28 def ruby_name_defined?(name) @vars.value?(name) || @parent&.ruby_name_defined?(name) end |
#set_existing!(name, value) ⇒ Object
36 37 38 39 40 41 42 43 44 |
# File 'lib/kapusta/env.rb', line 36 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 |