Sha256: c63e6fdb0801dade5116c1705d7559e250416ef0026a95478d6b43ef8fcca65c
Contents?: true
Size: 868 Bytes
Versions: 1
Compression:
Stored size: 868 Bytes
Contents
require 'set' module Furnace module Transform class Iterative LOOP_THRESHOLD = 100 def initialize(stages, options={}) @stages = stages @debug = options[:debug] @iterations = 0 end def run(context) self_changed = false loop do changed = Set[] @stages.each do |stage| # FIXME? return self_changed if stage.nil? if stage.run(context) self_changed = true changed.add stage end end return self_changed if changed.empty? if @debug @iterations += 1 if @iterations > LOOP_THRESHOLD raise "Transform::Iterative has detected infinite loop in: #{changed.to_a}" end end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
furnace-0.4.0.beta.2 | lib/furnace/transform/iterative.rb |