rbbt-util 5.21.112 → 5.21.113
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rbbt/util/misc/indiferent_hash.rb +32 -0
- data/test/rbbt/util/test_misc.rb +13 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 51f95ac687a3b34bd02b32a6a4c542ee6fb3a169
|
4
|
+
data.tar.gz: bc322aceaa669319865fb86b665f2aafb09e9065
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 536e9dd8b7e012ce0d7c20ec55d0bf7a504c314eb5644a3616eddfcde1d365f5406ede03e10f51705fea79f60f0c7e6c80701f61d3620902e2042d1412556772
|
7
|
+
data.tar.gz: d9633a0deb661e98b5586ead07295fb7543d7eb5f6b528a09eb6a44857aed19af0dddbaf932202817ca78c6a4a6a05e390e5b138f13092a8dc553fcb28bf2564
|
@@ -62,3 +62,35 @@ module IndiferentHash
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
end
|
65
|
+
|
66
|
+
module CaseInsensitiveHash
|
67
|
+
|
68
|
+
|
69
|
+
def self.setup(hash)
|
70
|
+
hash.extend CaseInsensitiveHash
|
71
|
+
end
|
72
|
+
|
73
|
+
def downcase_keys
|
74
|
+
@downcase_keys ||= begin
|
75
|
+
down = {}
|
76
|
+
keys.collect{|key|
|
77
|
+
down[key.to_s.downcase] = key
|
78
|
+
}
|
79
|
+
down
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def [](key, *rest)
|
84
|
+
value = super(key, *rest)
|
85
|
+
return value unless value.nil?
|
86
|
+
key_downcase = key.to_s.downcase
|
87
|
+
super(downcase_keys[key_downcase])
|
88
|
+
end
|
89
|
+
|
90
|
+
def values_at(*keys)
|
91
|
+
keys.collect do |key|
|
92
|
+
self[key]
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
data/test/rbbt/util/test_misc.rb
CHANGED
@@ -574,4 +574,17 @@ EOF
|
|
574
574
|
assert Misc.match_fields(f1, f3)
|
575
575
|
assert Misc.match_fields(f3, f1)
|
576
576
|
end
|
577
|
+
|
578
|
+
def test_case_insensitive
|
579
|
+
hash = {"A" => 1, :b => 2, "c" => 3}
|
580
|
+
CaseInsensitiveHash.setup hash
|
581
|
+
|
582
|
+
assert_equal 1, hash["A"]
|
583
|
+
assert_equal 1, hash[:A]
|
584
|
+
assert_equal 1, hash[:a]
|
585
|
+
assert_equal 2, hash["B"]
|
586
|
+
assert_equal 2, hash["b"]
|
587
|
+
assert_equal 1, hash[:A]
|
588
|
+
assert_equal 3, hash[:C]
|
589
|
+
end
|
577
590
|
end
|