Sha256: c909030fda65b7ea844edaedaa7e0afbeb985dbbfbacdf6fb3b6da96648323cc

Contents?: true

Size: 913 Bytes

Versions: 2

Compression:

Stored size: 913 Bytes

Contents

# frozen_string_literal: true
module GraphQL
  module Define
    # Turn argument configs into a {GraphQL::Argument}.
    module AssignArgument
      def self.call(target, name, type = nil, description = nil, **rest, &block)
        argument = if block_given?
          GraphQL::Argument.define(&block)
        else
          GraphQL::Argument.new
        end

        unsupported_keys = rest.keys - [:default_value, :as]
        if unsupported_keys.any?
          raise ArgumentError.new("unknown keyword#{unsupported_keys.length > 1 ? 's' : ''}: #{unsupported_keys.join(', ')}")
        end

        argument.name = name.to_s
        type && argument.type = type
        description && argument.description = description
        rest.key?(:default_value) && argument.default_value = rest[:default_value]
        argument.as = rest[:as]

        target.arguments[name.to_s] = argument
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
graphql-1.4.5 lib/graphql/define/assign_argument.rb
graphql-1.4.4 lib/graphql/define/assign_argument.rb