class Hollaback::Chain
Attributes
callbacks[R]
Public Class Methods
new()
click to toggle source
# File lib/hollaback/chain.rb, line 5 def initialize @callbacks = [] end
Public Instance Methods
+(other)
click to toggle source
# File lib/hollaback/chain.rb, line 9 def +(other) @callbacks += other.callbacks self end
after(execute = nil, &block)
click to toggle source
# File lib/hollaback/chain.rb, line 18 def after(execute = nil, &block) build(:after, execute, &block) end
around(execute = nil, &block)
click to toggle source
# File lib/hollaback/chain.rb, line 22 def around(execute = nil, &block) build(:around, execute, &block) end
before(execute = nil, &block)
click to toggle source
# File lib/hollaback/chain.rb, line 14 def before(execute = nil, &block) build(:before, execute, &block) end
compile(&block)
click to toggle source
# File lib/hollaback/chain.rb, line 30 def compile(&block) if empty? block else callbacks.inject(Sequence.new(&block)) do |sequence, callback| sequence.send(callback.type, &callback.build) end end end
empty?()
click to toggle source
# File lib/hollaback/chain.rb, line 26 def empty? callbacks.empty? end
Private Instance Methods
build(type, execute, &block)
click to toggle source
# File lib/hollaback/chain.rb, line 42 def build(type, execute, &block) callbacks << Callback.new(type, execute, &block) end