class Hollaback::Sequence

Attributes

afters[R]
befores[R]
main[R]

Public Class Methods

new(args = {}, &main) click to toggle source
# File lib/hollaback/sequence.rb, line 5
def initialize(args = {}, &main)
  @main    = main
  @befores = args.fetch(:befores, [])
  @afters  = args.fetch(:afters, [])
end

Public Instance Methods

after(&after) click to toggle source
# File lib/hollaback/sequence.rb, line 16
def after(&after)
  afters << after
  self
end
around(&around) click to toggle source

rubocop:disable Performance/RedundantBlockCall

# File lib/hollaback/sequence.rb, line 22
def around(&around)
  Sequence.new do |target|
    around.call(target) { call(target) }
  end
end
before(&before) click to toggle source
# File lib/hollaback/sequence.rb, line 11
def before(&before)
  befores << before
  self
end
call(target) click to toggle source
# File lib/hollaback/sequence.rb, line 28
def call(target)
  befores.each { |before| before.call(target) }
  value = main.call(target)
  afters.each { |after| after.call(target) }
  value
end