class Prong::Hooks::SkipAll

Public Class Methods

construct(base,name,type,condition) click to toggle source
# File lib/prong/hooks/skip_all.rb, line 4
def self.construct(base,name,type,condition)
  self.new(base,name,type,condition).handle
end
new(base,name,type,condition) click to toggle source
# File lib/prong/hooks/skip_all.rb, line 8
def initialize(base,name,type,condition)
  @base = base; @name = name
  @type = type; @condition = condition
end

Public Instance Methods

handle() click to toggle source
# File lib/prong/hooks/skip_all.rb, line 13
def handle
  if @condition
    exclude_all_with_condition
  else
    exclude_all_without_condition
  end
end

Private Instance Methods

callbacks() click to toggle source
# File lib/prong/hooks/skip_all.rb, line 22
def callbacks
  @callbacks ||= @base.send("_#{@type}_#{@name}")
end
exclude_all_with_condition() click to toggle source
# File lib/prong/hooks/skip_all.rb, line 38
def exclude_all_with_condition
  condition = @condition
  modifier = callbacks.map do |callback|
    block = proc do |c|
      c.clear if instance_exec(&condition)
      next true
    end
    callback[0] << block
    callback
  end
  modify(modifier)
end
exclude_all_without_condition() click to toggle source
# File lib/prong/hooks/skip_all.rb, line 26
def exclude_all_without_condition
  modifier = callbacks.map do |callback|
    block = proc do |c|
      c.clear
      next true
    end
    callback[0] << block
    callback
  end
  modify(modifier)
end
modify(modifier) click to toggle source
# File lib/prong/hooks/skip_all.rb, line 51
def modify(modifier)
  @base.send("_#{@type}_#{@name}=", modifier)
  @base.send("_#{@name}_callbacks=", Chain.new(@base, @name).prepare)
end