Sha256: 32b28efb55a40131d363f9ca78c9bb1c05ffb34b743b7f650d487e3522127590
Contents?: true
Size: 1.11 KB
Versions: 1
Compression:
Stored size: 1.11 KB
Contents
module GraphQL class Schema # A helper to ensure `object` implements the concept `as` class ImplementationValidator attr_reader :object, :errors, :implementation_as def initialize(object, as:, errors:) @object = object @implementation_as = as @errors = errors end # Ensure the object responds to `method_name`. # If `block_given?`, yield the return value of that method # If provided, use `as` in the error message, overriding class-level `as`. def must_respond_to(method_name, args: [], as: nil) local_as = as || implementation_as method_signature = "##{method_name}(#{args.join(", ")})" if !object.respond_to?(method_name) errors << "#{object.to_s} must respond to #{method_signature} to be a #{local_as}" elsif block_given? return_value = object.public_send(method_name) if return_value.nil? errors << "#{object.to_s} must return a value for #{method_signature} to be a #{local_as}" else yield(return_value) end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
graphql-0.13.0 | lib/graphql/schema/implementation_validator.rb |