Sha256: a3d569dcc01bcb6761cb517465c3b5c9569e5aca49e5a9d36afae881fef024dc

Contents?: true

Size: 484 Bytes

Versions: 25

Compression:

Stored size: 484 Bytes

Contents

require 'delegate'

class NilCheckDelegate < Delegator
  def initialize(obj)
    super
    @delegate_sd_obj = obj
    @depth = 0
  end

  def nilcheck_depth(depth = 0)
    @depth = depth
    self
  end

  def _wrap(obj)
    ((@depth -= 1) >= 0) ? self.class.new(obj) : obj
  end

  def method_missing m, *args, &blk
    _wrap(__getobj__.nil? ? nil : super(m, *args, &blk))
  end

  def __getobj__
    @delegate_sd_obj
  end

  def __setobj__(obj)
    @delegate_sd_obj = obj
  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
ironfan-6.1.9 lib/gorillib/nil_check_delegate.rb
ironfan-6.0.9 lib/gorillib/nil_check_delegate.rb
ironfan-6.1.7 lib/gorillib/nil_check_delegate.rb
ironfan-6.1.6 lib/gorillib/nil_check_delegate.rb
ironfan-6.0.8 lib/gorillib/nil_check_delegate.rb
ironfan-6.1.5 lib/gorillib/nil_check_delegate.rb
ironfan-6.1.4 lib/gorillib/nil_check_delegate.rb
ironfan-6.1.3 lib/gorillib/nil_check_delegate.rb
ironfan-6.1.0 lib/gorillib/nil_check_delegate.rb
ironfan-6.0.7 lib/gorillib/nil_check_delegate.rb
ironfan-5.0.11 lib/gorillib/nil_check_delegate.rb
ironfan-6.0.6 lib/gorillib/nil_check_delegate.rb
ironfan-6.0.5 lib/gorillib/nil_check_delegate.rb
ironfan-6.0.4 lib/gorillib/nil_check_delegate.rb
ironfan-6.0.3 lib/gorillib/nil_check_delegate.rb
ironfan-6.0.1 lib/gorillib/nil_check_delegate.rb
ironfan-6.0.0 lib/gorillib/nil_check_delegate.rb
ironfan-5.0.10 lib/gorillib/nil_check_delegate.rb
ironfan-5.0.8 lib/gorillib/nil_check_delegate.rb
ironfan-5.0.5 lib/gorillib/nil_check_delegate.rb