hanami-utils 1.1.0 → 1.1.1
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 +5 -5
- data/CHANGELOG.md +7 -0
- data/lib/hanami/interactor.rb +6 -6
- data/lib/hanami/utils/hash.rb +32 -0
- data/lib/hanami/utils/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 6fe9e18d01dfa9fc028b6844007dfcb410a0a03976bc84602ca1961527b9ed10
|
4
|
+
data.tar.gz: de05ca0f54e2f88eb25f095c110e97f6655e3598b39a107b57931615589a67e3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e1279e5ab714af6ac575371da4f952349d309c7e6a804ef1aaf24f44944678dc899d15d8f9cc1e46fda6c51da6cb698d70283da61d8528aa56b8fcceebcc0516
|
7
|
+
data.tar.gz: 7a1215ecec9a8bc03f4b474620575f471f254c487c87f6d9415933107d1d3c598ee8815f4086e90b84a0099e1d051519eedc36ea9d313bd97730f29263fee146
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,13 @@
|
|
1
1
|
# Hanami::Utils
|
2
2
|
Ruby core extentions and class utilities for Hanami
|
3
3
|
|
4
|
+
## v1.1.1 - 2017-11-22
|
5
|
+
### Added
|
6
|
+
- [Luca Guidi] Introduce `Utils::Hash.deep_stringify` to recursively stringify a hash
|
7
|
+
|
8
|
+
### Fixed
|
9
|
+
- [Yuta Tokitake] Ensure `Interactor#call` to accept non-keyword arguments
|
10
|
+
|
4
11
|
## v1.1.0 - 2017-10-25
|
5
12
|
### Added
|
6
13
|
- [Luca Guidi] Introduce `Utils::Hash.deep_serialize` to recursively serialize input into `::Hash`
|
data/lib/hanami/interactor.rb
CHANGED
@@ -351,18 +351,18 @@ module Hanami
|
|
351
351
|
# end
|
352
352
|
#
|
353
353
|
# Signup.new.call # => NoMethodError
|
354
|
-
def call(*args
|
354
|
+
def call(*args)
|
355
355
|
@__result = ::Hanami::Interactor::Result.new
|
356
|
-
_call(*args
|
356
|
+
_call(*args) { super }
|
357
357
|
end
|
358
358
|
|
359
359
|
private
|
360
360
|
|
361
361
|
# @api private
|
362
362
|
# @since 1.1.0
|
363
|
-
def _call(*args
|
363
|
+
def _call(*args)
|
364
364
|
catch :fail do
|
365
|
-
validate!(*args
|
365
|
+
validate!(*args)
|
366
366
|
yield
|
367
367
|
end
|
368
368
|
|
@@ -370,8 +370,8 @@ module Hanami
|
|
370
370
|
end
|
371
371
|
|
372
372
|
# @since 1.1.0
|
373
|
-
def validate!(*args
|
374
|
-
fail! unless valid?(*args
|
373
|
+
def validate!(*args)
|
374
|
+
fail! unless valid?(*args)
|
375
375
|
end
|
376
376
|
end
|
377
377
|
|
data/lib/hanami/utils/hash.rb
CHANGED
@@ -89,6 +89,38 @@ module Hanami
|
|
89
89
|
self[:stringify_keys].call(input)
|
90
90
|
end
|
91
91
|
|
92
|
+
# Deeply stringify the given hash
|
93
|
+
#
|
94
|
+
# @param input [::Hash] the input
|
95
|
+
#
|
96
|
+
# @return [::Hash] the deep stringified hash
|
97
|
+
#
|
98
|
+
# @since 1.1.1
|
99
|
+
#
|
100
|
+
# @example Basic Usage
|
101
|
+
# require "hanami/utils/hash"
|
102
|
+
#
|
103
|
+
# hash = Hanami::Utils::Hash.deep_stringify(foo: "bar", baz: {a: 1})
|
104
|
+
# # => {"foo"=>"bar", "baz"=>{"a"=>1}}
|
105
|
+
#
|
106
|
+
# hash.class
|
107
|
+
# # => Hash
|
108
|
+
def self.deep_stringify(input) # rubocop:disable Metrics/MethodLength
|
109
|
+
input.each_with_object({}) do |(key, value), output|
|
110
|
+
output[key.to_s] =
|
111
|
+
case value
|
112
|
+
when ::Hash
|
113
|
+
deep_stringify(value)
|
114
|
+
when Array
|
115
|
+
value.map do |item|
|
116
|
+
item.is_a?(::Hash) ? deep_stringify(item) : item
|
117
|
+
end
|
118
|
+
else
|
119
|
+
value
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
92
124
|
# Deep duplicate hash values
|
93
125
|
#
|
94
126
|
# The output of this function is a shallow duplicate of the input.
|
data/lib/hanami/utils/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hanami-utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luca Guidi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-11-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: transproc
|
@@ -134,7 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
134
134
|
version: '0'
|
135
135
|
requirements: []
|
136
136
|
rubyforge_project:
|
137
|
-
rubygems_version: 2.
|
137
|
+
rubygems_version: 2.7.1
|
138
138
|
signing_key:
|
139
139
|
specification_version: 4
|
140
140
|
summary: Ruby core extentions and Hanami utilities
|