1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Merge pull request #11211 from gsamokovarov/trailing-comma

Further clean-up of ActiveSupport::Callbacks
This commit is contained in:
Guillermo Iguaran 2013-07-01 07:40:24 -07:00
commit b7a43ddd39

View file

@ -1,5 +1,6 @@
require 'active_support/concern'
require 'active_support/descendants_tracker'
require 'active_support/core_ext/array/extract_options'
require 'active_support/core_ext/class/attribute'
require 'active_support/core_ext/kernel/reporting'
require 'active_support/core_ext/kernel/singleton_class'
@ -542,14 +543,12 @@ module ActiveSupport
@callbacks = nil
@chain.delete_if { |c| callback.duplicates?(c) }
end
end
module ClassMethods
def normalize_callback_params(filters, block) # :nodoc:
type = CALLBACK_FILTER_TYPES.include?(filters.first) ? filters.shift : :before
options = filters.last.is_a?(Hash) ? filters.pop : {}
options = filters.extract_options!
filters.unshift(block) if block
[type, filters, options.dup]
end
@ -662,7 +661,7 @@ module ActiveSupport
# The current object and the return result of the callback will be called
# with the lambda.
#
# define_callbacks :validate, terminator: ->(target,result) { result == false },
# define_callbacks :validate, terminator: ->(target, result) { result == false }
#
# In this example, if any before validate callbacks returns +false+,
# other callbacks are not executed. Defaults to +false+, meaning no value
@ -718,17 +717,17 @@ module ActiveSupport
#
# would call <tt>Audit#save</tt>.
def define_callbacks(*names)
config = names.last.is_a?(Hash) ? names.pop : {}
if config.key?(:terminator) && String === config[:terminator]
options = names.extract_options!
if options.key?(:terminator) && String === options[:terminator]
ActiveSupport::Deprecation.warn "String based terminators are deprecated, please use a lambda"
value = config[:terminator]
l = class_eval "lambda { |result| #{value} }", __FILE__, __LINE__
config[:terminator] = lambda { |target, result| target.instance_exec(result, &l) }
value = options[:terminator]
line = class_eval "lambda { |result| #{value} }", __FILE__, __LINE__
options[:terminator] = lambda { |target, result| target.instance_exec(result, &line) }
end
names.each do |name|
class_attribute "_#{name}_callbacks"
set_callbacks name, CallbackChain.new(name, config)
set_callbacks name, CallbackChain.new(name, options)
end
end