class MotionBlender::Analyzer::Evaluator

Attributes

done[R]
done?[R]
dynamic[R]
dynamic?[R]
requires[R]
source[R]
trace[R]

Public Class Methods

new(source) click to toggle source
# File lib/motion_blender/analyzer/evaluator.rb, line 13
def initialize source
  @source = source
  @trace = source.to_s
  @requires = []
  @dynamic = false
end

Public Instance Methods

run() click to toggle source
# File lib/motion_blender/analyzer/evaluator.rb, line 20
def run
  return if @source.evaluated?
  @source.evaluated!

  @requires = Collector.new(@source).collect_requires
  @requires.each do |req|
    req.trace = @trace
  end
  @done = true
  self
rescue StandardError, ScriptError => err
  recover_from_error err
end

Private Instance Methods

recover_from_error(err) click to toggle source
# File lib/motion_blender/analyzer/evaluator.rb, line 36
def recover_from_error err
  @source = @source.parent
  @source = @source.parent if @source && @source.type.rescue?
  raise LoadError, err.message unless @source
  @dynamic = true
  run
end