Module: GraphQL::Schema::Member::HasDirectives Private
- Included in:
- Argument, EnumValue, Field, Interface::DefinitionMethods, GraphQL::Schema::Member
- Defined in:
- lib/graphql/schema/member/has_directives.rb
This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.
Constant Summary collapse
- NO_DIRECTIVES =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
[].freeze
Instance Method Summary collapse
-
#directive(dir_class, **options) ⇒ void
private
Create an instance of
dir_class
forself
, usingoptions
. -
#directives ⇒ Object
private
-
#remove_directive(dir_class) ⇒ viod
private
Remove an attached instance of
dir_class
, if there is one.
Instance Method Details
#directive(dir_class, **options) ⇒ void
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
This method returns an undefined value.
Create an instance of dir_class
for self
, using options
.
It removes a previously-attached instance of dir_class
, if there is one.
12 13 14 15 16 17 |
# File 'lib/graphql/schema/member/has_directives.rb', line 12 def directive(dir_class, **) @own_directives ||= [] remove_directive(dir_class) @own_directives << dir_class.new(self, **) nil end |
#directives ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/graphql/schema/member/has_directives.rb', line 29 def directives case self when Class inherited_directives = if superclass.respond_to?(:directives) superclass.directives else NO_DIRECTIVES end if inherited_directives.any? && @own_directives dirs = [] merge_directives(dirs, inherited_directives) merge_directives(dirs, @own_directives) dirs elsif @own_directives @own_directives elsif inherited_directives.any? inherited_directives else NO_DIRECTIVES end when Module dirs = nil self.ancestors.reverse_each do |ancestor| if ancestor.respond_to?(:own_directives) && (anc_dirs = ancestor.own_directives).any? dirs ||= [] merge_directives(dirs, anc_dirs) end end if own_directives dirs ||= [] merge_directives(dirs, own_directives) end dirs || NO_DIRECTIVES when HasDirectives @own_directives || NO_DIRECTIVES else raise "Invariant: how could #{self} not be a Class, Module, or instance of HasDirectives?" end end |
#remove_directive(dir_class) ⇒ viod
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Remove an attached instance of dir_class
, if there is one
22 23 24 25 |
# File 'lib/graphql/schema/member/has_directives.rb', line 22 def remove_directive(dir_class) @own_directives && @own_directives.reject! { |d| d.is_a?(dir_class) } nil end |