foobara-util 1.0.7 → 1.0.8
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/CHANGELOG.md +5 -1
- data/lib/foobara/util/hash.rb +45 -0
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 66fafc1f5e8cdb69b042528211ebb96c0e929b32fddaffbe7d12d27edc19b703
|
|
4
|
+
data.tar.gz: d62cca30935277875205953bffc97520038759d4f777f1bb7eabc474572d2ab5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5b7242ea1459e64b66938b4c69ed870c43ad567eec666f914c476c6a11877f4241877b1f2f7aa829507dab07890001fbb930268e02c2dda467997c479b6d3558
|
|
7
|
+
data.tar.gz: f15b09ed0b07a8de534196c791eba4ea863627f8d0fdc97ae09ed3c9cac40f690da4ae62dd10e2c13a6a5da85230bd359bdc8201b6d58e783ee0a7e9821240c3
|
data/CHANGELOG.md
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
## [1.0.8] - 2026-01-22
|
|
2
|
+
|
|
3
|
+
- Add .sort_by_keys/.sort_by_keys! for hashes
|
|
4
|
+
|
|
1
5
|
## [1.0.7] - 2025-12-19
|
|
2
6
|
|
|
3
7
|
- Fix bug where .all_symbolic_keys? would return true for a hash with a string key
|
|
4
|
-
- Handle situations where Hash subclass or non-Hash are passed to .symbolize_keys
|
|
8
|
+
- Handle situations where Hash subclass or non-Hash are passed to .symbolize_keys and .symbolize_keys!
|
|
5
9
|
|
|
6
10
|
## [1.0.6] - 2025-12-14
|
|
7
11
|
|
data/lib/foobara/util/hash.rb
CHANGED
|
@@ -2,6 +2,51 @@ module Foobara
|
|
|
2
2
|
module Util
|
|
3
3
|
module_function
|
|
4
4
|
|
|
5
|
+
def sort_by_keys(hash)
|
|
6
|
+
keys = hash.keys
|
|
7
|
+
|
|
8
|
+
keys.sort!
|
|
9
|
+
|
|
10
|
+
sorted_hash = {}
|
|
11
|
+
|
|
12
|
+
keys.each do |key|
|
|
13
|
+
sorted_hash[key] = hash[key]
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
sorted_hash
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def sort_by_keys!(hash)
|
|
20
|
+
last_key = keys_to_move = nil
|
|
21
|
+
|
|
22
|
+
hash.each_key do |key|
|
|
23
|
+
if last_key
|
|
24
|
+
if key < last_key
|
|
25
|
+
if keys_to_move
|
|
26
|
+
keys_to_move << key
|
|
27
|
+
else
|
|
28
|
+
keys_to_move = [key]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
next
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
last_key = key
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
return hash unless keys_to_move
|
|
39
|
+
|
|
40
|
+
keys_to_move.sort!
|
|
41
|
+
|
|
42
|
+
keys_to_move.each do |key|
|
|
43
|
+
value = hash.delete(key)
|
|
44
|
+
hash[key] = value
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
hash
|
|
48
|
+
end
|
|
49
|
+
|
|
5
50
|
def symbolize_keys(hash)
|
|
6
51
|
unless all_symbolizable_keys?(hash)
|
|
7
52
|
# :nocov:
|