nrser 0.0.28 → 0.0.29
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/nrser/hash/stringify_keys.rb +18 -2
- data/lib/nrser/hash/symbolize_keys.rb +16 -2
- data/lib/nrser/hash/transform_keys.rb +95 -2
- data/lib/nrser/refinements/hash.rb +25 -1
- data/lib/nrser/rspex.rb +12 -12
- data/lib/nrser/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2273f6424356766a1849b35fc437b13942f15af1
|
4
|
+
data.tar.gz: 901f479555218cc42909235832f2271ca8f61579
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 87482595ba0e8a8fec1b3e7c3b3c368432a5edbef62a2704d721e61199177446a6d0e28ca4c2f1119db5d7adb8da8666ded661f3c79f20f44dbccee48b756e80
|
7
|
+
data.tar.gz: 412d7fdbe26337164955f5a52e6bc70370f2bd5c1282797e66c91b794fa2b8471e2dc9865e9210b822490799194a90102242466967e233a23630f773ac6cf33b
|
@@ -16,7 +16,7 @@ module NRSER
|
|
16
16
|
transform_keys! hash, &:to_s
|
17
17
|
end
|
18
18
|
|
19
|
-
singleton_class.send :alias_method, :
|
19
|
+
singleton_class.send :alias_method, :to_s_keys!, :stringify_keys!
|
20
20
|
|
21
21
|
|
22
22
|
# Returns a new hash with all keys transformed to strings by calling `#to_s`
|
@@ -32,6 +32,22 @@ module NRSER
|
|
32
32
|
transform_keys hash, &:to_s
|
33
33
|
end
|
34
34
|
|
35
|
-
singleton_class.send :alias_method, :
|
35
|
+
singleton_class.send :alias_method, :to_s_keys, :stringify_keys
|
36
|
+
|
37
|
+
|
38
|
+
# @todo Document deep_stringify_keys method.
|
39
|
+
#
|
40
|
+
# @param [type] arg_name
|
41
|
+
# @todo Add name param description.
|
42
|
+
#
|
43
|
+
# @return [return_type]
|
44
|
+
# @todo Document return value.
|
45
|
+
#
|
46
|
+
def self.deep_stringify_keys object
|
47
|
+
deep_transform_keys object, &:to_s
|
48
|
+
end # .deep_stringify_keys
|
49
|
+
|
50
|
+
singleton_class.send :alias_method, :to_s_keys_r, :deep_stringify_keys
|
51
|
+
|
36
52
|
|
37
53
|
end # module NRSER
|
@@ -17,7 +17,7 @@ module NRSER
|
|
17
17
|
transform_keys!(hash) { |key| key.to_sym rescue key }
|
18
18
|
end # .symbolize_keys!
|
19
19
|
|
20
|
-
singleton_class.send :alias_method, :
|
20
|
+
singleton_class.send :alias_method, :to_sym_keys!, :symbolize_keys!
|
21
21
|
|
22
22
|
|
23
23
|
# Returns a new hash with all keys that respond to `#to_sym` converted to
|
@@ -36,6 +36,20 @@ module NRSER
|
|
36
36
|
transform_keys(hash) { |key| key.to_sym rescue key }
|
37
37
|
end
|
38
38
|
|
39
|
-
singleton_class.send :alias_method, :
|
39
|
+
singleton_class.send :alias_method, :to_sym_keys, :symbolize_keys
|
40
|
+
|
41
|
+
|
42
|
+
# @todo Document deep_symbolize_keys method.
|
43
|
+
#
|
44
|
+
# @param [type] arg_name
|
45
|
+
# @todo Add name param description.
|
46
|
+
#
|
47
|
+
# @return [return_type]
|
48
|
+
# @todo Document return value.
|
49
|
+
#
|
50
|
+
def self.deep_symbolize_keys object, &block
|
51
|
+
deep_transform_keys( object ) { key.to_sym rescue key }
|
52
|
+
end # .deep_symbolize_keys
|
53
|
+
|
40
54
|
|
41
55
|
end # module NRSER
|
@@ -39,7 +39,100 @@ module NRSER
|
|
39
39
|
result
|
40
40
|
end
|
41
41
|
|
42
|
-
# My-style
|
43
|
-
singleton_class.send :alias_method, :map_keys,
|
42
|
+
# My-style names
|
43
|
+
singleton_class.send :alias_method, :map_keys, :transform_keys
|
44
|
+
singleton_class.send :alias_method, :rekey, :transform_keys
|
45
|
+
|
46
|
+
|
47
|
+
# Deeply transform Hash keys that we can find by traversing Hash and Array
|
48
|
+
# instances that we can find from `object` and piping keys through `block`.
|
49
|
+
#
|
50
|
+
# @example Hash top node
|
51
|
+
#
|
52
|
+
# NRSER.deep_transform_keys({
|
53
|
+
# people: {
|
54
|
+
# jane: {fav_color: 'red'},
|
55
|
+
# joe: {fav_color: 'blue'},
|
56
|
+
# }
|
57
|
+
# }) { |key| key.to_s.upcase }
|
58
|
+
# # => {
|
59
|
+
# # "PEOPLE" => {
|
60
|
+
# # "JANE" => {"FAV_COLOR" => 'red'},
|
61
|
+
# # "JOE" => {"FAV_COLOR" => 'blue'},
|
62
|
+
# # }
|
63
|
+
#
|
64
|
+
# @example Array top node
|
65
|
+
#
|
66
|
+
# NRSER.deep_transform_keys(
|
67
|
+
# [{x: 2}, {y: 'blue'}, 3]
|
68
|
+
# ) { |key| key.to_s.upcase }
|
69
|
+
# # => [{'X' => 2}, {'Y' => 'blue'}, 3]
|
70
|
+
#
|
71
|
+
#
|
72
|
+
# @example Non-array or hash value
|
73
|
+
#
|
74
|
+
# NRSER.deep_transform_keys 'blah'
|
75
|
+
# # => 'blah'
|
76
|
+
#
|
77
|
+
# From ActiveSupport.
|
78
|
+
#
|
79
|
+
# @see http://www.rubydoc.info/gems/activesupport/5.1.3/Hash:deep_transform_keys
|
80
|
+
#
|
81
|
+
# @todo Maybe this is a tree function?
|
82
|
+
#
|
83
|
+
# @param [Object] object
|
84
|
+
# Anything; see examples.
|
85
|
+
#
|
86
|
+
# @param [Proc] &block
|
87
|
+
# Proc that should accept each key as it's only argument and return the
|
88
|
+
# new key to replace it with.
|
89
|
+
#
|
90
|
+
def self.deep_transform_keys object, &block
|
91
|
+
case object
|
92
|
+
when Hash
|
93
|
+
object.each_with_object( {} ) do |(key, value), result|
|
94
|
+
result[block.call( key )] = deep_transform_keys value, &block
|
95
|
+
end
|
96
|
+
when Array
|
97
|
+
object.map { |entry| deep_transform_keys entry, &block }
|
98
|
+
else
|
99
|
+
object
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
singleton_class.send :alias_method, :deep_map_keys, :deep_transform_keys
|
104
|
+
singleton_class.send :alias_method, :map_keys_r, :deep_transform_keys
|
105
|
+
singleton_class.send :alias_method, :deep_rekey, :deep_transform_keys
|
106
|
+
singleton_class.send :alias_method, :rekey_r, :deep_transform_keys
|
107
|
+
|
108
|
+
|
109
|
+
# Like {NRSER.deep_transform_keys} but mutates the objects (works in place).
|
110
|
+
#
|
111
|
+
# @param object (see NRSER.deep_transform_keys)
|
112
|
+
# @param &block (see NRSER.deep_transform_keys)
|
113
|
+
#
|
114
|
+
# @return [Object]
|
115
|
+
# The `object` that was passed in, post mutations.
|
116
|
+
#
|
117
|
+
def self.deep_transform_keys! object, &block
|
118
|
+
case object
|
119
|
+
when Hash
|
120
|
+
object.keys.each do |key|
|
121
|
+
value = object.delete key
|
122
|
+
object[block.call( key )] = deep_transform_keys! value, &block
|
123
|
+
end
|
124
|
+
object
|
125
|
+
when Array
|
126
|
+
object.map! {|e| deep_transform_keys!(e, &block)}
|
127
|
+
else
|
128
|
+
object
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
singleton_class.send :alias_method, :deep_map_keys!, :deep_transform_keys!
|
133
|
+
singleton_class.send :alias_method, :map_keys_r!, :deep_transform_keys!
|
134
|
+
singleton_class.send :alias_method, :deep_rekey!, :deep_transform_keys!
|
135
|
+
singleton_class.send :alias_method, :rekey_r!, :deep_transform_keys!
|
136
|
+
|
44
137
|
|
45
138
|
end # module NRSER
|
@@ -46,13 +46,37 @@ module NRSER
|
|
46
46
|
end
|
47
47
|
|
48
48
|
|
49
|
+
# See {NRSER.deep_transform_keys!}
|
50
|
+
def deep_transform_keys! &block
|
51
|
+
return enum_for(:deep_transform_keys!) { size } unless block_given?
|
52
|
+
NRSER.deep_transform_keys! self, &block
|
53
|
+
end
|
54
|
+
|
55
|
+
alias_method :deep_map_keys!, :deep_transform_keys!
|
56
|
+
alias_method :map_keys_r!, :deep_transform_keys!
|
57
|
+
alias_method :deep_rekey!, :deep_transform_keys!
|
58
|
+
alias_method :rekey_r!, :deep_transform_keys!
|
59
|
+
|
60
|
+
|
49
61
|
# See {NRSER.transform_keys}
|
50
62
|
def transform_keys &block
|
51
|
-
return
|
63
|
+
return enum_for(:transform_keys) { size } unless block_given?
|
52
64
|
NRSER.transform_keys self, &block
|
53
65
|
end
|
54
66
|
|
55
67
|
|
68
|
+
# See {NRSER.deep_transform_keys}
|
69
|
+
def deep_transform_keys &block
|
70
|
+
return enum_for(:deep_transform_keys) { size } unless block_given?
|
71
|
+
NRSER.deep_transform_keys self, &block
|
72
|
+
end
|
73
|
+
|
74
|
+
alias_method :deep_map_keys, :deep_transform_keys
|
75
|
+
alias_method :map_keys_r, :deep_transform_keys
|
76
|
+
alias_method :deep_rekey, :deep_transform_keys
|
77
|
+
alias_method :rekey_r, :deep_transform_keys
|
78
|
+
|
79
|
+
|
56
80
|
# See {NRSER.symbolize_keys!}
|
57
81
|
def symbolize_keys!
|
58
82
|
NRSER.symbolize_keys! self
|
data/lib/nrser/rspex.rb
CHANGED
@@ -269,7 +269,7 @@ module NRSER::RSpex
|
|
269
269
|
|
270
270
|
describe description, **metadata, type: type do
|
271
271
|
subject( &subject_block ) if subject_block
|
272
|
-
|
272
|
+
module_exec &body
|
273
273
|
end # description,
|
274
274
|
|
275
275
|
end # #describe_x
|
@@ -336,7 +336,7 @@ module NRSER::RSpex
|
|
336
336
|
|
337
337
|
describe description, type: :message do
|
338
338
|
subject { NRSER::Message.new symbol, *args }
|
339
|
-
|
339
|
+
module_exec &body
|
340
340
|
end
|
341
341
|
end
|
342
342
|
|
@@ -364,7 +364,7 @@ module NRSER::RSpex
|
|
364
364
|
|
365
365
|
describe "sent to #{ receiver } (#{ mode })" do
|
366
366
|
subject { super().send_to unwrap( receiver, context: self ) }
|
367
|
-
|
367
|
+
module_exec &block
|
368
368
|
end
|
369
369
|
end # #describe_sent_to
|
370
370
|
|
@@ -382,7 +382,7 @@ module NRSER::RSpex
|
|
382
382
|
|
383
383
|
describe "return value from #{ msg }" do
|
384
384
|
subject { msg.send_to super() }
|
385
|
-
|
385
|
+
module_exec &body
|
386
386
|
end # "return value from #{ msg }"
|
387
387
|
end
|
388
388
|
|
@@ -413,7 +413,7 @@ module NRSER::RSpex
|
|
413
413
|
type: :section,
|
414
414
|
**metadata
|
415
415
|
) do
|
416
|
-
|
416
|
+
module_exec &block
|
417
417
|
end
|
418
418
|
end # #describe_section
|
419
419
|
|
@@ -430,7 +430,7 @@ module NRSER::RSpex
|
|
430
430
|
file: path,
|
431
431
|
**metadata
|
432
432
|
) do
|
433
|
-
|
433
|
+
module_exec &body
|
434
434
|
end
|
435
435
|
end
|
436
436
|
|
@@ -441,7 +441,7 @@ module NRSER::RSpex
|
|
441
441
|
type: :module,
|
442
442
|
**metadata
|
443
443
|
) do
|
444
|
-
|
444
|
+
module_exec &block
|
445
445
|
end
|
446
446
|
end # #describe_module
|
447
447
|
|
@@ -459,7 +459,7 @@ module NRSER::RSpex
|
|
459
459
|
subject { klass }
|
460
460
|
end
|
461
461
|
|
462
|
-
|
462
|
+
module_exec &block
|
463
463
|
end
|
464
464
|
end # #describe_class
|
465
465
|
|
@@ -475,7 +475,7 @@ module NRSER::RSpex
|
|
475
475
|
type: :group,
|
476
476
|
**metadata
|
477
477
|
) do
|
478
|
-
|
478
|
+
module_exec &block
|
479
479
|
end
|
480
480
|
end # #describe_class
|
481
481
|
|
@@ -491,7 +491,7 @@ module NRSER::RSpex
|
|
491
491
|
subject { super().method name }
|
492
492
|
end
|
493
493
|
|
494
|
-
|
494
|
+
module_exec &block
|
495
495
|
end
|
496
496
|
end # #describe_method
|
497
497
|
|
@@ -503,7 +503,7 @@ module NRSER::RSpex
|
|
503
503
|
**metadata
|
504
504
|
) do
|
505
505
|
subject { super().public_send symbol }
|
506
|
-
|
506
|
+
module_exec &block
|
507
507
|
end
|
508
508
|
end # #describe_attribute
|
509
509
|
|
@@ -536,7 +536,7 @@ module NRSER::RSpex
|
|
536
536
|
let( name ) { unwrap value, context: self }
|
537
537
|
}
|
538
538
|
|
539
|
-
|
539
|
+
module_exec &body
|
540
540
|
end
|
541
541
|
end
|
542
542
|
|
data/lib/nrser/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nrser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.29
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- nrser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-12-
|
11
|
+
date: 2017-12-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -295,7 +295,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
295
295
|
version: '0'
|
296
296
|
requirements: []
|
297
297
|
rubyforge_project:
|
298
|
-
rubygems_version: 2.
|
298
|
+
rubygems_version: 2.5.2
|
299
299
|
signing_key:
|
300
300
|
specification_version: 4
|
301
301
|
summary: basic ruby utils i use in a lot of stuff.
|