Finally, here's a slightly better version. It's still O(n^2) in the
worst case, but should perform much better under common circumstances
(in case someone actually needed this functionality):
class Hash
# Ouch! O(n^2) performance
# Bad for hashes with many keys
def sort_of_equal( other )
equal = true
self.each{ |k,v|
unless found_key = (other[k]==v)
other.each{ |k2,v2|
break if found_key = ( ( k==k2 ) && ( v==v2 ) )
}
end
equal &&= found_key
}
equal
end
end
Note that this will still not work if you have nested hashes that you
want to treat like this. You'd need to override Hash#== fully, or put
in tests based on key and value type.