Sha256: 98fb215a2b6ec1be522769fa7e292b0e729d36737a3830e09be23fec245900f4

Contents?: true

Size: 582 Bytes

Versions: 10

Compression:

Stored size: 582 Bytes

Contents

class Hash

  # Define a fallback object for #fetch and #[].
  #
  #   f = Hash[:b=>2]
  #   h = Hash[:a=>1].having_fallback(f)
  #   h[:b] => 2

  def having_fallback(parent=nil)
    @fallback = parent
    unless @fallsback
      def self.[](key)
        return @fallback[key] if @fallback and not key?(key) rescue super
        super
      end
      def self.fetch(key, *args, &blk)
        return @fallback.fetch(key, *args, &blk) if @fallback and not key?(key) rescue super
        super
      end
      @fallsback = true
    end
    self
  end

  attr_accessor :fallback

end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
facets-1.7.0 lib/facets/core/hash/having_fallback.rb
facets-1.7.30 lib/facets/core/hash/having_fallback.rb
facets-1.7.38 lib/facets/core/hash/having_fallback.rb
facets-1.7.46 lib/facets/core/hash/having_fallback.rb
facets-1.8.49 lib/facets/core/hash/having_fallback.rb
facets-1.8.0 lib/facets/core/hash/having_fallback.rb
facets-1.8.20 lib/facets/core/hash/having_fallback.rb
facets-1.8.51 lib/facets/core/hash/having_fallback.rb
facets-1.8.54 lib/facets/core/hash/having_fallback.rb
facets-1.8.8 lib/facets/core/hash/having_fallback.rb