Class: QED::Script

Inherits:
Object
  • Object
show all
Defined in:
lib/qed/script.rb

Overview

Script

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(applique, file, scope = nil) ⇒ Script

New Script



23
24
25
26
27
28
29
30
# File 'lib/qed/script.rb', line 23

def initialize(applique, file, scope=nil)
  @applique = applique.dup # localize copy of applique
  @file     = file
  @scope    = scope || Scope.new(applique)
  @binding  = @scope.__binding__
  #@loadlist = []
  #apply_environment
end

Instance Attribute Details

#appliqueObject (readonly)

Returns the value of attribute applique.



14
15
16
# File 'lib/qed/script.rb', line 14

def applique
  @applique
end

#fileObject (readonly)

Demonstrandum file.



17
18
19
# File 'lib/qed/script.rb', line 17

def file
  @file
end

#scopeObject (readonly)

Returns the value of attribute scope.



20
21
22
# File 'lib/qed/script.rb', line 20

def scope
  @scope
end

Instance Method Details

#adviceObject



38
39
40
41
# File 'lib/qed/script.rb', line 38

def advice
  #@scope.__advice__
  @applique.__advice__
end

#advise(signal, *args) ⇒ Object



44
45
46
# File 'lib/qed/script.rb', line 44

def advise(signal, *args)
  advice.call(@scope, signal, *args)
end

#bindingObject

One binding per script.



33
34
35
# File 'lib/qed/script.rb', line 33

def binding
  @binding #||= @scope.__binding__
end

#directoryObject

Expanded dirname of file.



49
50
51
# File 'lib/qed/script.rb', line 49

def directory
  @directory ||= File.expand_path(File.dirname(file))
end

#evaluate(code, line) ⇒ Object



59
60
61
62
# File 'lib/qed/script.rb', line 59

def evaluate(code, line)
  eval(code, @binding, @file, line)
  #@scope.module_eval(section.text, @file, section.line)
end

#nameObject

File basename less extension.



54
55
56
# File 'lib/qed/script.rb', line 54

def name
  @name ||= File.basename(file).chomp(File.extname(file))
end

#parseObject

Parse script. Retruns an abstract syntax tree.



79
80
81
# File 'lib/qed/script.rb', line 79

def parse
  Parser.new(file).parse
end

#run(*observers) ⇒ Object



84
85
86
87
# File 'lib/qed/script.rb', line 84

def run(*observers)
  evaluator = Evaluator.new(self, *observers)
  evaluator.run
end