Method: LSystem::ProductionAdapter#run

Defined in:
lib/l_system/production_adapter.rb

#run(rules_engine, iterations) ⇒ Object

Run productions for each generation produced by the given rules_engine up to iterations times.



100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# File 'lib/l_system/production_adapter.rb', line 100

def run( rules_engine, iterations )
  self.log.debug "Running %p for up to %d iterations" % [ rules_engine, iterations ]

  return rules_engine.each.with_index.inject( nil ) do |result, (generation, i)|
    self.log.debug "Running generation %d" % [ i ]
    self.on_start( i, result ) if self.respond_to?( :on_start )
    self.run_generation( generation )
    result = self.result( i ) if self.respond_to?( :result )
    self.log.debug "Result [%d] is: %p" % [ i, result ]
    self.on_finish( i, result ) if self.respond_to?( :on_finish )

    break result if i >= iterations - 1
    result
  end
end