module Stamp
  class Disambiguator
    attr_reader :emitters

    def initialize(emitters)
      @emitters = emitters
    end

    def disambiguate!
      emitters.replace_each! do |emitter|
        disambiguate(emitter)
      end
    end

    private

    def disambiguate(emitter)
      if emitter.respond_to?(:disambiguate)
        emitter.disambiguate(emitters)
      else
        emitter
      end
    end
  end
end
