module Pact::Reification

def self.from_term(term)

def self.from_term(term)
  case
  when term.respond_to?(:generate)
    term.generate
  when term.is_a?(Hash)
    term.inject({}) do |mem, (key,term)|
      mem[key] = from_term(term)
    mem
    end
  when term.is_a?(Array)
    term.inject([]) do |mem, term|
      mem << from_term(term)
      mem
    end
  else
    term
  end
end