diff options
author | Eric Wong <normalperson@yhbt.net> | 2011-11-18 22:49:55 +0000 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2011-11-18 22:49:55 +0000 |
commit | e6edebe4288c98827e723d75fe9fea4c1a0b013f (patch) | |
tree | b6c1203db47f2d6bbb121f6c8289c9e71226e69b | |
parent | b4b3ec9ac07dad1aab6da1d3ba9c26c4b7959dc2 (diff) | |
download | mogilefs-client-e6edebe4288c98827e723d75fe9fea4c1a0b013f.tar.gz |
I never learned to read Hash[] well. Also, String#freeze on keys to prevent Ruby from calling String#dup for us.
-rw-r--r-- | lib/mogilefs/backend.rb | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/mogilefs/backend.rb b/lib/mogilefs/backend.rb index b754bbc..454685a 100644 --- a/lib/mogilefs/backend.rb +++ b/lib/mogilefs/backend.rb @@ -372,9 +372,12 @@ class MogileFS::Backend # Turns a url params string into a Hash. def url_decode(str) # :nodoc: - Hash[*(str.split(/&/).map! { |pair| - pair.split(/=/, 2).map! { |x| url_unescape(x) } - } ).flatten] + rv = {} + str.split(/&/).each do |pair| + k, v = pair.split(/=/, 2).map! { |x| url_unescape(x) } + rv[k.freeze] = v + end + rv end # :stopdoc: |