rbbt-util 5.21.112 → 5.21.113
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|