Class: Kapusta::Env

Inherits:
Object
  • Object
show all
Defined in:
lib/kapusta/env.rb

Instance Method Summary collapse

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

#childObject



46
47
48
# File 'lib/kapusta/env.rb', line 46

def child
  Env.new(self)
end

#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

Returns:

  • (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

Returns:

  • (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

Returns:

  • (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