You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by mf...@redhat.com on 2012/07/19 15:02:46 UTC
[PATCH core 13/16] Core: Fixed 'gsub_keys' helper in Hash to work with Ruby 1.9
From: Michal Fojtik <mf...@redhat.com>
Signed-off-by: Michal fojtik <mf...@redhat.com>
---
server/lib/deltacloud/core_ext/hash.rb | 12 +++++++-----
server/tests/helpers/core_ext/hash_test.rb | 29 +++++++++++++++++++++++-----
2 files changed, 31 insertions(+), 10 deletions(-)
diff --git a/server/lib/deltacloud/core_ext/hash.rb b/server/lib/deltacloud/core_ext/hash.rb
index fb12045..52c6e89 100644
--- a/server/lib/deltacloud/core_ext/hash.rb
+++ b/server/lib/deltacloud/core_ext/hash.rb
@@ -16,15 +16,17 @@
class Hash
def gsub_keys(rgx_pattern, replacement)
remove = []
- self.each_key do |key|
+ new_hash = {}
+ each_key do |key|
if key.to_s.match(rgx_pattern)
new_key = key.to_s.gsub(rgx_pattern, replacement).downcase
- self[new_key] = self[key]
- remove << key
+ new_hash[new_key] = self[key]
+ else
+ new_hash[key] = self[key]
end
end
- #remove the original keys
- self.delete_if{|k,v| remove.include?(k)}
+ clear
+ merge!(new_hash)
end
# Method copied from https://github.com/rails/rails/blob/77efc20a54708ba37ba679ffe90021bf8a8d3a8a/activesupport/lib/active_support/core_ext/hash/keys.rb#L23
diff --git a/server/tests/helpers/core_ext/hash_test.rb b/server/tests/helpers/core_ext/hash_test.rb
index 196d70c..5eccdeb 100644
--- a/server/tests/helpers/core_ext/hash_test.rb
+++ b/server/tests/helpers/core_ext/hash_test.rb
@@ -10,12 +10,31 @@ class TestHash < MiniTest::Unit::TestCase
h = {
:'test-key-1' => '1',
:'test-key-2' => '2',
- :'test-key-3' => '3',
+ 'test-key-3' => '3',
+ :random => '10'
}
- h.gsub_keys(/test-key/, 'test')
- assert_equal h['test-1'], '1'
- assert_equal h['test-2'], '2'
- assert_equal h['test-3'], '3'
+
+ h.gsub_keys(/test/, 'new')
+
+ assert_equal '1', h['new-key-1']
+ assert_equal '2', h['new-key-2']
+ assert_equal '3', h['new-key-3']
+ assert_equal '10', h[:random]
+ end
+
+ def test_symbolize_keys
+ assert_equal true, {}.respond_to?(:"symbolize_keys")
+ h = {
+ 'test1' => 1,
+ :test3 => 3
+ }
+
+ h.symbolize_keys
+
+ assert_equal 1, h[:test1]
+ assert_equal nil, h['test1']
+ assert_equal 3, h[:test3]
+
end
end
--
1.7.10.2