提交 45ccc462 编写于 作者: C claudiob

Remove AS methods that are never invoked

Fixes #21122 - does not change any current behavior; simply reflects
the fact that two conditions of the if/else statement are never reached.

The reason is #17227 which adds a default terminator to AS::Callbacks.

Therefore, even callback chains that do not define a terminator now
have a terminator, and `chain_config.key?(:terminator)` is always true.

Of course, if no terminator was defined, then we want this new default
terminator not to do anything special. What the terminator actually does
(or should do) is discussed in #21218 but the simple fact that a default
terminator exists makes this current PR valid.

*Note* that the conditional/simple methods have not been removed in
AS::Conditionals::Filter::After because of `:skip_after_callbacks_if_terminated`
which lets a user decide **not** to skip after callbacks even if the chain was
terminated.
上级 fecf9d72
......@@ -126,14 +126,10 @@ class Before
def self.build(callback_sequence, user_callback, user_conditions, chain_config, filter)
halted_lambda = chain_config[:terminator]
if chain_config.key?(:terminator) && user_conditions.any?
if user_conditions.any?
halting_and_conditional(callback_sequence, user_callback, user_conditions, halted_lambda, filter)
elsif chain_config.key? :terminator
halting(callback_sequence, user_callback, halted_lambda, filter)
elsif user_conditions.any?
conditional(callback_sequence, user_callback, user_conditions)
else
simple callback_sequence, user_callback
halting(callback_sequence, user_callback, halted_lambda, filter)
end
end
......@@ -175,42 +171,15 @@ def self.halting(callback_sequence, user_callback, halted_lambda, filter)
end
end
private_class_method :halting
def self.conditional(callback_sequence, user_callback, user_conditions)
callback_sequence.before do |env|
target = env.target
value = env.value
if user_conditions.all? { |c| c.call(target, value) }
user_callback.call target, value
end
env
end
end
private_class_method :conditional
def self.simple(callback_sequence, user_callback)
callback_sequence.before do |env|
user_callback.call env.target, env.value
env
end
end
private_class_method :simple
end
class After
def self.build(callback_sequence, user_callback, user_conditions, chain_config)
if chain_config[:skip_after_callbacks_if_terminated]
if chain_config.key?(:terminator) && user_conditions.any?
if user_conditions.any?
halting_and_conditional(callback_sequence, user_callback, user_conditions)
elsif chain_config.key?(:terminator)
halting(callback_sequence, user_callback)
elsif user_conditions.any?
conditional callback_sequence, user_callback, user_conditions
else
simple callback_sequence, user_callback
halting(callback_sequence, user_callback)
end
else
if user_conditions.any?
......@@ -273,14 +242,10 @@ def self.simple(callback_sequence, user_callback)
class Around
def self.build(callback_sequence, user_callback, user_conditions, chain_config)
if chain_config.key?(:terminator) && user_conditions.any?
if user_conditions.any?
halting_and_conditional(callback_sequence, user_callback, user_conditions)
elsif chain_config.key? :terminator
halting(callback_sequence, user_callback)
elsif user_conditions.any?
conditional(callback_sequence, user_callback, user_conditions)
else
simple(callback_sequence, user_callback)
halting(callback_sequence, user_callback)
end
end
......@@ -318,33 +283,6 @@ def self.halting(callback_sequence, user_callback)
end
end
private_class_method :halting
def self.conditional(callback_sequence, user_callback, user_conditions)
callback_sequence.around do |env, &run|
target = env.target
value = env.value
if user_conditions.all? { |c| c.call(target, value) }
user_callback.call(target, value) {
run.call.value
}
env
else
run.call
end
end
end
private_class_method :conditional
def self.simple(callback_sequence, user_callback)
callback_sequence.around do |env, &run|
user_callback.call(env.target, env.value) {
run.call.value
}
env
end
end
private_class_method :simple
end
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册