class Pact::Matchers::ExtractDiffMessages

Attributes

diff[R]

Public Class Methods

call(diff, options = {}) click to toggle source
# File lib/pact/matchers/extract_diff_messages.rb, line 12
def self.call diff, options = {}
  new(diff, options).call
end
new(diff, options = {}) click to toggle source
# File lib/pact/matchers/extract_diff_messages.rb, line 8
def initialize diff, options = {}
  @diff = diff
end

Public Instance Methods

call() click to toggle source
# File lib/pact/matchers/extract_diff_messages.rb, line 20
def call
  to_a
end
diff_messages(obj, path = [], messages = []) click to toggle source
# File lib/pact/matchers/extract_diff_messages.rb, line 32
def diff_messages obj, path = [], messages = []
  case obj
  when Hash then handle_hash obj, path, messages
  when Array then handle_array obj, path, messages
  when BaseDifference then handle_difference obj, path, messages
  when NoDiffAtIndex then nil
  else
    raise "Invalid diff, expected Hash, Array, NoDiffAtIndex or BaseDifference, found #{obj.class}"
  end
  messages
end
handle_array(array, path, messages) click to toggle source
# File lib/pact/matchers/extract_diff_messages.rb, line 51
def handle_array array, path, messages
  array.each_with_index do | obj, index |
    diff_messages obj, path + ["[#{index}]"], messages
  end
end
handle_difference(difference, path, messages) click to toggle source
# File lib/pact/matchers/extract_diff_messages.rb, line 57
def handle_difference difference, path, messages
  if difference.message
    message = difference.message
    message = message.gsub("<path>", path_to_s(path))
    message = message.gsub("<parent_path>", parent_path_to_s(path))
    messages << message
  end
end
handle_hash(hash, path, messages) click to toggle source
# File lib/pact/matchers/extract_diff_messages.rb, line 44
def handle_hash hash, path, messages
  hash.each_pair do | key, value |
    next_part = key =~ /\s/ ? key.inspect : key
    diff_messages value, path + [".#{next_part}"], messages
  end
end
parent_path_to_s(path) click to toggle source
# File lib/pact/matchers/extract_diff_messages.rb, line 70
def parent_path_to_s path
  path_to_s(path[0..-2])
end
path_to_s(path) click to toggle source
# File lib/pact/matchers/extract_diff_messages.rb, line 66
def path_to_s path
  "$" + path.join
end
to_a() click to toggle source
# File lib/pact/matchers/extract_diff_messages.rb, line 28
def to_a
  diff_messages(diff)
end
to_hash() click to toggle source
# File lib/pact/matchers/extract_diff_messages.rb, line 16
def to_hash
  to_a
end
to_s() click to toggle source
# File lib/pact/matchers/extract_diff_messages.rb, line 24
def to_s
  diff_messages(diff).join("\n")
end