Sha256: c066e7b8013634c99432a452eac2bd26971156c350e1ad5be868d115e23f158d

Contents?: true

Size: 869 Bytes

Versions: 11

Compression:

Stored size: 869 Bytes

Contents

require 'mercury'
require 'mercury/cps'

class Mercury
  class Monadic

    def self.open(**kws)
      Cps.new do |&k|
        Mercury.open(**kws) do |m|
          k.call(new(m))
        end
      end
    end

    def self.wrap(method_name)
      define_method(method_name) do |*args, **kws, &block|
        Cps.new do |&k|
          if @mercury.method(method_name).parameters.map(&:first).include?(:key)
            @mercury.send(method_name, *[*args, *block], **kws, &k)
          else
            @mercury.send(method_name, *[*args, *block], &k)
          end
        end
      end
    end

    wrap(:publish)
    wrap(:start_listener)
    wrap(:start_worker)
    wrap(:delete_source)
    wrap(:delete_work_queue)
    wrap(:source_exists?)
    wrap(:queue_exists?)
    wrap(:close)

    private
    def initialize(mercury)
      @mercury = mercury
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
mercury_amqp-0.4.0 lib/mercury/monadic.rb
mercury_amqp-0.3.0 lib/mercury/monadic.rb
mercury_amqp-0.2.0 lib/mercury/monadic.rb
mercury_amqp-0.1.9 lib/mercury/monadic.rb
mercury_amqp-0.1.7 lib/mercury/monadic.rb
mercury_amqp-0.1.6 lib/mercury/monadic.rb
mercury_amqp-0.1.5 lib/mercury/monadic.rb
mercury_amqp-0.1.4 lib/mercury/monadic.rb
mercury_amqp-0.1.3 lib/mercury/monadic.rb
mercury_amqp-0.1.2 lib/mercury/monadic.rb
mercury_amqp-0.1.0 lib/mercury/monadic.rb