Sha256: 08bd7e555cb38345928b886dcfa7815aec63e4069a6a3ca36237336f7f614978

Contents?: true

Size: 686 Bytes

Versions: 23

Compression:

Stored size: 686 Bytes

Contents

# Extend Hash to provide following features:
# - create by SuperHash.new(<hash>)
# - can access values by method, instead of []
# -------------------------------------------- #
class CityGrid
  module Abstraction
    class SuperHash < Hash
      def self.new attrs
        self[attrs]
      end

      def method_missing sym, *args, &block
        val = self[sym] || self[sym.to_s]

        # create new SuperHash if value is hash
        if val.is_a? Hash
          SuperHash.new val
        elsif val.is_a? Array
          SuperArray.new val
        elsif keys.include?(sym) || keys.include?(sym.to_s)
          val
        else
          super
        end
      end
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
citygrid_api-0.0.28 lib/citygrid/abstraction/super_hash.rb
citygrid_api-0.0.27 lib/citygrid/abstraction/super_hash.rb
citygrid_api-0.0.26 lib/citygrid/abstraction/super_hash.rb
citygrid_api-0.0.25 lib/citygrid/abstraction/super_hash.rb
citygrid_api-0.0.24 lib/citygrid/abstraction/super_hash.rb
citygrid_api-0.0.23 lib/citygrid/abstraction/super_hash.rb
citygrid_api-0.0.22 lib/citygrid/abstraction/super_hash.rb
citygrid_api-0.0.21 lib/citygrid/abstraction/super_hash.rb
citygrid_api-0.0.20 lib/citygrid/abstraction/super_hash.rb
citygrid_api-0.0.19 lib/citygrid/abstraction/super_hash.rb
citygrid_api-0.0.18 lib/citygrid/abstraction/super_hash.rb
citygrid_api-0.0.17 lib/citygrid/abstraction/super_hash.rb
citygrid_api-0.0.16 lib/citygrid/abstraction/super_hash.rb
citygrid_api-0.0.15 lib/citygrid/abstraction/super_hash.rb
citygrid_api-0.0.14 lib/citygrid/abstraction/super_hash.rb
citygrid_api-0.0.13 lib/citygrid/abstraction/super_hash.rb
citygrid_api-0.0.12 lib/citygrid/abstraction/super_hash.rb
citygrid_api-0.0.11 lib/citygrid/abstraction/super_hash.rb
citygrid_api-0.0.10 lib/citygrid/abstraction/super_hash.rb
citygrid_api-0.0.9 lib/citygrid/abstraction/super_hash.rb