Module Advisable::Method
In: lib/more/facets/advisable.rb

Extensions for Method class.

Methods

Attributes

advice_after  [R] 
advice_around  [R] 
advice_before  [R] 
advised  [RW] 

Public Instance methods

[Source]

# File lib/more/facets/advisable.rb, line 120
    def advice_after=(set) ;  @advice_after = set.flatten.compact; end

[Source]

# File lib/more/facets/advisable.rb, line 121
    def advice_around=(set); @advice_around = set.flatten.compact; end

[Source]

# File lib/more/facets/advisable.rb, line 119
    def advice_before=(set); @advice_before = set.flatten.compact; end

[Source]

# File lib/more/facets/advisable.rb, line 115
    def advised?
      @advised
    end

Call with advice.

[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

[Validate]