Module Verbosify
In: lib/verbose_object.rb
Author:Nicolas Pouillard <ertai@lrde.epita.fr>.
Copyright:Copyright (c) 2005 Nicolas Pouillard. All rights reserved.
License:GNU General Public License (GPL).
Revision:$Id: /w/fey/ruby_ex/trunk/lib/verbose_object.rb 21865 2006-02-18T17:13:28.680350Z pouillar $

Methods

Attributes

verbose_object_options  [R] 
verbose_object_reference  [RW] 

Public Class methods

[Source]

# File lib/verbose_object.rb, line 11
  def initialize ( anObject, opts=nil )
    @verbose_object_reference = anObject
    self.verbose_object_options = opts
  end

Public Instance methods

[Source]

# File lib/verbose_object.rb, line 43
  def method_missing ( m, *a, &b )
    super($1.to_sym) if m.to_s =~ /^__blank_slate_(.+)/
    verbose_object_method_missing(m, *a, &b)
  end

[Source]

# File lib/verbose_object.rb, line 31
  def  verbose_object?verbose_object?
    true
  end

[Source]

# File lib/verbose_object.rb, line 73
  def verbose_object_empty_trace ( action )
    inspect # FIXME
  end

[Source]

# File lib/verbose_object.rb, line 48
  def verbose_object_method_missing ( m, *a, &b )
    begin
      @verbose_object_options[:logger].log(self, m, *a)
    rescue NoMethodError => ex
      STDERR.puts "No valid logger (#{m}) (#{ex})"
    end
    res = verbose_object_send(m, *a, &b)
    return res if @verbose_object_options[:no_rec]
    call = MethodCall.new(m, *a, &b)
    opts = @verbose_object_options.merge(:call => call, :last => self)
    res.verbosify(opts)
  end

[Source]

# File lib/verbose_object.rb, line 16
  def verbose_object_options= ( opts )
    @verbose_object_reference ||= nil
    @verbose_object_options = opts || {}
    unless @verbose_object_options.is_a? Hash
      raise ArgumentError,
            "Need a hash of options not a #@verbose_object_options"
    end
    if @verbose_object_options[:logger].nil?
      logger = @verbose_object_options[:logger] = Object.new
      def logger.log ( obj, *a )
        STDERR.puts "LOG: #{obj.__id__}: #{a.inspect}"
      end
    end
  end

[Source]

# File lib/verbose_object.rb, line 35
  def verbose_object_send ( m, *a, &b )
    if @verbose_object_reference.nil?
      __send__("__blank_slate_#{m}", *a, &b)
    else
      @verbose_object_reference.__send__(m, *a, &b)
    end
  end

[Source]

# File lib/verbose_object.rb, line 61
  def verbose_object_trace ( action=nil )
    call = @verbose_object_options[:call]
    last = @verbose_object_options[:last]
    return verbose_object_empty_trace(action) if call.nil?
    if last.__blank_slate_eql? self
      last = verbose_object_empty_trace(action)
    else
      last = last.verbose_object_trace(action)
    end
    call.to_ruby(last)
  end

[Validate]