Sha256: 589da3bfcde98e1a5beebc19d69bddd89ce116f9497e6892dd2e84e95934fcdc

Contents?: true

Size: 504 Bytes

Versions: 3

Compression:

Stored size: 504 Bytes

Contents

module XMP::Handler
  attr_accessor :handlers

  def new(object)
    last_error = nil
    result     = object

    handlers.each do |handler|
      begin
        next unless new_result = handler.call(result)
        return new_result if new_result.is_a? XMP::Document
        result = new_result
      rescue XMP::Error => error
        last_error = error
      end
    end

    raise last_error if last_error
    raise XMP::Error, "cannot handle #{object.inspect}"
  end

  alias_method :parse, :new
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
xmp-2.0.0 lib/xmp/handler.rb
xmp-1.0.1 lib/xmp/handler.rb
xmp-1.0.0 lib/xmp/handler.rb