Class: MotionBlender::Analyzer::Evaluator
- Inherits:
-
Object
- Object
- MotionBlender::Analyzer::Evaluator
- Defined in:
- lib/motion_blender/analyzer/evaluator.rb
Defined Under Namespace
Classes: Extractor
Instance Attribute Summary collapse
-
#dynamic ⇒ Object
(also: #dynamic?)
readonly
Returns the value of attribute dynamic.
-
#requires ⇒ Object
readonly
Returns the value of attribute requires.
-
#source ⇒ Object
readonly
Returns the value of attribute source.
-
#trace ⇒ Object
readonly
Returns the value of attribute trace.
Instance Method Summary collapse
-
#initialize(source) ⇒ Evaluator
constructor
A new instance of Evaluator.
- #recover_from_error(err) ⇒ Object
- #run ⇒ Object
Constructor Details
#initialize(source) ⇒ Evaluator
Returns a new instance of Evaluator.
13 14 15 16 17 18 |
# File 'lib/motion_blender/analyzer/evaluator.rb', line 13 def initialize source @source = source @trace = "#{source.file}:#{source.line}:in `#{source.method}'" @requires = [] @dynamic = false end |
Instance Attribute Details
#dynamic ⇒ Object (readonly) Also known as: dynamic?
Returns the value of attribute dynamic.
10 11 12 |
# File 'lib/motion_blender/analyzer/evaluator.rb', line 10 def dynamic @dynamic end |
#requires ⇒ Object (readonly)
Returns the value of attribute requires.
9 10 11 |
# File 'lib/motion_blender/analyzer/evaluator.rb', line 9 def requires @requires end |
#source ⇒ Object (readonly)
Returns the value of attribute source.
8 9 10 |
# File 'lib/motion_blender/analyzer/evaluator.rb', line 8 def source @source end |
#trace ⇒ Object (readonly)
Returns the value of attribute trace.
9 10 11 |
# File 'lib/motion_blender/analyzer/evaluator.rb', line 9 def trace @trace end |
Instance Method Details
#recover_from_error(err) ⇒ Object
35 36 37 38 39 40 41 |
# File 'lib/motion_blender/analyzer/evaluator.rb', line 35 def recover_from_error err @source = @source.parent @source = @source.parent if @source && @source.type.rescue? fail LoadError, err. unless @source @dynamic = true run end |
#run ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/motion_blender/analyzer/evaluator.rb', line 20 def run return if @source.evaluated? @source.evaluated! extractor = Extractor.new(@source.file) extractor.instance_eval(@source.code, @source.file, @source.line) @requires = extractor.instance_variable_get(:@_args) || [] @requires.each do |req| req.trace = @trace end self rescue StandardError, ScriptError => err recover_from_error err end |