Sha256: 613198084877be8e43e64cf9fb033fed4475b3826dc38f65cdc1c4d864c8e7a0

Contents?: true

Size: 850 Bytes

Versions: 53

Compression:

Stored size: 850 Bytes

Contents

module Temple
  # Immutable hash class which supports hash merging
  # @api public
  class ImmutableHash
    include Enumerable

    def initialize(*hash)
      @hash = hash.compact
    end

    def include?(key)
      @hash.any? {|h| h.include?(key) }
    end

    def [](key)
      @hash.each {|h| return h[key] if h.include?(key) }
      nil
    end

    def each
      keys.each {|k| yield(k, self[k]) }
    end

    def keys
      @hash.inject([]) {|keys, h| keys += h.keys }.uniq
    end

    def values
      keys.map {|k| self[k] }
    end
  end

  # Mutable hash class which supports hash merging
  # @api public
  class MutableHash < ImmutableHash
    def initialize(*hash)
      super({}, *hash)
    end

    def []=(key, value)
      @hash.first[key] = value
    end

    def update(hash)
      @hash.first.update(hash)
    end
  end
end

Version data entries

53 entries across 53 versions & 2 rubygems

Version Path
classiccms-0.7.5 vendor/bundle/gems/temple-0.4.0/lib/temple/hash.rb
classiccms-0.7.4 vendor/bundle/gems/temple-0.4.0/lib/temple/hash.rb
classiccms-0.7.3 vendor/bundle/gems/temple-0.4.0/lib/temple/hash.rb
classiccms-0.7.2 vendor/bundle/gems/temple-0.4.0/lib/temple/hash.rb
classiccms-0.7.1 vendor/bundle/gems/temple-0.4.0/lib/temple/hash.rb
classiccms-0.7.0 vendor/bundle/gems/temple-0.4.0/lib/temple/hash.rb
classiccms-0.6.9 vendor/bundle/gems/temple-0.4.0/lib/temple/hash.rb
classiccms-0.6.8 vendor/bundle/gems/temple-0.4.0/lib/temple/hash.rb
classiccms-0.6.7 vendor/bundle/gems/temple-0.4.0/lib/temple/hash.rb
classiccms-0.6.6 vendor/bundle/gems/temple-0.4.0/lib/temple/hash.rb
classiccms-0.6.5 vendor/bundle/gems/temple-0.4.0/lib/temple/hash.rb
classiccms-0.6.4 vendor/bundle/gems/temple-0.4.0/lib/temple/hash.rb
classiccms-0.6.3 vendor/bundle/gems/temple-0.4.0/lib/temple/hash.rb
classiccms-0.6.2 vendor/bundle/gems/temple-0.4.0/lib/temple/hash.rb
classiccms-0.6.1 vendor/bundle/gems/temple-0.4.0/lib/temple/hash.rb
classiccms-0.6.0 vendor/bundle/gems/temple-0.4.0/lib/temple/hash.rb
classiccms-0.5.17 vendor/bundle/gems/temple-0.4.0/lib/temple/hash.rb
classiccms-0.5.16 vendor/bundle/gems/temple-0.4.0/lib/temple/hash.rb
classiccms-0.5.15 vendor/bundle/gems/temple-0.4.0/lib/temple/hash.rb
classiccms-0.5.14 vendor/bundle/gems/temple-0.4.0/lib/temple/hash.rb