hanami-utils 2.3.0 → 3.0.0

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.
data/CHANGELOG.md CHANGED
@@ -1,662 +1,847 @@
1
- # Hanami::Utils
1
+ # Changelog
2
2
 
3
- Ruby core extensions and class utilities for Hanami
3
+ All notable changes to this project will be documented in this file.
4
4
 
5
- ## v2.3.0 - 2025-11-12
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Break Versioning](https://www.taoensso.com/break-versioning).
6
7
 
7
- ## v2.3.0.beta2 - 2025-10-17
8
+ ## [Unreleased]
9
+
10
+ ### Added
11
+
12
+ ### Changed
13
+
14
+ ### Deprecated
15
+
16
+ ### Removed
17
+
18
+ ### Fixed
19
+
20
+ ### Security
21
+
22
+ [Unreleased]: https://github.com/hanami/hanami-utils/compare/v3.0.0...main
23
+
24
+ ## [3.0.0] - 2026-06-30
25
+
26
+ ### Changed
27
+
28
+ - Require Ruby 3.3 or newer.
29
+
30
+ [3.0.0]: https://github.com/hanami/hanami-utils/compare/v2.3.0...v3.0.0
31
+
32
+ ## [3.0.0.rc1] - 2026-06-16
33
+
34
+ ### Changed
35
+
36
+ - Require Ruby 3.3 or newer.
37
+
38
+ [3.0.0.rc1]: https://github.com/hanami/hanami-utils/compare/v2.3.0...v3.0.0.rc1
39
+
40
+ ## [2.3.0] - 2025-11-12
41
+
42
+ [2.3.0]: https://github.com/hanami/hanami-utils/compare/v2.3.0.beta2...v2.3.0
43
+
44
+ ## [2.3.0.beta2] - 2025-10-17
8
45
 
9
46
  ### Changed
10
47
 
11
48
  - Drop support for Ruby 3.1
12
49
 
13
- ## v2.3.0.beta1 - 2025-10-03
50
+ [2.3.0.beta2]: https://github.com/hanami/hanami-utils/compare/v2.3.0.beta1...v2.3.0.beta2
51
+
52
+ ## [2.3.0.beta1] - 2025-10-03
14
53
 
15
- ## v2.2.0 - 2024-11-05
54
+ [2.3.0.beta1]: https://github.com/hanami/hanami-utils/compare/v2.2.0...v2.3.0.beta1
16
55
 
17
- ## v2.2.0.rc1 - 2024-10-29
56
+ ## [2.2.0] - 2024-11-05
18
57
 
19
- ## v2.2.0.beta2 - 2024-09-25
58
+ [2.2.0]: https://github.com/hanami/hanami-utils/compare/v2.2.0.rc1...v2.2.0
20
59
 
21
- ## v2.2.0.beta1 - 2024-07-16
60
+ ## [2.2.0.rc1] - 2024-10-29
61
+
62
+ [2.2.0.rc1]: https://github.com/hanami/hanami-utils/compare/v2.2.0.beta2...v2.2.0.rc1
63
+
64
+ ## [2.2.0.beta2] - 2024-09-25
65
+
66
+ [2.2.0.beta2]: https://github.com/hanami/hanami-utils/compare/v2.2.0.beta1...v2.2.0.beta2
67
+
68
+ ## [2.2.0.beta1] - 2024-07-16
22
69
 
23
70
  ### Changed
24
71
 
25
72
  - Drop support for Ruby 3.0
26
73
 
27
- ## v2.1.0 - 2024-02-27
74
+ [2.2.0.beta1]: https://github.com/hanami/hanami-utils/compare/v2.1.0...v2.2.0.beta1
75
+
76
+ ## [2.1.0] - 2024-02-27
77
+
78
+ [2.1.0]: https://github.com/hanami/hanami-utils/compare/v2.1.0.rc3...v2.1.0
28
79
 
29
- ## v2.1.0.rc3 - 2024-02-16
80
+ ## [2.1.0.rc3] - 2024-02-16
30
81
 
31
- ## v2.1.0.rc2 - 2023-11-08
82
+ [2.1.0.rc3]: https://github.com/hanami/hanami-utils/compare/v2.1.0.rc2...v2.1.0.rc3
32
83
 
33
- ## v2.1.0.beta1 - 2023-06-29
84
+ ## [2.1.0.rc2] - 2023-11-08
85
+
86
+ [2.1.0.rc2]: https://github.com/hanami/hanami-utils/compare/v2.1.0.beta1...v2.1.0.rc2
87
+
88
+ ## [2.1.0.beta1] - 2023-06-29
34
89
 
35
90
  ### Changed
36
91
 
37
- - [Tim Riley] Remove `Hanami::Utils::Escape` (which was not public as of 2.0.0) (#410)
92
+ - Remove `Hanami::Utils::Escape` (which was not public as of 2.0.0). (Tim Riley in #410)
93
+
94
+ [2.1.0.beta1]: https://github.com/hanami/hanami-utils/compare/v2.0.3...v2.1.0.beta1
38
95
 
39
- ## v2.0.3 - 2023-02-01
96
+ ## [2.0.3] - 2023-02-01
40
97
 
41
98
  ### Fixed
42
99
 
43
- - [hi-tech-jazz] `Hanami::Utils::Blank.blank?` to check if the current object is non-nil
100
+ - `Hanami::Utils::Blank.blank?` to check if the current object is non-nil. (hi-tech-jazz)
44
101
 
45
- ## v2.0.2 - 2022-12-25
102
+ [2.0.3]: https://github.com/hanami/hanami-utils/compare/v2.0.2...v2.0.3
103
+
104
+ ## [2.0.2] - 2022-12-25
46
105
 
47
106
  ### Added
48
107
 
49
- - [Luca Guidi] Official support for Ruby 3.2
108
+ - Official support for Ruby 3.2. (Luca Guidi)
109
+
110
+ [2.0.2]: https://github.com/hanami/hanami-utils/compare/v2.0.1...v2.0.2
50
111
 
51
- ## v2.0.1 - 2022-12-06
112
+ ## [2.0.1] - 2022-12-06
52
113
 
53
114
  ### Fixed
54
115
 
55
- - [Tim Riley] Make `Hanami::Utils::Callbacks::Chain` and `Hanami::Utils::Callbacks::Callback` comparable via `#==` based on their contents, rather than their object identity
116
+ - Make `Hanami::Utils::Callbacks::Chain` and `Hanami::Utils::Callbacks::Callback` comparable via `#==` based on their contents, rather than their object identity. (Tim Riley)
117
+
118
+ [2.0.1]: https://github.com/hanami/hanami-utils/compare/v2.0.0...v2.0.1
56
119
 
57
- ## v2.0.0 - 2022-11-22
120
+ ## [2.0.0] - 2022-11-22
58
121
 
59
- ## v2.0.0.rc1 - 2022-11-08
122
+ [2.0.0]: https://github.com/hanami/hanami-utils/compare/v2.0.0.rc1...v2.0.0
123
+
124
+ ## [2.0.0.rc1] - 2022-11-08
60
125
 
61
126
  ### Fixed
62
127
 
63
- - [Benjamin Klotz] Ensure `Hanami::Utils::String.underscore` to replace `"."` (dot character) into underscore
128
+ - Ensure `Hanami::Utils::String.underscore` to replace `"."` (dot character) into underscore. (Benjamin Klotz)
64
129
 
65
130
  ### Changed
66
131
 
67
- - [Luca Guidi] Removed `Hanami::Logger` in favor of `Dry::Logger`
132
+ - Removed `Hanami::Logger` in favor of `Dry::Logger`. (Luca Guidi)
133
+
134
+ [2.0.0.rc1]: https://github.com/hanami/hanami-utils/compare/v2.0.0.beta1...v2.0.0.rc1
68
135
 
69
- ## v2.0.0.beta1 - 2022-07-20
136
+ ## [2.0.0.beta1] - 2022-07-20
70
137
 
71
138
  ### Changed
72
139
 
73
- - [Luca Guidi] Removed `Hanami::Utils::BasicObject` (moved to `dry-core` as `Dry::Core::BasicObject`)
74
- - [Luca Guidi] Removed `Hanami::Interactor`
140
+ - Removed `Hanami::Utils::BasicObject` (moved to `dry-core` as `Dry::Core::BasicObject`). (Luca Guidi)
141
+ - Removed `Hanami::Interactor`. (Luca Guidi)
142
+
143
+ [2.0.0.beta1]: https://github.com/hanami/hanami-utils/compare/v2.0.0.alpha6...v2.0.0.beta1
75
144
 
76
- ## v2.0.0.alpha6 - 2022-02-10
145
+ ## [2.0.0.alpha6] - 2022-02-10
77
146
 
78
147
  ### Added
79
148
 
80
- - [Luca Guidi] Official support for Ruby: MRI 3.0 and 3.1
149
+ - Official support for Ruby: MRI 3.0 and 3.1. (Luca Guidi)
81
150
 
82
151
  ### Fixed
83
152
 
84
- - [Rob Jacoby] Allow `Hanami::Logger#initialize` to accept `File::NULL` as `stream:` argument
153
+ - Allow `Hanami::Logger#initialize` to accept `File::NULL` as `stream:` argument. (Rob Jacoby)
85
154
 
86
155
  ### Changed
87
156
 
88
- - [Luca Guidi] Drop support for Ruby: MRI 2.6 and 2.7.
157
+ - Drop support for Ruby: MRI 2.6 and 2.7. (Luca Guidi)
89
158
 
90
- ## v2.0.0.alpha3 - 2021-11-09
159
+ [2.0.0.alpha6]: https://github.com/hanami/hanami-utils/compare/v2.0.0.alpha3...v2.0.0.alpha6
160
+
161
+ ## [2.0.0.alpha3] - 2021-11-09
91
162
 
92
163
  No changes.
93
164
 
94
- ## v2.0.0.alpha2 - 2021-05-04
165
+ [2.0.0.alpha3]: https://github.com/hanami/hanami-utils/compare/v2.0.0.alpha2...v2.0.0.alpha3
166
+
167
+ ## [2.0.0.alpha2] - 2021-05-04
95
168
 
96
169
  ### Changed
97
170
 
98
- - [Luca Guidi] Drop support for Ruby: MRI 2.5.
99
- - [Luca Guidi] Transform `Utils::String` from class to module
171
+ - Drop support for Ruby: MRI 2.5. (Luca Guidi)
172
+ - Transform `Utils::String` from class to module. (Luca Guidi)
173
+
174
+ [2.0.0.alpha2]: https://github.com/hanami/hanami-utils/compare/v2.0.0.alpha1...v2.0.0.alpha2
100
175
 
101
- ## v2.0.0.alpha1 - 2019-01-30
176
+ ## [2.0.0.alpha1] - 2019-01-30
102
177
 
103
178
  ### Added
104
179
 
105
- - [Gustavo Caso] Introduce `Hanami::Middleware` namespace
106
- - [Luca Guidi] Introduce `Callbacks::Chain#dup`
180
+ - Introduce `Hanami::Middleware` namespace. (Gustavo Caso)
181
+ - Introduce `Callbacks::Chain#dup`. (Luca Guidi)
107
182
 
108
183
  ### Changed
109
184
 
110
- - [Luca Guidi] Drop support for Ruby: MRI 2.3, and 2.4.
111
- - [Luca Guidi] Remove `Utils::Duplicable`
112
- - [Luca Guidi] Remove `Utils::Inflector`
113
- - [Luca Guidi] Remove `Utils::String.singularize`, and `.pluralize`
114
- - [Luca Guidi] Remove `Utils::String#singularize`, and `#pluralize`
115
- - [Luca Guidi] Remove instance level interface for `Utils::Hash`
116
- - [Luca Guidi] Transform `Utils::Hash` from class to module
117
- - [Luca Guidi] Remove `Utils.reload!`
118
- - [Gustavo Caso] Remove `Utils::File.rewrite`
119
- - [Vladimir Suvorov] Remove `Utils::Class.load_from_pattern!`
185
+ - Drop support for Ruby: MRI 2.3, and 2.4. (Luca Guidi)
186
+ - Remove `Utils::Duplicable`. (Luca Guidi)
187
+ - Remove `Utils::Inflector`. (Luca Guidi)
188
+ - Remove `Utils::String.singularize`, and `.pluralize`. (Luca Guidi)
189
+ - Remove `Utils::String#singularize`, and `#pluralize`. (Luca Guidi)
190
+ - Remove instance level interface for `Utils::Hash`. (Luca Guidi)
191
+ - Transform `Utils::Hash` from class to module. (Luca Guidi)
192
+ - Remove `Utils.reload!`. (Luca Guidi)
193
+ - Remove `Utils::File.rewrite`. (Gustavo Caso)
194
+ - Remove `Utils::Class.load_from_pattern!`. (Vladimir Suvorov)
120
195
 
121
- ## v1.3.8 - 2021-05-03
196
+ [2.0.0.alpha1]: https://github.com/hanami/hanami-utils/compare/v1.3.8...v2.0.0.alpha1
197
+
198
+ ## [1.3.8] - 2021-05-03
122
199
 
123
200
  ### Fixed
124
201
 
125
- - [Hiếu Nguyễn] Ensure `Hanami::Interactor#initialize` to accept keyword arguments while working with Ruby 3
202
+ - Ensure `Hanami::Interactor#initialize` to accept keyword arguments while working with Ruby 3. (Hiếu Nguyễn)
203
+
204
+ [1.3.8]: https://github.com/hanami/hanami-utils/compare/v1.3.7...v1.3.8
126
205
 
127
- ## v1.3.7 - 2021-01-04
206
+ ## [1.3.7] - 2021-01-04
128
207
 
129
208
  ### Added
130
209
 
131
- - [Luca Guidi] Official support for Ruby: MRI 3.0
132
- - [Khai Le] Allow `Hanami::Logger` to filter sensitive data for an array of hashes
210
+ - Official support for Ruby: MRI 3.0. (Luca Guidi)
211
+ - Allow `Hanami::Logger` to filter sensitive data for an array of hashes. (Khai Le)
133
212
 
134
213
  ### Fixed
135
214
 
136
- - [Hiếu Nguyễn] Ensure `Hanami::Logger` to not mutate `Hash` input when filtering sensitive data
215
+ - Ensure `Hanami::Logger` to not mutate `Hash` input when filtering sensitive data. (Hiếu Nguyễn)
216
+
217
+ [1.3.7]: https://github.com/hanami/hanami-utils/compare/v1.3.6...v1.3.7
137
218
 
138
- ## v1.3.6 - 2020-01-07
219
+ ## [1.3.6] - 2020-01-07
139
220
 
140
221
  ### Added
141
222
 
142
- - [Luca Guidi] Official support for Ruby: MRI 2.7
223
+ - Official support for Ruby: MRI 2.7. (Luca Guidi)
143
224
 
144
225
  ### Fixed
145
226
 
146
- - [ippachi] `Utils::Files.append`: don't check breakline if file is empty
227
+ - `Utils::Files.append`: don't check breakline if file is empty. (ippachi)
147
228
 
148
- ## v1.3.5 - 2019-10-25
229
+ [1.3.6]: https://github.com/hanami/hanami-utils/compare/v1.3.5...v1.3.6
230
+
231
+ ## [1.3.5] - 2019-10-25
149
232
 
150
233
  ### Fixed
151
234
 
152
- - [Ivan Kabluchkov] Ensure `Hanami::Logger` filters to not crash when logger stream is a closed tempfile
153
- - [Luca Guidi] Ensure `Utils::Files.append` to append contents properly when existing file doesn't end with a newline
235
+ - Ensure `Hanami::Logger` filters to not crash when logger stream is a closed tempfile. (Ivan Kabluchkov)
236
+ - Ensure `Utils::Files.append` to append contents properly when existing file doesn't end with a newline. (Luca Guidi)
237
+
238
+ [1.3.5]: https://github.com/hanami/hanami-utils/compare/v1.3.4...v1.3.5
154
239
 
155
- ## v1.3.4 - 2019-09-27
240
+ ## [1.3.4] - 2019-09-27
156
241
 
157
242
  ### Added
158
243
 
159
- - [Luca Guidi] Let `Utils::BasicObject` to lookup constants at the top-level namespace
244
+ - Let `Utils::BasicObject` to lookup constants at the top-level namespace. (Luca Guidi)
245
+
246
+ [1.3.4]: https://github.com/hanami/hanami-utils/compare/v1.3.3...v1.3.4
160
247
 
161
- ## v1.3.3 - 2019-09-13
248
+ ## [1.3.3] - 2019-09-13
162
249
 
163
250
  ### Fixed
164
251
 
165
- - [Mauro Morales] Ensure `Utils::Inflector.pluralize` and `.singularize` to work with words that contain an underscore (`_`)
252
+ - Ensure `Utils::Inflector.pluralize` and `.singularize` to work with words that contain an underscore (`_`). (Mauro Morales)
166
253
 
167
- ## v1.3.2 - 2019-06-21
254
+ [1.3.3]: https://github.com/hanami/hanami-utils/compare/v1.3.2...v1.3.3
255
+
256
+ ## [1.3.2] - 2019-06-21
168
257
 
169
258
  ### Added
170
259
 
171
- - [Vladislav Yashin & Luca Guidi] Added `Utils::BasicObject#instance_of?`, `#is_a?`, and `#kind_of`
260
+ - Added `Utils::BasicObject#instance_of?`, `#is_a?`, and `#kind_of`. (Vladislav Yashin & Luca Guidi)
261
+
262
+ [1.3.2]: https://github.com/hanami/hanami-utils/compare/v1.3.1...v1.3.2
172
263
 
173
- ## v1.3.1 - 2019-01-18
264
+ ## [1.3.1] - 2019-01-18
174
265
 
175
266
  ### Added
176
267
 
177
- - [Luca Guidi] Official support for Ruby: MRI 2.6
178
- - [Luca Guidi] Support `bundler` 2.0+
268
+ - Official support for Ruby: MRI 2.6. (Luca Guidi)
269
+ - Support `bundler` 2.0+. (Luca Guidi)
179
270
 
180
271
  ### Fixed
181
272
 
182
- - [Alfonso Uceda] Fix `Hash` serialization for `Utils::Logger`
183
- - [Jeff Dickey] Add missing `pathname` require in `lib/hanami/utils.rb`
273
+ - Fix `Hash` serialization for `Utils::Logger`. (Alfonso Uceda)
274
+ - Add missing `pathname` require in `lib/hanami/utils.rb`. (Jeff Dickey)
275
+
276
+ [1.3.1]: https://github.com/hanami/hanami-utils/compare/v1.3.0...v1.3.1
277
+
278
+ ## [1.3.0] - 2018-10-24
184
279
 
185
- ## v1.3.0 - 2018-10-24
280
+ [1.3.0]: https://github.com/hanami/hanami-utils/compare/v1.3.0.beta1...v1.3.0
186
281
 
187
- ## v1.3.0.beta1 - 2018-08-08
282
+ ## [1.3.0.beta1] - 2018-08-08
188
283
 
189
284
  ### Added
190
285
 
191
- - [Luca Guidi] Official support for JRuby 9.2.0.0
192
- - [graywolf] Add `Utils::Files.inject_line_before_last` and `.inject_line_after_last`
286
+ - Official support for JRuby 9.2.0.0. (Luca Guidi)
287
+ - Add `Utils::Files.inject_line_before_last` and `.inject_line_after_last`. (graywolf)
193
288
 
194
289
  ### Fixed
195
290
 
196
- - [graywolf] Don't show `Fixnum` Ruby warning for 2.4+
197
- - [Luca Guidi] Fix pluralization of `"fee"`
291
+ - Don't show `Fixnum` Ruby warning for 2.4+. (graywolf)
292
+ - Fix pluralization of `"fee"`. (Luca Guidi)
198
293
 
199
294
  ### Deprecated
200
295
 
201
- - [Luca Guidi & Marion Schleifer] Deprecate `Utils::String` as Ruby type. Please use `Utils::String` class methods instead of `Utils::String.new("")`.
202
- - [Luca Guidi & Marion Schleifer] Deprecate `Utils::Hash` as Ruby type. Please use `Utils::Hash` class methods instead of `Utils::Hash.new({})`.
203
- - [Luca Guidi & Marion Schleifer] Deprecate `Utils::String.pluralize` and `.singularize`.
204
- - [Semyon Pupkov] Deprecate `Utils::Class.load_from_pattern!`
296
+ - Deprecate `Utils::String` as Ruby type. Please use `Utils::String` class methods instead of `Utils::String.new("")`. (Luca Guidi & Marion Schleifer)
297
+ - Deprecate `Utils::Hash` as Ruby type. Please use `Utils::Hash` class methods instead of `Utils::Hash.new({})`. (Luca Guidi & Marion Schleifer)
298
+ - Deprecate `Utils::String.pluralize` and `.singularize`. (Luca Guidi & Marion Schleifer)
299
+ - Deprecate `Utils::Class.load_from_pattern!`. (Semyon Pupkov)
205
300
 
206
- ## v1.2.0 - 2018-04-11
301
+ [1.3.0.beta1]: https://github.com/hanami/hanami-utils/compare/v1.2.0...v1.3.0.beta1
207
302
 
208
- ## v1.2.0.rc2 - 2018-04-06
303
+ ## [1.2.0] - 2018-04-11
304
+
305
+ [1.2.0]: https://github.com/hanami/hanami-utils/compare/v1.2.0.rc2...v1.2.0
306
+
307
+ ## [1.2.0.rc2] - 2018-04-06
209
308
 
210
309
  ### Added
211
310
 
212
- - [Luca Guidi] Use different colors for each `Hanami::Logger` level
311
+ - Use different colors for each `Hanami::Logger` level. (Luca Guidi)
312
+
313
+ [1.2.0.rc2]: https://github.com/hanami/hanami-utils/compare/v1.2.0.rc1...v1.2.0.rc2
213
314
 
214
- ## v1.2.0.rc1 - 2018-03-30
315
+ ## [1.2.0.rc1] - 2018-03-30
215
316
 
216
317
  ### Added
217
318
 
218
- - [Oana Sipos & Sean Collins & Luca Guidi] Colored logging
319
+ - Colored logging. (Oana Sipos & Sean Collins & Luca Guidi)
219
320
 
220
321
  ### Fixed
221
322
 
222
- - [Luca Guidi] Make `Hanami::Logger` to properly log hash messages
323
+ - Make `Hanami::Logger` to properly log hash messages. (Luca Guidi)
223
324
 
224
- ## v1.2.0.beta2 - 2018-03-23
325
+ [1.2.0.rc1]: https://github.com/hanami/hanami-utils/compare/v1.2.0.beta2...v1.2.0.rc1
225
326
 
226
- ## v1.2.0.beta1 - 2018-02-28
327
+ ## [1.2.0.beta2] - 2018-03-23
227
328
 
228
- ## v1.1.2 - 2018-02-02
329
+ [1.2.0.beta2]: https://github.com/hanami/hanami-utils/compare/v1.2.0.beta1...v1.2.0.beta2
330
+
331
+ ## [1.2.0.beta1] - 2018-02-28
332
+
333
+ [1.2.0.beta1]: https://github.com/hanami/hanami-utils/compare/v1.1.2...v1.2.0.beta1
334
+
335
+ ## [1.1.2] - 2018-02-02
229
336
 
230
337
  ### Added
231
338
 
232
- - [Luca Guidi] Official support for Ruby: MRI 2.5
339
+ - Official support for Ruby: MRI 2.5. (Luca Guidi)
233
340
 
234
341
  ### Fixed
235
342
 
236
- - [Sean Collins & Luca Guidi] Make `Utils::Files.write` idempotent: ensure to truncate the file before to write
237
- - [Sean Collins & Luca Guidi] Don't erase file contents when invoking `Utils::Files.touch`
343
+ - Make `Utils::Files.write` idempotent: ensure to truncate the file before to write. (Sean Collins & Luca Guidi)
344
+ - Don't erase file contents when invoking `Utils::Files.touch`. (Sean Collins & Luca Guidi)
238
345
 
239
346
  ### Changed
240
347
 
241
- - [Sean Collins & Luca Guidi] Deprecate `Utils::Files.rewrite` in favor of `.write`
348
+ - Deprecate `Utils::Files.rewrite` in favor of `.write`. (Sean Collins & Luca Guidi)
242
349
 
243
- ## v1.1.1 - 2017-11-22
350
+ [1.1.2]: https://github.com/hanami/hanami-utils/compare/v1.1.1...v1.1.2
351
+
352
+ ## [1.1.1] - 2017-11-22
244
353
 
245
354
  ### Added
246
355
 
247
- - [Luca Guidi] Introduce `Utils::Hash.deep_stringify` to recursively stringify a hash
356
+ - Introduce `Utils::Hash.deep_stringify` to recursively stringify a hash. (Luca Guidi)
248
357
 
249
358
  ### Fixed
250
359
 
251
- - [Yuta Tokitake] Ensure `Interactor#call` to accept non-keyword arguments
360
+ - Ensure `Interactor#call` to accept non-keyword arguments. (Yuta Tokitake)
361
+
362
+ [1.1.1]: https://github.com/hanami/hanami-utils/compare/v1.1.0...v1.1.1
252
363
 
253
- ## v1.1.0 - 2017-10-25
364
+ ## [1.1.0] - 2017-10-25
254
365
 
255
366
  ### Added
256
367
 
257
- - [Luca Guidi] Introduce `Utils::Hash.deep_serialize` to recursively serialize input into `::Hash`
368
+ - Introduce `Utils::Hash.deep_serialize` to recursively serialize input into `::Hash`. (Luca Guidi)
369
+
370
+ [1.1.0]: https://github.com/hanami/hanami-utils/compare/v1.1.0.rc1...v1.1.0
258
371
 
259
- ## v1.1.0.rc1 - 2017-10-16
372
+ ## [1.1.0.rc1] - 2017-10-16
260
373
 
261
- ## v1.1.0.beta3 - 2017-10-04
374
+ [1.1.0.rc1]: https://github.com/hanami/hanami-utils/compare/v1.1.0.beta3...v1.1.0.rc1
262
375
 
263
- ## v1.1.0.beta2 - 2017-10-03
376
+ ## [1.1.0.beta3] - 2017-10-04
377
+
378
+ [1.1.0.beta3]: https://github.com/hanami/hanami-utils/compare/v1.1.0.beta2...v1.1.0.beta3
379
+
380
+ ## [1.1.0.beta2] - 2017-10-03
264
381
 
265
382
  ### Added
266
383
 
267
- - [Alfonso Uceda] Auto create directory for `Hanami::Logger`
384
+ - Auto create directory for `Hanami::Logger`. (Alfonso Uceda)
385
+
386
+ [1.1.0.beta2]: https://github.com/hanami/hanami-utils/compare/v1.1.0.beta1...v1.1.0.beta2
268
387
 
269
- ## v1.1.0.beta1 - 2017-08-11
388
+ ## [1.1.0.beta1] - 2017-08-11
270
389
 
271
390
  ### Added
272
391
 
273
- - [Marion Duprey] Allow `Hanami::Interactor#call` to accept arguments. `#initialize` should be used for Dependency Injection, while `#call` should be used for input
274
- - [Marion Schleifer] Introduce `Utils::Hash.stringify`
275
- - [Marion Schleifer] Introduce `Utils::String.titleize`, `.capitalize`, `.classify`, `.underscore`, `.dasherize`, `.demodulize`, `.namespace`, `.pluralize`, `.singularize`, and `.rsub`
276
- - [Luca Guidi] Introduce `Utils::Files`: a set of utils for file manipulations
277
- - [Luca Guidi] Introduce `Utils::String.transform` a pipelined transformations for strings
278
- - [Marion Duprey & Gabriel Gizotti] Filter sensitive informations for `Hanami::Logger`
392
+ - Allow `Hanami::Interactor#call` to accept arguments. `#initialize` should be used for Dependency Injection, while `#call` should be used for input. (Marion Duprey)
393
+ - Introduce `Utils::Hash.stringify`. (Marion Schleifer)
394
+ - Introduce `Utils::String.titleize`, `.capitalize`, `.classify`, `.underscore`, `.dasherize`, `.demodulize`, `.namespace`, `.pluralize`, `.singularize`, and `.rsub`. (Marion Schleifer)
395
+ - Introduce `Utils::Files`: a set of utils for file manipulations. (Luca Guidi)
396
+ - Introduce `Utils::String.transform` a pipelined transformations for strings. (Luca Guidi)
397
+ - Filter sensitive informations for `Hanami::Logger`. (Marion Duprey & Gabriel Gizotti)
279
398
 
280
- ## v1.0.4 - 2017-10-02
399
+ [1.1.0.beta1]: https://github.com/hanami/hanami-utils/compare/v1.0.4...v1.1.0.beta1
400
+
401
+ ## [1.0.4] - 2017-10-02
281
402
 
282
403
  ### Fixed
283
404
 
284
- - [Luca Guidi] Make `Hanami::Utils::BasicObject` to be fully compatible with Ruby's `pp` and to be inspected by Pry.
285
- - [Thiago Kenji Okada] Fix pluralization/singularization for `"release" => "releases"`
405
+ - Make `Hanami::Utils::BasicObject` to be fully compatible with Ruby's `pp` and to be inspected by Pry. (Luca Guidi)
406
+ - Fix pluralization/singularization for `"release" => "releases"`. (Thiago Kenji Okada)
407
+
408
+ [1.0.4]: https://github.com/hanami/hanami-utils/compare/v1.0.3...v1.0.4
286
409
 
287
- ## v1.0.3 - 2017-09-06
410
+ ## [1.0.3] - 2017-09-06
288
411
 
289
412
  ### Fixed
290
413
 
291
- - [Malina Sulca] Fix pluralization/singularization for `"exercise" => "exercises"`
292
- - [Xavier Barbosa] Fix pluralization/singularization for `"area" => "areas"`
414
+ - Fix pluralization/singularization for `"exercise" => "exercises"`. (Malina Sulca)
415
+ - Fix pluralization/singularization for `"area" => "areas"`. (Xavier Barbosa)
416
+
417
+ [1.0.3]: https://github.com/hanami/hanami-utils/compare/v1.0.2...v1.0.3
293
418
 
294
- ## v1.0.2 - 2017-07-10
419
+ ## [1.0.2] - 2017-07-10
295
420
 
296
421
  ### Fixed
297
422
 
298
- - [Anton Davydov] Fix pluralization/singularization for `"phrase" => "phrases"`
423
+ - Fix pluralization/singularization for `"phrase" => "phrases"`. (Anton Davydov)
299
424
 
300
- ## v1.0.1 - 2017-06-23
425
+ [1.0.2]: https://github.com/hanami/hanami-utils/compare/v1.0.1...v1.0.2
426
+
427
+ ## [1.0.1] - 2017-06-23
301
428
 
302
429
  ### Added
303
430
 
304
- - [Luca Guidi] Introduced `Utils::Hash.symbolize` and `.deep_symbolize`
305
- - [Luca Guidi] Introduced `Utils::Hash.deep_dup`
431
+ - Introduced `Utils::Hash.symbolize` and `.deep_symbolize`. (Luca Guidi)
432
+ - Introduced `Utils::Hash.deep_dup`. (Luca Guidi)
306
433
 
307
434
  ### Fixed
308
435
 
309
- - [choallin] Ensure `Utils::String#classify` to return output identical to the input for already classified strings.
310
- - [Marion Duprey & Jonas Amundsen] Ensure `Utils::Hash#initialize` to accept frozen `Hash` as argument.
436
+ - Ensure `Utils::String#classify` to return output identical to the input for already classified strings. (choallin)
437
+ - Ensure `Utils::Hash#initialize` to accept frozen `Hash` as argument. (Marion Duprey & Jonas Amundsen)
438
+
439
+ [1.0.1]: https://github.com/hanami/hanami-utils/compare/v1.0.0...v1.0.1
440
+
441
+ ## [1.0.0] - 2017-04-06
311
442
 
312
- ## v1.0.0 - 2017-04-06
443
+ [1.0.0]: https://github.com/hanami/hanami-utils/compare/v1.0.0.rc1...v1.0.0
313
444
 
314
- ## v1.0.0.rc1 - 2017-03-31
445
+ ## [1.0.0.rc1] - 2017-03-31
315
446
 
316
447
  ### Added
317
448
 
318
- - [Luca Guidi] Allow `Hanami::Logger#initialize` to accept arguments to be compliant with Ruby's `Logger`
449
+ - Allow `Hanami::Logger#initialize` to accept arguments to be compliant with Ruby's `Logger`. (Luca Guidi)
319
450
 
320
- ## v1.0.0.beta3 - 2017-03-17
451
+ [1.0.0.rc1]: https://github.com/hanami/hanami-utils/compare/v1.0.0.beta3...v1.0.0.rc1
452
+
453
+ ## [1.0.0.beta3] - 2017-03-17
321
454
 
322
455
  ### Fixed
323
456
 
324
- - [Luca Guidi] Use `$stdout` instead of `STDOUT` as default stream for `Hanami::Logger`
457
+ - Use `$stdout` instead of `STDOUT` as default stream for `Hanami::Logger`. (Luca Guidi)
325
458
 
326
459
  ### Changed
327
460
 
328
- - [Luca Guidi] Removed `Utils::Attributes`
329
- - [Luca Guidi] Removed deprecated `Hanami::Interactor::Result#failing?`
330
- - [Luca Guidi] Removed deprecated `Utils::Json.load` and `.dump`
461
+ - Removed `Utils::Attributes`. (Luca Guidi)
462
+ - Removed deprecated `Hanami::Interactor::Result#failing?`. (Luca Guidi)
463
+ - Removed deprecated `Utils::Json.load` and `.dump`. (Luca Guidi)
464
+
465
+ [1.0.0.beta3]: https://github.com/hanami/hanami-utils/compare/v1.0.0.beta2...v1.0.0.beta3
331
466
 
332
- ## v1.0.0.beta2 - 2017-03-02
467
+ ## [1.0.0.beta2] - 2017-03-02
333
468
 
334
469
  ### Changed
335
470
 
336
- - [Anton Davydov] Made `Utils::Blank` private API
471
+ - Made `Utils::Blank` private API. (Anton Davydov)
472
+
473
+ [1.0.0.beta2]: https://github.com/hanami/hanami-utils/compare/v1.0.0.beta1...v1.0.0.beta2
337
474
 
338
- ## v1.0.0.beta1 - 2017-02-14
475
+ ## [1.0.0.beta1] - 2017-02-14
339
476
 
340
477
  ### Added
341
478
 
342
- - [Luca Guidi] Official support for Ruby: MRI 2.4
343
- - [alexd16] Introduced `Utils::Hash#deep_symbolize!` for deep symbolization
344
- - [Luca Guidi] Introduced `Hanami::Utils.reload!` as a mechanism to force code reloading in development
479
+ - Official support for Ruby: MRI 2.4. (Luca Guidi)
480
+ - Introduced `Utils::Hash#deep_symbolize!` for deep symbolization. (alexd16)
481
+ - Introduced `Hanami::Utils.reload!` as a mechanism to force code reloading in development. (Luca Guidi)
345
482
 
346
483
  ### Fixed
347
484
 
348
- - [alexd16 & Alfonso Uceda & Luca Guidi] Don't deeply symbolize `Hanami::Interactor::Result` payload
349
- - [Alfonso Uceda] `Hanami::Interactor::Result`: Don't transform objects that respond to `#to_hash` (like entities)
350
- - [Bhanu Prakash] Use `Utils::Json.generate` instead of the deprecated `.dump` for `Hanami::Logger` JSON formatter
351
- - [Luca Guidi] `Hanami::Logger`: when a `Hash` message is passed, don't nest it under `:message` key, but unwrap at the top level
485
+ - Don't deeply symbolize `Hanami::Interactor::Result` payload. (alexd16 & Alfonso Uceda & Luca Guidi)
486
+ - `Hanami::Interactor::Result`: Don't transform objects that respond to `#to_hash` (like entities). (Alfonso Uceda)
487
+ - Use `Utils::Json.generate` instead of the deprecated `.dump` for `Hanami::Logger` JSON formatter. (Bhanu Prakash)
488
+ - `Hanami::Logger`: when a `Hash` message is passed, don't nest it under `:message` key, but unwrap at the top level. (Luca Guidi)
352
489
 
353
490
  ### Changed
354
491
 
355
- - [alexd16] `Utils::Hash#symbolize!` no longer symbolizes deep structures
356
- - [Luca Guidi & Alfonso Uceda] Improve readability for default logger formatter
357
- - [Luca Guidi] Use ISO-8601 time format for JSON logger formatter
492
+ - `Utils::Hash#symbolize!` no longer symbolizes deep structures. (alexd16)
493
+ - Improve readability for default logger formatter. (Luca Guidi & Alfonso Uceda)
494
+ - Use ISO-8601 time format for JSON logger formatter. (Luca Guidi)
358
495
 
359
- ## v0.9.2 - 2016-12-19
496
+ [1.0.0.beta1]: https://github.com/hanami/hanami-utils/compare/v0.9.2...v1.0.0.beta1
497
+
498
+ ## [0.9.2] - 2016-12-19
360
499
 
361
500
  ### Added
362
501
 
363
- - [Grachev Mikhail] Introduced `Hanami::Interactor::Result#failure?`
502
+ - Introduced `Hanami::Interactor::Result#failure?`. (Grachev Mikhail)
364
503
 
365
504
  ### Fixed
366
505
 
367
- - [Paweł Świątkowski] `Utils::Inflector.pluralize` Pluralize -en to -ens instead of -ina
506
+ - `Utils::Inflector.pluralize` Pluralize -en to -ens instead of -ina. (Paweł Świątkowski)
368
507
 
369
508
  ### Changed
370
509
 
371
- - [Grachev Mikhail] Deprecate `Hanami::Interactor::Result#failing?` in favor of `#failure?`
510
+ - Deprecate `Hanami::Interactor::Result#failing?` in favor of `#failure?`. (Grachev Mikhail)
511
+
512
+ [0.9.2]: https://github.com/hanami/hanami-utils/compare/v0.9.1...v0.9.2
372
513
 
373
- ## v0.9.1 - 2016-11-18
514
+ ## [0.9.1] - 2016-11-18
374
515
 
375
516
  ### Added
376
517
 
377
- - [Luca Guidi] Introduced `Utils::Json.parse` and `.generate`
518
+ - Introduced `Utils::Json.parse` and `.generate`. (Luca Guidi)
378
519
 
379
520
  ### Fixed
380
521
 
381
- - [Luca Guidi] Ensure `Utils::Json` parsing to not eval untrusted input
522
+ - Ensure `Utils::Json` parsing to not eval untrusted input. (Luca Guidi)
382
523
 
383
524
  ### Changed
384
525
 
385
- - [Luca Guidi] Deprecated `Utils::Json.load` in favor of `.parse`
386
- - [Luca Guidi] Deprecated `Utils::Json.dump` in favor of `.generate`
526
+ - Deprecated `Utils::Json.load` in favor of `.parse`. (Luca Guidi)
527
+ - Deprecated `Utils::Json.dump` in favor of `.generate`. (Luca Guidi)
528
+
529
+ [0.9.1]: https://github.com/hanami/hanami-utils/compare/v0.9.0...v0.9.1
387
530
 
388
- ## v0.9.0 - 2016-11-15
531
+ ## [0.9.0] - 2016-11-15
389
532
 
390
533
  ### Added
391
534
 
392
- [Luca Guidi] Introduced `Utils.require!` to recursively require Ruby files with an order that is consistent across platforms
393
- [Luca Guidi] Introduced `Utils::FileList` as cross-platform ordered list of files, alternative to `Dir.glob`
535
+ - Introduced `Utils.require!` to recursively require Ruby files with an order that is consistent across platforms. (Luca Guidi)
536
+ - Introduced `Utils::FileList` as cross-platform ordered list of files, alternative to `Dir.glob`. (Luca Guidi)
394
537
 
395
- - [Luca Guidi] Make `Utils::BasicObject` pretty printable
396
- - [Grachev Mikhail] Added `Interactor::Result#successful?` and `#failing?`
538
+ - Make `Utils::BasicObject` pretty printable. (Luca Guidi)
539
+ - Added `Interactor::Result#successful?` and `#failing?`. (Grachev Mikhail)
397
540
 
398
541
  ### Fixed
399
542
 
400
- - [Pascal Betz] Ensure `Utils::Class.load!` to lookup constant only within the given namespace
543
+ - Ensure `Utils::Class.load!` to lookup constant only within the given namespace. (Pascal Betz)
401
544
 
402
545
  ### Changed
403
546
 
404
- - [Luca Guidi] Make `Utils::Hash` only compatible with objects that respond to `#to_hash`
405
- - [Luca Guidi] Official support for Ruby: MRI 2.3+ and JRuby 9.1.5.0+
547
+ - Make `Utils::Hash` only compatible with objects that respond to `#to_hash`. (Luca Guidi)
548
+ - Official support for Ruby: MRI 2.3+ and JRuby 9.1.5.0+. (Luca Guidi)
406
549
 
407
- ## v0.8.0 - 2016-07-22
550
+ [0.9.0]: https://github.com/hanami/hanami-utils/compare/v0.8.0...v0.9.0
551
+
552
+ ## [0.8.0] - 2016-07-22
408
553
 
409
554
  ### Added
410
555
 
411
- - [Andrey Morskov] Introduced `Hanami::Utils::Blank`
412
- - [Anton Davydov] Allow to specify a default log level for `Hanami::Logger`
413
- - [Anton Davydov] Introduced default and JSON formatters for `Hanami::Logger`
414
- - [Erol Fornoles] Allow deep indifferent access for `Hanami::Utils::Attributes`
415
- - [Anton Davydov] Introduced `Hanami::Utils::Json` which is a proxy for `MultiJson` (from `multi_json` gem), or fallback to `JSON` from Ruby standard library.
556
+ - Introduced `Hanami::Utils::Blank`. (Andrey Morskov)
557
+ - Allow to specify a default log level for `Hanami::Logger`. (Anton Davydov)
558
+ - Introduced default and JSON formatters for `Hanami::Logger`. (Anton Davydov)
559
+ - Allow deep indifferent access for `Hanami::Utils::Attributes`. (Erol Fornoles)
560
+ - Introduced `Hanami::Utils::Json` which is a proxy for `MultiJson` (from `multi_json` gem), or fallback to `JSON` from Ruby standard library. (Anton Davydov)
416
561
 
417
562
  ### Fixed
418
563
 
419
- - [Hiếu Nguyễn] Ensure `Hanami::Utils::String#classify` to return already classified strings as they are. Eg. `"AwesomeProject"` should return `"AwesomeProject"`, not `"Awesomeproject"`.
420
- - [TheSmartnik] Fix English pluralization for words ending with `"rses"`
421
- - [Rogério Ramos] Fix English pluralization for words ending with `"ice"`
564
+ - Ensure `Hanami::Utils::String#classify` to return already classified strings as they are. Eg. `"AwesomeProject"` should return `"AwesomeProject"`, not `"Awesomeproject"`. (Hiếu Nguyễn)
565
+ - Fix English pluralization for words ending with `"rses"`. (TheSmartnik)
566
+ - Fix English pluralization for words ending with `"ice"`. (Rogério Ramos)
422
567
 
423
568
  ### Changed
424
569
 
425
- - [Luca Guidi] Drop support for Ruby 2.0, 2.1 and Rubinius. Official support for JRuby 9.0.5.0+.
570
+ - Drop support for Ruby 2.0, 2.1 and Rubinius. Official support for JRuby 9.0.5.0+. (Luca Guidi)
571
+
572
+ [0.8.0]: https://github.com/hanami/hanami-utils/compare/v0.7.1...v0.8.0
426
573
 
427
- ## v0.7.1 - 2016-02-05
574
+ ## [0.7.1] - 2016-02-05
428
575
 
429
576
  ### Fixed
430
577
 
431
- - [Yuuji Yaginuma] `Hanami::Utils::Escape`: fixed Ruby warning for `String#chars` with a block, which is deprecated. Using `String#each_char` now.
432
- - [Sean Collins] Allow non string objects to be escaped by `Hanami::Utils::Escape`.
578
+ - `Hanami::Utils::Escape`: fixed Ruby warning for `String#chars` with a block, which is deprecated. Using `String#each_char` now. (Yuuji Yaginuma)
579
+ - Allow non string objects to be escaped by `Hanami::Utils::Escape`. (Sean Collins)
580
+
581
+ [0.7.1]: https://github.com/hanami/hanami-utils/compare/v0.7.0...v0.7.1
433
582
 
434
- ## v0.7.0 - 2016-01-22
583
+ ## [0.7.0] - 2016-01-22
435
584
 
436
585
  ### Changed
437
586
 
438
- - [Luca Guidi] Renamed the project
587
+ - Renamed the project. (Luca Guidi)
439
588
 
440
- ## v0.6.1 - 2016-01-19
589
+ [0.7.0]: https://github.com/hanami/hanami-utils/compare/v0.6.1...v0.7.0
590
+
591
+ ## [0.6.1] - 2016-01-19
441
592
 
442
593
  ### Fixed
443
594
 
444
- - [Anton Davydov] Ensure `Lotus::Utils::String#classify` to work properly with dashes (eg. `"app-store" => "App::Store"`)
595
+ - Ensure `Lotus::Utils::String#classify` to work properly with dashes (eg. `"app-store" => "App::Store"`). (Anton Davydov)
596
+
597
+ [0.6.1]: https://github.com/hanami/hanami-utils/compare/v0.6.0...v0.6.1
445
598
 
446
- ## v0.6.0 - 2016-01-12
599
+ ## [0.6.0] - 2016-01-12
447
600
 
448
601
  ### Added
449
602
 
450
- - [Luca Guidi] Official support for Ruby 2.3
451
- - [Luca Guidi] Custom inflections
452
- - [Luca Guidi] Introduced `Lotus::Utils::Duplicable` as a safe dup logic for Ruby types
453
- - [Luca Guidi] Added `Lotus::Utils::String#rsub` replace rightmost occurrence
603
+ - Official support for Ruby 2.3. (Luca Guidi)
604
+ - Custom inflections. (Luca Guidi)
605
+ - Introduced `Lotus::Utils::Duplicable` as a safe dup logic for Ruby types. (Luca Guidi)
606
+ - Added `Lotus::Utils::String#rsub` replace rightmost occurrence. (Luca Guidi)
454
607
 
455
608
  ### Fixed
456
609
 
457
- - [Luca Guidi] Fix `Lotus::Utils::PathPrefix#join` and `#relative_join` by rejecting arguments that are equal to the separator
458
- - [Karim Kiatlottiavi] Fix `Encoding::UndefinedConversionError` in `Lotus::Utils::Escape.encode`
610
+ - Fix `Lotus::Utils::PathPrefix#join` and `#relative_join` by rejecting arguments that are equal to the separator. (Luca Guidi)
611
+ - Fix `Encoding::UndefinedConversionError` in `Lotus::Utils::Escape.encode`. (Karim Kiatlottiavi)
459
612
 
460
613
  ### Changed
461
614
 
462
- - [Luca Guidi] Deprecate Ruby 2.0 and 2.1
463
- - [Luca Guidi] Removed `Lotus::Utils::Callbacks#add` in favor of `#append`
464
- - [Luca Guidi] Removed pattern support for `Utils::Class.load!` (eg. `Articles(Controller|::Controller)`)
615
+ - Deprecate Ruby 2.0 and 2.1. (Luca Guidi)
616
+ - Removed `Lotus::Utils::Callbacks#add` in favor of `#append`. (Luca Guidi)
617
+ - Removed pattern support for `Utils::Class.load!` (eg. `Articles(Controller|::Controller)`). (Luca Guidi)
618
+
619
+ [0.6.0]: https://github.com/hanami/hanami-utils/compare/v0.5.2...v0.6.0
465
620
 
466
- ## v0.5.2 - 2015-09-30
621
+ ## [0.5.2] - 2015-09-30
467
622
 
468
623
  ### Added
469
624
 
470
- - [Luca Guidi] Added `Lotus::Utils::String#capitalize`
471
- - [Trung Lê] Official support for JRuby 9k+
625
+ - Added `Lotus::Utils::String#capitalize`. (Luca Guidi)
626
+ - Official support for JRuby 9k+. (Trung Lê)
472
627
 
473
- ## v0.5.1 - 2015-07-10
628
+ [0.5.2]: https://github.com/hanami/hanami-utils/compare/v0.5.1...v0.5.2
629
+
630
+ ## [0.5.1] - 2015-07-10
474
631
 
475
632
  ### Fixed
476
633
 
477
- - [Thiago Felippe] Ensure `Lotus::Utils::PathPrefix#join` won't remote duplicate entries (eg `/admin/dashboard/admin`)
634
+ - Ensure `Lotus::Utils::PathPrefix#join` won't remote duplicate entries (eg `/admin/dashboard/admin`). (Thiago Felippe)
635
+
636
+ [0.5.1]: https://github.com/hanami/hanami-utils/compare/v0.5.0...v0.5.1
478
637
 
479
- ## v0.5.0 - 2015-06-23
638
+ ## [0.5.0] - 2015-06-23
480
639
 
481
640
  ### Added
482
641
 
483
- - [Luca Guidi] Extracted `Lotus::Logger` from `hanamirb`
642
+ - Extracted `Lotus::Logger` from `hanamirb`. (Luca Guidi)
484
643
 
485
644
  ### Changed
486
645
 
487
- - [Luca Guidi] `Lotus::Interactor::Result` contains only objects explicitly exposed via `Lotus::Interactor.expose`.
646
+ - `Lotus::Interactor::Result` contains only objects explicitly exposed via `Lotus::Interactor.expose`. (Luca Guidi)
647
+
648
+ [0.5.0]: https://github.com/hanami/hanami-utils/compare/v0.4.3...v0.5.0
488
649
 
489
- ## v0.4.3 - 2015-05-22
650
+ ## [0.4.3] - 2015-05-22
490
651
 
491
652
  ### Added
492
653
 
493
- - [François Beausoleil] Improved `Lotus::Utils::Kernel` messages for `TypeError`.
654
+ - Improved `Lotus::Utils::Kernel` messages for `TypeError`. (François Beausoleil)
494
655
 
495
- ## v0.4.2 - 2015-05-15
656
+ [0.4.3]: https://github.com/hanami/hanami-utils/compare/v0.4.2...v0.4.3
657
+
658
+ ## [0.4.2] - 2015-05-15
496
659
 
497
660
  ### Fixed
498
661
 
499
- - [Luca Guidi] Ensure `Lotus::Utils::Attributes#to_h` to return `::Hash`
662
+ - Ensure `Lotus::Utils::Attributes#to_h` to return `::Hash`. (Luca Guidi)
663
+
664
+ [0.4.2]: https://github.com/hanami/hanami-utils/compare/v0.4.1...v0.4.2
500
665
 
501
- ## v0.4.1 - 2015-05-15
666
+ ## [0.4.1] - 2015-05-15
502
667
 
503
668
  ### Added
504
669
 
505
- - [Luca Guidi & Alfonso Uceda Pompa] Introduced `Lotus::Utils::Inflector`, `Lotus::Utils::String#pluralize` and `#singularize`
670
+ - Introduced `Lotus::Utils::Inflector`, `Lotus::Utils::String#pluralize` and `#singularize`. (Luca Guidi & Alfonso Uceda Pompa)
506
671
 
507
672
  ### Fixed
508
673
 
509
- - [Luca Guidi] Ensure `Lotus::Utils::Attributes#to_h` to safely return nested `::Hash` instances for complex data structures.
510
- - [Luca Guidi] Let `Lotus::Interactor#error` to return a falsey value for control flow. (eg. `check_permissions or error "You can't access"`)
674
+ - Ensure `Lotus::Utils::Attributes#to_h` to safely return nested `::Hash` instances for complex data structures. (Luca Guidi)
675
+ - Let `Lotus::Interactor#error` to return a falsey value for control flow. (eg. `check_permissions or error "You can't access"`). (Luca Guidi)
676
+
677
+ [0.4.1]: https://github.com/hanami/hanami-utils/compare/v0.4.0...v0.4.1
511
678
 
512
- ## v0.4.0 - 2015-03-23
679
+ ## [0.4.0] - 2015-03-23
513
680
 
514
681
  ### Added
515
682
 
516
- - [Luca Guidi] Introduced `Lotus::Utils::Escape`. It implements OWASP/ESAPI suggestions for HTML, HTML attribute and URL escape utilities.
517
- - [Luca Guidi] Introduced `Lotus::Utils::String#dasherize`
518
- - [Luca Guidi] Introduced `Lotus::Utils::String#titleize`
683
+ - Introduced `Lotus::Utils::Escape`. It implements OWASP/ESAPI suggestions for HTML, HTML attribute and URL escape utilities. (Luca Guidi)
684
+ - Introduced `Lotus::Utils::String#dasherize`. (Luca Guidi)
685
+ - Introduced `Lotus::Utils::String#titleize`. (Luca Guidi)
519
686
 
520
- ## v0.3.5 - 2015-03-12
687
+ [0.4.0]: https://github.com/hanami/hanami-utils/compare/v0.3.5...v0.4.0
688
+
689
+ ## [0.3.5] - 2015-03-12
521
690
 
522
691
  ### Added
523
692
 
524
- - [Luca Guidi] Introduced `Lotus::Interactor`
525
- - [Luca Guidi] Introduced `Lotus::Utils::BasicObject`
693
+ - Introduced `Lotus::Interactor`. (Luca Guidi)
694
+ - Introduced `Lotus::Utils::BasicObject`. (Luca Guidi)
695
+
696
+ [0.3.5]: https://github.com/hanami/hanami-utils/compare/v0.3.4...v0.3.5
526
697
 
527
- ## v0.3.4 - 2015-01-30
698
+ ## [0.3.4] - 2015-01-30
528
699
 
529
700
  ### Added
530
701
 
531
- - [Alfonso Uceda Pompa] Aliased `Lotus::Utils::Attributes#get` with `#[]`
532
- - [Simone Carletti] Introduced `Lotus::Utils::Callbacks::Chain#prepend` and `#append`
702
+ - Aliased `Lotus::Utils::Attributes#get` with `#[]`. (Alfonso Uceda Pompa)
703
+ - Introduced `Lotus::Utils::Callbacks::Chain#prepend` and `#append`. (Simone Carletti)
533
704
 
534
705
  ### Deprecated
535
706
 
536
- - [Luca Guidi] Deprecated `Lotus::Utils::Callbacks::Chain#add` in favor of `#append`
707
+ - Deprecated `Lotus::Utils::Callbacks::Chain#add` in favor of `#append`. (Luca Guidi)
708
+
709
+ [0.3.4]: https://github.com/hanami/hanami-utils/compare/v0.3.3...v0.3.4
537
710
 
538
- ## v0.3.3 - 2015-01-08
711
+ ## [0.3.3] - 2015-01-08
539
712
 
540
713
  ### Fixed
541
714
 
542
- - [Luca Guidi] Ensure to return the right offending object if a missing method is called with Utils::String and Hash (eg. `Utils::Hash.new(a: 1).all? {|_, v| v.foo }` blame `v` instead of `Hash`)
543
- - [Luca Guidi] Raise an error if try to coerce non numeric strings into Integer, Float & BigDecimal (eg. `Utils::Kernel.Integer("hello") # => raise TypeError`)
715
+ - Ensure to return the right offending object if a missing method is called with Utils::String and Hash (eg. `Utils::Hash.new(a: 1).all? {|_, v| v.foo }` blame `v` instead of `Hash`). (Luca Guidi)
716
+ - Raise an error if try to coerce non numeric strings into Integer, Float & BigDecimal (eg. `Utils::Kernel.Integer("hello") # => raise TypeError`). (Luca Guidi)
544
717
 
545
- ## v0.3.2 - 2014-12-23
718
+ [0.3.3]: https://github.com/hanami/hanami-utils/compare/v0.3.2...v0.3.3
719
+
720
+ ## [0.3.2] - 2014-12-23
546
721
 
547
722
  ### Added
548
723
 
549
- - [Luca Guidi] Official support for Ruby 2.2
550
- - [Luca Guidi] Introduced `Utils::Attributes`
551
- - [Luca Guidi] Added `Utils::Hash#stringify!`
724
+ - Official support for Ruby 2.2. (Luca Guidi)
725
+ - Introduced `Utils::Attributes`. (Luca Guidi)
726
+ - Added `Utils::Hash#stringify!`. (Luca Guidi)
727
+
728
+ [0.3.2]: https://github.com/hanami/hanami-utils/compare/v0.3.1...v0.3.2
552
729
 
553
- ## v0.3.1 - 2014-11-23
730
+ ## [0.3.1] - 2014-11-23
554
731
 
555
732
  ### Added
556
733
 
557
- - [Luca Guidi] Allow `Utils::Class.load!` to accept any object that implements `#to_s`
558
- - [Trung Lê] Allow `Utils::Class.load!` to accept a class
559
- - [Luca Guidi] Introduced `Utils::Class.load_from_pattern!`
560
- - [Luca Guidi] Introduced `Utils.jruby?` and `Utils.rubinius?`
561
- - [Luca Guidi] Introduced `Utils::Deprecation`
562
- - [Luca Guidi] Official support for Rubinius 2.3+
563
- - [Luca Guidi] Official support for JRuby 1.7+ (with 2.0 mode)
564
- - [Janko Marohnić] Implemented `Utils::PathPrefix` relativness and absolutness
565
- - [Luca Guidi] Made `Utils::PathPrefix` `#join` and `#relative_join` to return a new instance of that class
566
- - [Luca Guidi] Implemented `Utils::Hash#deep_dup`
567
- - [Luca Guidi] Made `Utils::PathPrefix#join` to accept multiple argument
734
+ - Allow `Utils::Class.load!` to accept any object that implements `#to_s`. (Luca Guidi)
735
+ - Allow `Utils::Class.load!` to accept a class. (Trung Lê)
736
+ - Introduced `Utils::Class.load_from_pattern!`. (Luca Guidi)
737
+ - Introduced `Utils.jruby?` and `Utils.rubinius?`. (Luca Guidi)
738
+ - Introduced `Utils::Deprecation`. (Luca Guidi)
739
+ - Official support for Rubinius 2.3+. (Luca Guidi)
740
+ - Official support for JRuby 1.7+ (with 2.0 mode). (Luca Guidi)
741
+ - Implemented `Utils::PathPrefix` relativness and absolutness. (Janko Marohnić)
742
+ - Made `Utils::PathPrefix` `#join` and `#relative_join` to return a new instance of that class. (Luca Guidi)
743
+ - Implemented `Utils::Hash#deep_dup`. (Luca Guidi)
744
+ - Made `Utils::PathPrefix#join` to accept multiple argument. (Luca Guidi)
568
745
 
569
746
  ### Fixed
570
747
 
571
- - [Luca Guidi] Made `Utils::PathPrefix#join` remove trailing occurrences for `@separator` from the output
572
- - [Luca Guidi] Made `Utils::PathPrefix#relative_join` to correctly replace all the instances of `@separator` from the output
748
+ - Made `Utils::PathPrefix#join` remove trailing occurrences for `@separator` from the output. (Luca Guidi)
749
+ - Made `Utils::PathPrefix#relative_join` to correctly replace all the instances of `@separator` from the output. (Luca Guidi)
573
750
 
574
751
  ### Deprecated
575
752
 
576
- - [Luca Guidi] Deprecated `Utils::Class.load!` with a pattern like `Articles(Controller|::Controller)`, use `Utils::Class.load_from_pattern!` instead
753
+ - Deprecated `Utils::Class.load!` with a pattern like `Articles(Controller|::Controller)`, use `Utils::Class.load_from_pattern!` instead. (Luca Guidi)
754
+
755
+ [0.3.1]: https://github.com/hanami/hanami-utils/compare/v0.3.0...v0.3.1
577
756
 
578
- ## v0.3.0 - 2014-10-23
757
+ ## [0.3.0] - 2014-10-23
579
758
 
580
759
  ### Added
581
760
 
582
- - [Celso Fernandes] Add BigDecimal coercion to Lotus::Utils::Kernel
583
- - [Luca Guidi] Define `Boolean` constant, if missing
584
- - [Luca Guidi] Use composition over inheritance for `Lotus::Utils::PathPrefix`
585
- - [Luca Guidi] Use composition over inheritance for `Lotus::Utils::Hash`
586
- - [Luca Guidi] Use composition over inheritance for `Lotus::Utils::String`
761
+ - Add BigDecimal coercion to Lotus::Utils::Kernel. (Celso Fernandes)
762
+ - Define `Boolean` constant, if missing. (Luca Guidi)
763
+ - Use composition over inheritance for `Lotus::Utils::PathPrefix`. (Luca Guidi)
764
+ - Use composition over inheritance for `Lotus::Utils::Hash`. (Luca Guidi)
765
+ - Use composition over inheritance for `Lotus::Utils::String`. (Luca Guidi)
587
766
 
588
767
  ### Fixed
589
768
 
590
- - [Luca Guidi] Improved error message for `Utils::Class.load!`
591
- - [Tom Kadwill] Improved error `NameError` message by passing in the whole constant name to `Utils::Class.load!`
592
- - [Luca Guidi] `Utils::Hash#to_h` return instances of `::Hash` in case of nested symbolized data structure
593
- - [Luca Guidi] Raise `TypeError` if `nil` is passed to `PathPrefix#relative_join`
594
- - [Peter Suschlik] Define `Lotus::Utils::Hash#respond_to_missing?`
595
- - [Peter Suschlik] Define `Lotus::Utils::String#responds_to_missing?`
596
- - [Luca Guidi] Ensure `Utils::Hash#inspect` output to be the same of `::Hash#inspect`
769
+ - Improved error message for `Utils::Class.load!`. (Luca Guidi)
770
+ - Improved error `NameError` message by passing in the whole constant name to `Utils::Class.load!`. (Tom Kadwill)
771
+ - `Utils::Hash#to_h` return instances of `::Hash` in case of nested symbolized data structure. (Luca Guidi)
772
+ - Raise `TypeError` if `nil` is passed to `PathPrefix#relative_join`. (Luca Guidi)
773
+ - Define `Lotus::Utils::Hash#respond_to_missing?`. (Peter Suschlik)
774
+ - Define `Lotus::Utils::String#responds_to_missing?`. (Peter Suschlik)
775
+ - Ensure `Utils::Hash#inspect` output to be the same of `::Hash#inspect`. (Luca Guidi)
597
776
 
598
- ## v0.2.0 - 2014-06-23
777
+ [0.3.0]: https://github.com/hanami/hanami-utils/compare/v0.2.0...v0.3.0
778
+
779
+ ## [0.2.0] - 2014-06-23
599
780
 
600
781
  ### Added
601
782
 
602
- - [Luca Guidi] Implemented `Lotus::Utils::Kernel.Symbol`
603
- - [Luca Guidi] Made `Kernel.Pathname` to raise an error when `nil` is passed as argument
604
- - [Luca Guidi] Implemented `Lotus::Utils::LoadPaths#freeze` in order to prevent modification after the object has been frozen
605
- - [Luca Guidi] Implemented Lotus::Utils::LoadPaths#push, also aliased as #<<
606
- - [Luca Guidi] Use composition over inheritance for `Lotus::Utils::LoadPaths`
607
- - [Luca Guidi] Introduced `Lotus::Utils::LoadPaths`
608
- - [Luca Guidi] Introduced `Lotus::Utils::String#namespace`, in order to return the top level Ruby namespace for the given string
609
- - [Luca Guidi] Implemented `Lotus::Utils::Kernel.Pathname`
783
+ - Implemented `Lotus::Utils::Kernel.Symbol`. (Luca Guidi)
784
+ - Made `Kernel.Pathname` to raise an error when `nil` is passed as argument. (Luca Guidi)
785
+ - Implemented `Lotus::Utils::LoadPaths#freeze` in order to prevent modification after the object has been frozen. (Luca Guidi)
786
+ - Implemented Lotus::Utils::LoadPaths#push, also aliased as #<<. (Luca Guidi)
787
+ - Use composition over inheritance for `Lotus::Utils::LoadPaths`. (Luca Guidi)
788
+ - Introduced `Lotus::Utils::LoadPaths`. (Luca Guidi)
789
+ - Introduced `Lotus::Utils::String#namespace`, in order to return the top level Ruby namespace for the given string. (Luca Guidi)
790
+ - Implemented `Lotus::Utils::Kernel.Pathname`. (Luca Guidi)
610
791
 
611
792
  ### Fixed
612
793
 
613
- - [Luca Guidi] Implemented `Lotus::Utils::LoadPaths#initialize_copy` in order to safely `#dup` and `#clone`
794
+ - Implemented `Lotus::Utils::LoadPaths#initialize_copy` in order to safely `#dup` and `#clone`. (Luca Guidi)
614
795
 
615
796
  ### Changed
616
797
 
617
- - [Luca Guidi] Implemented `Lotus::Utils::Callbacks::Chain#freeze` in order to prevent modification after the object has been frozen
618
- - [Luca Guidi] All the `Utils::Kernel` methods will raise `TypeError` in case of failed coercion.
619
- - [Luca Guidi] Made `Kernel.Time` to raise an error when `nil` is passed as argument
620
- - [Luca Guidi] Made `Kernel.DateTime` to raise an error when `nil` is passed as argument
621
- - [Luca Guidi] Made `Kernel.Date` to raise an error when `nil` is passed as argument
622
- - [Luca Guidi] Made `Kernel.Boolean` to return false when `nil` is passed as argument
623
- - [Luca Guidi] Made `Kernel.String` to return an empty string when `nil` is passed as argument
624
- - [Luca Guidi] Made `Kernel.Float` to return `0.0` when `nil` is passed as argument
625
- - [Luca Guidi] Made `Kernel.Integer` to return `0` when `nil` is passed as argument
626
- - [Luca Guidi] Made `Kernel.Hash` to return an empty `Hash` when `nil` is passed as argument
627
- - [Luca Guidi] Made `Kernel.Set` to return an empty `Set` when `nil` is passed as argument
628
- - [Luca Guidi] Made `Kernel.Array` to return an empty `Array` when `nil` is passed as argument
629
- - [Luca Guidi] Use composition over inheritance for `Lotus::Utils::Callbacks::Chain`
798
+ - Implemented `Lotus::Utils::Callbacks::Chain#freeze` in order to prevent modification after the object has been frozen. (Luca Guidi)
799
+ - All the `Utils::Kernel` methods will raise `TypeError` in case of failed coercion. (Luca Guidi)
800
+ - Made `Kernel.Time` to raise an error when `nil` is passed as argument. (Luca Guidi)
801
+ - Made `Kernel.DateTime` to raise an error when `nil` is passed as argument. (Luca Guidi)
802
+ - Made `Kernel.Date` to raise an error when `nil` is passed as argument. (Luca Guidi)
803
+ - Made `Kernel.Boolean` to return false when `nil` is passed as argument. (Luca Guidi)
804
+ - Made `Kernel.String` to return an empty string when `nil` is passed as argument. (Luca Guidi)
805
+ - Made `Kernel.Float` to return `0.0` when `nil` is passed as argument. (Luca Guidi)
806
+ - Made `Kernel.Integer` to return `0` when `nil` is passed as argument. (Luca Guidi)
807
+ - Made `Kernel.Hash` to return an empty `Hash` when `nil` is passed as argument. (Luca Guidi)
808
+ - Made `Kernel.Set` to return an empty `Set` when `nil` is passed as argument. (Luca Guidi)
809
+ - Made `Kernel.Array` to return an empty `Array` when `nil` is passed as argument. (Luca Guidi)
810
+ - Use composition over inheritance for `Lotus::Utils::Callbacks::Chain`. (Luca Guidi)
811
+
812
+ [0.2.0]: https://github.com/hanami/hanami-utils/compare/v0.1.1...v0.2.0
630
813
 
631
- ## v0.1.1 - 2014-04-23
814
+ ## [0.1.1] - 2014-04-23
632
815
 
633
816
  ### Added
634
817
 
635
- - [Luca Guidi] Implemented `Lotus::Utils::Kernel.Time`
636
- - [Luca Guidi] Implemented `Lotus::Utils::Kernel.DateTime`
637
- - [Luca Guidi] Implemented `Lotus::Utils::Kernel.Date`
638
- - [Luca Guidi] Implemented `Lotus::Utils::Kernel.Float`
639
- - [Luca Guidi] Implemented `Lotus::Utils::Kernel.Boolean`
640
- - [Luca Guidi] Implemented `Lotus::Utils::Kernel.Hash`
641
- - [Luca Guidi] Implemented `Lotus::Utils::Kernel.Set`
642
- - [Luca Guidi] Implemented `Lotus::Utils::Kernel.String`
643
- - [Luca Guidi] Implemented `Lotus::Utils::Kernel.Integer`
644
- - [Luca Guidi] Implemented `Lotus::Utils::Kernel.Array`
818
+ - Implemented `Lotus::Utils::Kernel.Time`. (Luca Guidi)
819
+ - Implemented `Lotus::Utils::Kernel.DateTime`. (Luca Guidi)
820
+ - Implemented `Lotus::Utils::Kernel.Date`. (Luca Guidi)
821
+ - Implemented `Lotus::Utils::Kernel.Float`. (Luca Guidi)
822
+ - Implemented `Lotus::Utils::Kernel.Boolean`. (Luca Guidi)
823
+ - Implemented `Lotus::Utils::Kernel.Hash`. (Luca Guidi)
824
+ - Implemented `Lotus::Utils::Kernel.Set`. (Luca Guidi)
825
+ - Implemented `Lotus::Utils::Kernel.String`. (Luca Guidi)
826
+ - Implemented `Lotus::Utils::Kernel.Integer`. (Luca Guidi)
827
+ - Implemented `Lotus::Utils::Kernel.Array`. (Luca Guidi)
645
828
 
646
829
  ### Fixed
647
830
 
648
- - [Christopher Keele] Add missing stdlib `Set` require to `Utils::ClassAttribute`
831
+ - Add missing stdlib `Set` require to `Utils::ClassAttribute`. (Christopher Keele)
832
+
833
+ [0.1.1]: https://github.com/hanami/hanami-utils/compare/v0.1.0...v0.1.1
649
834
 
650
- ## v0.1.0 - 2014-01-23
835
+ ## 0.1.0 - 2014-01-23
651
836
 
652
837
  ### Added
653
838
 
654
- - [Luca Guidi] Introduced `Lotus::Utils::String#demodulize`
655
- - [Luca Guidi] Introduced `Lotus::Utils::IO.silence_warnings`
656
- - [Luca Guidi] Introduced class loading mechanism from a string: `Utils::Class.load!`
657
- - [Luca Guidi] Introduced callbacks support for classes
658
- - [Luca Guidi] Introduced inheritable class level attributes
659
- - [Luca Guidi] Introduced `Utils::Hash`
660
- - [Luca Guidi] Introduced `Utils::String`
661
- - [Luca Guidi] Introduced `Utils::PathPrefix`
662
- - [Luca Guidi] Official support for MRI 2.0+
839
+ - Introduced `Lotus::Utils::String#demodulize`. (Luca Guidi)
840
+ - Introduced `Lotus::Utils::IO.silence_warnings`. (Luca Guidi)
841
+ - Introduced class loading mechanism from a string: `Utils::Class.load!`. (Luca Guidi)
842
+ - Introduced callbacks support for classes. (Luca Guidi)
843
+ - Introduced inheritable class level attributes. (Luca Guidi)
844
+ - Introduced `Utils::Hash`. (Luca Guidi)
845
+ - Introduced `Utils::String`. (Luca Guidi)
846
+ - Introduced `Utils::PathPrefix`. (Luca Guidi)
847
+ - Official support for MRI 2.0+. (Luca Guidi)