class Prong::Hooks::Skip

Public Class Methods

construct(base,name,type,list) click to toggle source
# File lib/prong/hooks/skip.rb, line 4
def self.construct(base,name,type,list)
  self.new(base,name,type,list).handle
end
new(base,name,type,list) click to toggle source
# File lib/prong/hooks/skip.rb, line 8
def initialize(base,name,type,list)
  @base = base; @name = name
  @type = type; @list = list
  @condition = (@list.pop[:if] if @list.last.kind_of?(Hash))
end

Public Instance Methods

handle() click to toggle source
# File lib/prong/hooks/skip.rb, line 14
def handle
  if @condition
    exclude_with_condition
  else
    exclude_without_condition
  end
end

Private Instance Methods

callbacks() click to toggle source
# File lib/prong/hooks/skip.rb, line 23
def callbacks
  @callbacks ||= @base.send("_#{@type}_#{@name}")
end
exclude_with_condition() click to toggle source
# File lib/prong/hooks/skip.rb, line 27
def exclude_with_condition
  condition = @condition; list = @list;
  modifer = callbacks.map do |callback|
    block = proc do |c|
      list.each {|i| c.delete(i)} if instance_exec(&condition)
      next true
    end
    callback[0] << block
    callback
  end
  modify(modifer)
end
exclude_without_condition() click to toggle source
# File lib/prong/hooks/skip.rb, line 40
def exclude_without_condition
  list = @list
  modifer = callbacks.map do |callback|
    block = proc do |c|
      list.each {|i| c.delete(i)}
      next true
    end
    callback[0] << block
    callback
  end
  modify(modifer)
end
modify(modifer) click to toggle source
# File lib/prong/hooks/skip.rb, line 53
def modify(modifer)
  @base.send("_#{@type}_#{@name}=", modifer)
  @base.send("_#{@name}_callbacks=", Chain.new(@base, @name).prepare)
end