Return to Snippet

Revision: 3461
at July 27, 2007 14:51 by ctran


Initial Code
class SafeGetter
  attr_accessor :receiver
  
  def self.safe_nil
    @safe_nil ||= SafeGetter.new(nil)  
  end
  
  def initialize(r)
    @receiver = r
  end
  
  def to_s
    @receiver.to_s
  end
  
  def method_missing(methodname, *args)
    (@receiver.respond_to? methodname) ? SafeGetter.new(@receiver.send(methodname)) : SafeGetter.safe_nil
  end
end

# SafeGetter.new(@user).course.book.title.name.to_s => ''

Initial URL


Initial Description
Access deeply nested properties in a nil-safe manner.  This is usually a code smell but if you insist...

Initial Title
Nil safe getter

Initial Tags


Initial Language
Ruby