Sha256: 753bff648e82b6b15b0b1572ed016131fe9a43cb3d686aca5738866dd3af4a81

Contents?: true

Size: 622 Bytes

Versions: 4

Compression:

Stored size: 622 Bytes

Contents

require 'facets/core/hash/having_fallback'

class OpenAscend < OpenObject

  def method_missing( sym, arg=nil )
    type = sym.to_s[-1,1]
    name = sym.to_s.gsub(/[=!?]$/, '').to_sym
    if type == '='
      self[name] = arg
    elsif type == '!'
      self[name] = arg
      self
    else
      val = self[name]
      val = object_class[val].fallback(self) if Hash === val
      val
    end
  end

end

class HashWithAquisition < Hash

  def [](key)
    val = super
    val.fallback(self) if Hash == val
    val
  end

  def fetch(key,*args,&blk)
    val = super
    val.fallback(self) if Hash == val
    val
  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
facets-1.8.0 work/yore/HashAquisition.rb
facets-1.8.20 work/yore/HashAquisition.rb
facets-1.8.49 work/yore/HashAquisition.rb
facets-1.8.8 work/yore/HashAquisition.rb