Sha256: 728a4a7e924029675c321b9f2e687005d0fb092ff1bc796404246c90374da3bf

Contents?: true

Size: 747 Bytes

Versions: 3

Compression:

Stored size: 747 Bytes

Contents

module Spec
  module DSL
    class CompositeProcBuilder < Array
      def initialize(callbacks=[])
        push(*callbacks)
      end

      def proc(&error_handler)
        parts = self
        errors = []
        Proc.new do
          result = parts.collect do |part|
            begin
              if part.is_a?(UnboundMethod)
                part.bind(self).call
              else
                instance_eval(&part)
              end
            rescue Exception => e
              if error_handler
                error_handler.call(e)
              else
                errors << e
              end
            end
          end
          raise errors.first unless errors.empty?
          result
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rspec-1.0.8 lib/spec/dsl/composite_proc_builder.rb
rspec-1.0.6 lib/spec/dsl/composite_proc_builder.rb
rspec-1.0.7 lib/spec/dsl/composite_proc_builder.rb