module Pact::Reification

Public Class Methods

escape(str) click to toggle source
# File lib/pact/reification.rb, line 52
def self.escape(str)
  URI.encode_www_form_component(str)
end
from_term(term) click to toggle source
# File lib/pact/reification.rb, line 14
def self.from_term(term)
  case term
  when Pact::Term, Pact::SomethingLike, Pact::ArrayLike
    from_term(term.generate)
  when Regexp
    from_term(Expgen.gen(term))
  when Hash
    term.inject({}) do |mem, (key,t)|
      mem[key] = from_term(t)
      mem
    end
  when Array
    term.map{ |t| from_term(t)}
  when Pact::Request::Base
    from_term(term.to_hash)
  when Pact::QueryString
    from_term(term.query)
  when Pact::QueryHash
    if term.original_string
      term.original_string
    else
      from_term(term.query).map { |k, v|
        if v.nil?
          k
        elsif v.is_a?(Array) #For cases where there are multiple instance of the same parameter
          v.map { |x| "#{k}=#{escape(x)}"}.join('&')
        else
          "#{k}=#{escape(v)}"
        end
      }.join('&')
    end
  when Pact::StringWithMatchingRules
    String.new(term)
  else
    term
  end
end