Class: Aster::Environment

Inherits:
Object
  • Object
show all
Defined in:
lib/aster/environment.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parent = nil) ⇒ Environment

Returns a new instance of Environment.



7
8
9
10
11
12
13
# File 'lib/aster/environment.rb', line 7

def initialize(parent = nil)
  @parent = parent
  @env = {}
  @stdout, @stderr = "", ""

  define_base_environment if parent.nil?
end

Instance Attribute Details

#stderrObject (readonly)

Returns the value of attribute stderr.



5
6
7
# File 'lib/aster/environment.rb', line 5

def stderr
  @stderr
end

#stdoutObject (readonly)

Returns the value of attribute stdout.



5
6
7
# File 'lib/aster/environment.rb', line 5

def stdout
  @stdout
end

Instance Method Details

#[](k) ⇒ Object



19
20
21
# File 'lib/aster/environment.rb', line 19

def [](k)
  @env[k.to_sym] || @parent && @parent[k.to_sym]
end

#[]=(k, v) ⇒ Object



23
24
25
# File 'lib/aster/environment.rb', line 23

def []=(k, v)
  @env[k.to_sym] = v
end

#childObject



15
16
17
# File 'lib/aster/environment.rb', line 15

def child
  self.class.new(self)
end

#define_function(name, args, commands = nil, &block) ⇒ Object



32
33
34
# File 'lib/aster/environment.rb', line 32

def define_function(name, args, commands = nil, &block)
  self[name] = Function.new(args, commands, &block)
end

#define_macro(name, &block) ⇒ Object



36
37
38
# File 'lib/aster/environment.rb', line 36

def define_macro(name, &block)
  self[name] = Macro.new self, block
end

#eval(script) ⇒ Object



27
28
29
30
# File 'lib/aster/environment.rb', line 27

def eval(script)
  tree = Parser.new.parse script
  eval_tree tree
end