Extensions for Method class.
Methods
Attributes
[R] | advice_after | |
[R] | advice_around | |
[R] | advice_before | |
[RW] | advised |
Public Instance methods
[ show source ]
# File lib/more/facets/advisable.rb, line 120 def advice_after=(set) ; @advice_after = set.flatten.compact; end
[ show source ]
# File lib/more/facets/advisable.rb, line 121 def advice_around=(set); @advice_around = set.flatten.compact; end
[ show source ]
# File lib/more/facets/advisable.rb, line 119 def advice_before=(set); @advice_before = set.flatten.compact; end
[ show source ]
# File lib/more/facets/advisable.rb, line 115 def advised? @advised end
Call with advice.
[ show source ]
# File lib/more/facets/advisable.rb, line 125 def call_with_advice(obj, *args, &blk) advice_before.each do |name| #advice.call(*args, &blk) obj.send(name, *args, &blk) end target = lambda{ call(*args, &blk) } advice_around.each do |name| target = lambda_target(obj, name, target, *args, &blk) end ret = target.call advice_after.reverse_each do |name| #advice.call(*args, &blk) obj.send(name, *args, &blk) end return ret end