Sha256: 282429a45e6ac72ba71a86489732ae734e21fd5a5f22be8ce64acf7197b442bb

Contents?: true

Size: 815 Bytes

Versions: 34

Compression:

Stored size: 815 Bytes

Contents

module GraphQL
  class Schema
    # Stores `{ name => type }` pairs for a given schema.
    # It behaves like a hash except for a couple things:
    #  - if you use `[key]` and that key isn't defined, 💥!
    #  - if you try to define the same key twice, 💥!
    #
    # If you want a type, but want to handle the undefined case, use {#fetch}.
    class TypeMap
      extend Forwardable
      def_delegators :@storage, :key?, :keys, :values, :to_h, :fetch

      def initialize
        @storage = {}
      end

      def [](key)
        @storage[key] || raise("No type found for '#{key}'")
      end

      def []=(key, value)
        if @storage.key?(key)
          raise("Duplicate type definition found for name '#{key}'")
        else
          @storage[key] = value
        end
      end
    end
  end
end

Version data entries

34 entries across 34 versions & 1 rubygems

Version Path
graphql-1.0.0 lib/graphql/schema/type_map.rb
graphql-0.19.4 lib/graphql/schema/type_map.rb
graphql-0.19.3 lib/graphql/schema/type_map.rb
graphql-0.19.2 lib/graphql/schema/type_map.rb
graphql-0.19.1 lib/graphql/schema/type_map.rb
graphql-0.19.0 lib/graphql/schema/type_map.rb
graphql-0.18.15 lib/graphql/schema/type_map.rb
graphql-0.18.14 lib/graphql/schema/type_map.rb
graphql-0.18.13 lib/graphql/schema/type_map.rb
graphql-0.18.12 lib/graphql/schema/type_map.rb
graphql-0.18.11 lib/graphql/schema/type_map.rb
graphql-0.18.10 lib/graphql/schema/type_map.rb
graphql-0.18.9 lib/graphql/schema/type_map.rb
graphql-0.18.8 lib/graphql/schema/type_map.rb
graphql-0.18.7 lib/graphql/schema/type_map.rb
graphql-0.18.6 lib/graphql/schema/type_map.rb
graphql-0.18.5 lib/graphql/schema/type_map.rb
graphql-0.18.4 lib/graphql/schema/type_map.rb
graphql-0.18.3 lib/graphql/schema/type_map.rb
graphql-0.18.2 lib/graphql/schema/type_map.rb