Sha256: 9d717b7cd3cb061093acaa282530351c1e6dc6bb0c4c5bad58139834321c2122
Contents?: true
Size: 1.15 KB
Versions: 16
Compression:
Stored size: 1.15 KB
Contents
module Faye module Extensible include Logging def add_extension(extension) @extensions ||= [] @extensions << extension extension.added(self) if extension.respond_to?(:added) end def remove_extension(extension) return unless @extensions @extensions.delete_if do |ext| next false unless ext == extension extension.removed(self) if extension.respond_to?(:removed) true end end def pipe_through_extensions(stage, message, env, &callback) debug('Passing through ? extensions: ?', stage, message) return callback.call(message) unless @extensions extensions = @extensions.dup pipe = lambda do |message| next callback.call(message) unless message extension = extensions.shift next callback.call(message) unless extension next pipe.call(message) unless extension.respond_to?(stage) arity = extension.method(stage).arity if arity >= 3 extension.__send__(stage, message, env, pipe) else extension.__send__(stage, message, pipe) end end pipe.call(message) end end end
Version data entries
16 entries across 16 versions & 3 rubygems