class GraphQL::SchemaComparator::Diff::Directive

Attributes

new_arguments[R]
new_directive[R]
old_arguments[R]
old_directive[R]

Public Class Methods

new(old_directive, new_directive) click to toggle source
# File lib/graphql/schema_comparator/diff/directive.rb, line 5
def initialize(old_directive, new_directive)
  @old_directive = old_directive
  @new_directive = new_directive
  @old_arguments = old_directive.arguments
  @new_arguments = new_directive.arguments
end

Public Instance Methods

diff() click to toggle source
# File lib/graphql/schema_comparator/diff/directive.rb, line 12
def diff
  changes = []

  if old_directive.description != new_directive.description
    changes << Changes::DirectiveDescriptionChanged.new(old_directive, new_directive)
  end

  changes += removed_locations.map { |location| Changes::DirectiveLocationRemoved.new(new_directive, location) }
  changes += added_locations.map { |location| Changes::DirectiveLocationAdded.new(new_directive, location) }
  changes += added_arguments.map { |argument| Changes::DirectiveArgumentAdded.new(new_directive, argument) }
  changes += removed_arguments.map { |argument| Changes::DirectiveArgumentRemoved.new(new_directive, argument) }

  each_common_argument do |old_argument, new_argument|
    changes += Diff::DirectiveArgument.new(new_directive, old_argument, new_argument).diff
  end

  changes
end

Private Instance Methods

added_arguments() click to toggle source
# File lib/graphql/schema_comparator/diff/directive.rb, line 45
def added_arguments
  new_arguments.values.select { |arg| !old_arguments[arg.name] }
end
added_locations() click to toggle source
# File lib/graphql/schema_comparator/diff/directive.rb, line 37
def added_locations
  (new_directive.locations - old_directive.locations)
end
each_common_argument(&block) click to toggle source
# File lib/graphql/schema_comparator/diff/directive.rb, line 49
def each_common_argument(&block)
  intersection = old_arguments.keys & new_arguments.keys
  intersection.each do |common_arg|
    old_arg = old_directive.arguments[common_arg]
    new_arg = new_directive.arguments[common_arg]

    block.call(old_arg, new_arg)
  end
end
removed_arguments() click to toggle source
# File lib/graphql/schema_comparator/diff/directive.rb, line 41
def removed_arguments
  old_arguments.values.select { |arg| !new_arguments[arg.name] }
end
removed_locations() click to toggle source
# File lib/graphql/schema_comparator/diff/directive.rb, line 33
def removed_locations
  (old_directive.locations - new_directive.locations)
end