Sha256: 12e7a3e3f33624d5456a7acc32d8d2b9757e80e1a611fe1c740f7d4e4dd04833

Contents?: true

Size: 735 Bytes

Versions: 42

Compression:

Stored size: 735 Bytes

Contents

require 'pact/matchers/matchers'
require 'uri'

module Pact
  class FormDiffer

    extend Matchers

    def self.call expected, actual, options = {}
      diff to_hash(expected), to_hash(actual), options
    end

    def self.to_hash form_body
      if form_body.is_a?(Hash)
        ensure_values_are_arrays form_body
      else
        decode_www_form form_body
      end
    end

    def self.ensure_values_are_arrays hash
      hash.each_with_object({}) do | (key, value), hash |
        hash[key.to_s] = [*value]
      end
    end

    def self.decode_www_form string
      URI.decode_www_form(string).each_with_object({}) do | (key, value), hash |
        hash[key] ||= []
        hash[key] << value
      end
    end

  end
end

Version data entries

42 entries across 42 versions & 1 rubygems

Version Path
pact-support-1.2.99.alpha.1 lib/pact/shared/form_differ.rb
pact-support-1.3.0.alpha.2 lib/pact/shared/form_differ.rb
pact-support-1.3.0.alpha.1 lib/pact/shared/form_differ.rb
pact-support-1.2.5 lib/pact/shared/form_differ.rb
pact-support-1.2.4 lib/pact/shared/form_differ.rb
pact-support-1.2.3 lib/pact/shared/form_differ.rb
pact-support-1.2.2 lib/pact/shared/form_differ.rb
pact-support-1.2.1 lib/pact/shared/form_differ.rb
pact-support-1.2.0 lib/pact/shared/form_differ.rb
pact-support-1.1.8 lib/pact/shared/form_differ.rb
pact-support-1.1.7 lib/pact/shared/form_differ.rb
pact-support-1.1.6 lib/pact/shared/form_differ.rb
pact-support-1.1.5 lib/pact/shared/form_differ.rb
pact-support-1.1.4 lib/pact/shared/form_differ.rb
pact-support-1.1.3 lib/pact/shared/form_differ.rb
pact-support-1.1.2 lib/pact/shared/form_differ.rb
pact-support-1.1.1 lib/pact/shared/form_differ.rb
pact-support-1.1.0 lib/pact/shared/form_differ.rb
pact-support-1.0.1 lib/pact/shared/form_differ.rb
pact-support-1.0.0 lib/pact/shared/form_differ.rb