class ActiveSupport::Callbacks::CallbackChain

:nodoc:#
An Array with a compile method.

def append(*callbacks)

def append(*callbacks)
  callbacks.each { |c| append_one(c) }
end

def append_one(callback)

def append_one(callback)
  remove_duplicates(callback)
  push(callback)
end

def compile

def compile
  method =  ["value = nil", "halted = false"]
  callbacks = "value = !halted && (!block_given? || yield)"
  reverse_each do |callback|
    callbacks = callback.apply(callbacks)
  end
  method << callbacks
  method << "value"
  method.join("\n")
end

def initialize(name, config)

def initialize(name, config)
  @name = name
  @config = {
    :terminator => "false",
    :scope => [ :kind ]
  }.merge!(config)
end

def prepend(*callbacks)

def prepend(*callbacks)
  callbacks.each { |c| prepend_one(c) }
end

def prepend_one(callback)

def prepend_one(callback)
  remove_duplicates(callback)
  unshift(callback)
end

def remove_duplicates(callback)

def remove_duplicates(callback)
  delete_if { |c| callback.duplicates?(c) }
end