hanami-utils 1.1.1 → 1.1.2
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 +11 -0
- data/lib/hanami/utils/files.rb +17 -12
- data/lib/hanami/utils/hash.rb +1 -1
- data/lib/hanami/utils/kernel.rb +12 -12
- data/lib/hanami/utils/string.rb +16 -15
- data/lib/hanami/utils/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e0a22471f524190c15c4669f35dcede577bbbc83216fd5646c9d904bd87038fe
|
4
|
+
data.tar.gz: e8b2a902b6a4d8f78467ce3608a33c3c1ab297e72b425cffecac3012f11566a2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1da17b43c1ae804f6b771a6cc6901dfd9a8e64f01dc82eae83813e72e203f9c837277a0d70b93e1d590e61079fb101a0ca9eaefb017f6a922554d4570fbc5cb3
|
7
|
+
data.tar.gz: 63cfd9328ff78e3f0077a702175d987d0268b20b2f61c16e4c842cd6cd1bc83aeef296bafcf431697fb3f1e678e8269e39f6f3d09078d5efe329f0882c4a173f
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,17 @@
|
|
1
1
|
# Hanami::Utils
|
2
2
|
Ruby core extentions and class utilities for Hanami
|
3
3
|
|
4
|
+
## v1.1.2 - 2018-02-02
|
5
|
+
### Added
|
6
|
+
- [Luca Guidi] Official support for Ruby: MRI 2.5
|
7
|
+
|
8
|
+
### Fixed
|
9
|
+
- [Sean Collins & Luca Guidi] Make `Utils::Files.write` idempotent: ensure to truncate the file before to write
|
10
|
+
- [Sean Collins & Luca Guidi] Don't erase file contents when invoking `Utils::Files.touch`
|
11
|
+
|
12
|
+
### Changed
|
13
|
+
- [Sean Collins & Luca Guidi] Deprecate `Utils::Files.rewrite` in favor of `.write`
|
14
|
+
|
4
15
|
## v1.1.1 - 2017-11-22
|
5
16
|
### Added
|
6
17
|
- [Luca Guidi] Introduce `Utils::Hash.deep_stringify` to recursively stringify a hash
|
data/lib/hanami/utils/files.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require "pathname"
|
2
2
|
require "fileutils"
|
3
|
+
require "hanami/utils/deprecation"
|
3
4
|
|
4
5
|
module Hanami
|
5
6
|
module Utils
|
@@ -15,12 +16,12 @@ module Hanami
|
|
15
16
|
#
|
16
17
|
# @since 1.1.0
|
17
18
|
def self.touch(path)
|
18
|
-
|
19
|
+
mkdir_p(path)
|
20
|
+
FileUtils.touch(path)
|
19
21
|
end
|
20
22
|
|
21
23
|
# Creates a new file for the given path and content.
|
22
24
|
# All the intermediate directories are created.
|
23
|
-
# If the path already exists, it appends the contents.
|
24
25
|
#
|
25
26
|
# @param path [String,Pathname] the path to file
|
26
27
|
# @param content [String, Array<String>] the content to write
|
@@ -28,7 +29,7 @@ module Hanami
|
|
28
29
|
# @since 1.1.0
|
29
30
|
def self.write(path, *content)
|
30
31
|
mkdir_p(path)
|
31
|
-
open(path, ::File::CREAT | ::File::WRONLY, *content)
|
32
|
+
open(path, ::File::CREAT | ::File::WRONLY | ::File::TRUNC, *content)
|
32
33
|
end
|
33
34
|
|
34
35
|
# Rewrites the contents of an existing file.
|
@@ -41,7 +42,11 @@ module Hanami
|
|
41
42
|
#
|
42
43
|
# @since 1.1.0
|
43
44
|
def self.rewrite(path, *content)
|
44
|
-
|
45
|
+
Hanami::Utils::Deprecation.new(
|
46
|
+
"`.rewrite' is deprecated, please use `.write'"
|
47
|
+
)
|
48
|
+
raise Errno::ENOENT unless File.exist?(path)
|
49
|
+
write(path, *content)
|
45
50
|
end
|
46
51
|
|
47
52
|
# Copies source into destination.
|
@@ -140,7 +145,7 @@ module Hanami
|
|
140
145
|
content = ::File.readlines(path)
|
141
146
|
content.unshift("#{line}\n")
|
142
147
|
|
143
|
-
|
148
|
+
write(path, content)
|
144
149
|
end
|
145
150
|
|
146
151
|
# Adds a new line at the bottom of the file
|
@@ -159,7 +164,7 @@ module Hanami
|
|
159
164
|
content = ::File.readlines(path)
|
160
165
|
content << "#{contents}\n"
|
161
166
|
|
162
|
-
|
167
|
+
write(path, content)
|
163
168
|
end
|
164
169
|
|
165
170
|
# Replace first line in `path` that contains `target` with `replacement`.
|
@@ -178,7 +183,7 @@ module Hanami
|
|
178
183
|
content = ::File.readlines(path)
|
179
184
|
content[index(content, path, target)] = "#{replacement}\n"
|
180
185
|
|
181
|
-
|
186
|
+
write(path, content)
|
182
187
|
end
|
183
188
|
|
184
189
|
# Replace last line in `path` that contains `target` with `replacement`.
|
@@ -197,7 +202,7 @@ module Hanami
|
|
197
202
|
content = ::File.readlines(path)
|
198
203
|
content[-index(content.reverse, path, target) - 1] = "#{replacement}\n"
|
199
204
|
|
200
|
-
|
205
|
+
write(path, content)
|
201
206
|
end
|
202
207
|
|
203
208
|
# Inject `contents` in `path` before `target`.
|
@@ -217,7 +222,7 @@ module Hanami
|
|
217
222
|
i = index(content, path, target)
|
218
223
|
|
219
224
|
content.insert(i, "#{contents}\n")
|
220
|
-
|
225
|
+
write(path, content)
|
221
226
|
end
|
222
227
|
|
223
228
|
# Inject `contents` in `path` after `target`.
|
@@ -237,7 +242,7 @@ module Hanami
|
|
237
242
|
i = index(content, path, target)
|
238
243
|
|
239
244
|
content.insert(i + 1, "#{contents}\n")
|
240
|
-
|
245
|
+
write(path, content)
|
241
246
|
end
|
242
247
|
|
243
248
|
# Removes line from `path`, matching `target`.
|
@@ -254,7 +259,7 @@ module Hanami
|
|
254
259
|
i = index(content, path, target)
|
255
260
|
|
256
261
|
content.delete_at(i)
|
257
|
-
|
262
|
+
write(path, content)
|
258
263
|
end
|
259
264
|
|
260
265
|
# Removes `target` block from `path`
|
@@ -293,7 +298,7 @@ module Hanami
|
|
293
298
|
ending = starting + index(content[starting..-1], path, closing)
|
294
299
|
|
295
300
|
content.slice!(starting..ending)
|
296
|
-
|
301
|
+
write(path, content)
|
297
302
|
|
298
303
|
remove_block(path, target) if match?(content, target)
|
299
304
|
end
|
data/lib/hanami/utils/hash.rb
CHANGED
@@ -329,7 +329,7 @@ module Hanami
|
|
329
329
|
# 'bignum' => 13289301283 ** 2,
|
330
330
|
# 'float' => 1.0,
|
331
331
|
# 'complex' => Complex(0.3),
|
332
|
-
# 'bigdecimal' => BigDecimal
|
332
|
+
# 'bigdecimal' => BigDecimal('12.0001'),
|
333
333
|
# 'rational' => Rational(0.3),
|
334
334
|
# 'string' => 'foo bar',
|
335
335
|
# 'hash' => { a: 1, b: 'two', c: :three },
|
data/lib/hanami/utils/kernel.rb
CHANGED
@@ -244,7 +244,7 @@ module Hanami
|
|
244
244
|
# Hanami::Utils::Kernel.Integer("1") # => 1
|
245
245
|
# Hanami::Utils::Kernel.Integer(Rational(0.3)) # => 0
|
246
246
|
# Hanami::Utils::Kernel.Integer(Complex(0.3)) # => 0
|
247
|
-
# Hanami::Utils::Kernel.Integer(BigDecimal
|
247
|
+
# Hanami::Utils::Kernel.Integer(BigDecimal(12.00001)) # => 12
|
248
248
|
# Hanami::Utils::Kernel.Integer(176605528590345446089)
|
249
249
|
# # => 176605528590345446089
|
250
250
|
#
|
@@ -311,11 +311,11 @@ module Hanami
|
|
311
311
|
# Hanami::Utils::Kernel.Integer(input) # => TypeError
|
312
312
|
#
|
313
313
|
# # bigdecimal infinity
|
314
|
-
# input = BigDecimal
|
314
|
+
# input = BigDecimal("Infinity")
|
315
315
|
# Hanami::Utils::Kernel.Integer(input) # => TypeError
|
316
316
|
#
|
317
317
|
# # bigdecimal NaN
|
318
|
-
# input = BigDecimal
|
318
|
+
# input = BigDecimal("NaN")
|
319
319
|
# Hanami::Utils::Kernel.Integer(input) # => TypeError
|
320
320
|
#
|
321
321
|
# # big rational
|
@@ -364,7 +364,7 @@ module Hanami
|
|
364
364
|
# Hanami::Utils::Kernel.BigDecimal("1") # => 1
|
365
365
|
# Hanami::Utils::Kernel.BigDecimal(Rational(0.3)) # => 0.3
|
366
366
|
# Hanami::Utils::Kernel.BigDecimal(Complex(0.3)) # => 0.3
|
367
|
-
# Hanami::Utils::Kernel.BigDecimal(BigDecimal
|
367
|
+
# Hanami::Utils::Kernel.BigDecimal(BigDecimal(12.00001)) # => 12.00001
|
368
368
|
# Hanami::Utils::Kernel.BigDecimal(176605528590345446089)
|
369
369
|
# # => 176605528590345446089
|
370
370
|
#
|
@@ -373,7 +373,7 @@ module Hanami
|
|
373
373
|
#
|
374
374
|
# UltimateAnswer = Struct.new(:question) do
|
375
375
|
# def to_d
|
376
|
-
# BigDecimal
|
376
|
+
# BigDecimal(42)
|
377
377
|
# end
|
378
378
|
# end
|
379
379
|
#
|
@@ -422,7 +422,7 @@ module Hanami
|
|
422
422
|
when ->(a) { a.respond_to?(:to_d) }
|
423
423
|
arg.to_d
|
424
424
|
else
|
425
|
-
BigDecimal
|
425
|
+
::Kernel.BigDecimal(arg)
|
426
426
|
end
|
427
427
|
rescue NoMethodError
|
428
428
|
raise TypeError.new "can't convert #{inspect_type_error(arg)}into BigDecimal"
|
@@ -454,7 +454,7 @@ module Hanami
|
|
454
454
|
# Hanami::Utils::Kernel.Float("1") # => 1.0
|
455
455
|
# Hanami::Utils::Kernel.Float(Rational(0.3)) # => 0.3
|
456
456
|
# Hanami::Utils::Kernel.Float(Complex(0.3)) # => 0.3
|
457
|
-
# Hanami::Utils::Kernel.Float(BigDecimal
|
457
|
+
# Hanami::Utils::Kernel.Float(BigDecimal(12.00001)) # => 12.00001
|
458
458
|
# Hanami::Utils::Kernel.Float(176605528590345446089)
|
459
459
|
# # => 176605528590345446089.0
|
460
460
|
#
|
@@ -493,11 +493,11 @@ module Hanami
|
|
493
493
|
# Hanami::Utils::Kernel.Float("2.5/1") # => 2.5
|
494
494
|
#
|
495
495
|
# # bigdecimal infinity
|
496
|
-
# input = BigDecimal
|
496
|
+
# input = BigDecimal("Infinity")
|
497
497
|
# Hanami::Utils::Kernel.Float(input) # => Infinity
|
498
498
|
#
|
499
499
|
# # bigdecimal NaN
|
500
|
-
# input = BigDecimal
|
500
|
+
# input = BigDecimal("NaN")
|
501
501
|
# Hanami::Utils::Kernel.Float(input) # => NaN
|
502
502
|
#
|
503
503
|
# @example Unchecked Exceptions
|
@@ -606,9 +606,9 @@ module Hanami
|
|
606
606
|
#
|
607
607
|
# Hanami::Utils::Kernel.String(Rational(-22)) # => "-22/1"
|
608
608
|
# Hanami::Utils::Kernel.String(Complex(11, 2)) # => "11+2i"
|
609
|
-
# Hanami::Utils::Kernel.String(BigDecimal
|
610
|
-
# Hanami::Utils::Kernel.String(BigDecimal
|
611
|
-
# Hanami::Utils::Kernel.String(BigDecimal
|
609
|
+
# Hanami::Utils::Kernel.String(BigDecimal(7944.2343, 10)) # => "0.79442343E4"
|
610
|
+
# Hanami::Utils::Kernel.String(BigDecimal('Infinity')) # => "Infinity"
|
611
|
+
# Hanami::Utils::Kernel.String(BigDecimal('NaN')) # => "Infinity"
|
612
612
|
#
|
613
613
|
# @example String interface
|
614
614
|
# require 'hanami/utils/kernel'
|
data/lib/hanami/utils/string.rb
CHANGED
@@ -212,7 +212,7 @@ module Hanami
|
|
212
212
|
#
|
213
213
|
# @param input [::String] the input
|
214
214
|
#
|
215
|
-
# @return [String] the transformed string
|
215
|
+
# @return [::String] the transformed string
|
216
216
|
#
|
217
217
|
# @since 1.1.0
|
218
218
|
#
|
@@ -239,7 +239,7 @@ module Hanami
|
|
239
239
|
#
|
240
240
|
# @param input [::String] the input
|
241
241
|
#
|
242
|
-
# @return [String] the transformed string
|
242
|
+
# @return [::String] the transformed string
|
243
243
|
#
|
244
244
|
# @since 1.1.0
|
245
245
|
#
|
@@ -282,7 +282,7 @@ module Hanami
|
|
282
282
|
#
|
283
283
|
# @param input [::String] the input
|
284
284
|
#
|
285
|
-
# @return [String] the transformed string
|
285
|
+
# @return [::String] the transformed string
|
286
286
|
#
|
287
287
|
# @since 1.1.0
|
288
288
|
#
|
@@ -300,7 +300,7 @@ module Hanami
|
|
300
300
|
#
|
301
301
|
# @param input [::String] the input
|
302
302
|
#
|
303
|
-
# @return [String] the transformed string
|
303
|
+
# @return [::String] the transformed string
|
304
304
|
#
|
305
305
|
# @since 1.1.0
|
306
306
|
#
|
@@ -386,7 +386,7 @@ module Hanami
|
|
386
386
|
#
|
387
387
|
# @param string [::String, Symbol] the value we want to initialize
|
388
388
|
#
|
389
|
-
# @return [String] self
|
389
|
+
# @return [Hanami::Utils::String] self
|
390
390
|
#
|
391
391
|
# @since 0.1.0
|
392
392
|
def initialize(string)
|
@@ -441,7 +441,7 @@ module Hanami
|
|
441
441
|
|
442
442
|
# Return a CamelCase version of the string
|
443
443
|
#
|
444
|
-
# @return [String] the transformed string
|
444
|
+
# @return [Hanami::Utils::String] the transformed string
|
445
445
|
#
|
446
446
|
# @since 0.1.0
|
447
447
|
#
|
@@ -466,7 +466,7 @@ module Hanami
|
|
466
466
|
# Revised version of `ActiveSupport::Inflector.underscore` implementation
|
467
467
|
# @see https://github.com/rails/rails/blob/feaa6e2048fe86bcf07e967d6e47b865e42e055b/activesupport/lib/active_support/inflector/methods.rb#L90
|
468
468
|
#
|
469
|
-
# @return [String] the transformed string
|
469
|
+
# @return [Hanami::Utils::String] the transformed string
|
470
470
|
#
|
471
471
|
# @since 0.1.0
|
472
472
|
#
|
@@ -507,7 +507,7 @@ module Hanami
|
|
507
507
|
|
508
508
|
# Return the string without the Ruby namespace of the class
|
509
509
|
#
|
510
|
-
# @return [String] the transformed string
|
510
|
+
# @return [Hanami::Utils::String] the transformed string
|
511
511
|
#
|
512
512
|
# @since 0.1.0
|
513
513
|
#
|
@@ -525,7 +525,7 @@ module Hanami
|
|
525
525
|
|
526
526
|
# Return the top level namespace name
|
527
527
|
#
|
528
|
-
# @return [String] the transformed string
|
528
|
+
# @return [Hanami::Utils::String] the transformed string
|
529
529
|
#
|
530
530
|
# @since 0.1.2
|
531
531
|
#
|
@@ -602,7 +602,7 @@ module Hanami
|
|
602
602
|
|
603
603
|
# Returns the hash of the internal string
|
604
604
|
#
|
605
|
-
# @return [
|
605
|
+
# @return [Integer]
|
606
606
|
#
|
607
607
|
# @since 0.3.0
|
608
608
|
def hash
|
@@ -611,7 +611,7 @@ module Hanami
|
|
611
611
|
|
612
612
|
# Returns a string representation
|
613
613
|
#
|
614
|
-
# @return [String]
|
614
|
+
# @return [::String]
|
615
615
|
#
|
616
616
|
# @since 0.3.0
|
617
617
|
def to_s
|
@@ -633,7 +633,7 @@ module Hanami
|
|
633
633
|
|
634
634
|
# Split the string with the given pattern
|
635
635
|
#
|
636
|
-
# @return [Array
|
636
|
+
# @return [Array<::String>]
|
637
637
|
#
|
638
638
|
# @see http://www.ruby-doc.org/core/String.html#method-i-split
|
639
639
|
#
|
@@ -644,7 +644,7 @@ module Hanami
|
|
644
644
|
|
645
645
|
# Replace the given pattern with the given replacement
|
646
646
|
#
|
647
|
-
# @return [String
|
647
|
+
# @return [::String]
|
648
648
|
#
|
649
649
|
# @see http://www.ruby-doc.org/core/String.html#method-i-gsub
|
650
650
|
#
|
@@ -657,9 +657,10 @@ module Hanami
|
|
657
657
|
end
|
658
658
|
end
|
659
659
|
|
660
|
-
#
|
660
|
+
# Iterate through the string, matching the pattern.
|
661
|
+
# Either return all those patterns, or pass them to the block.
|
661
662
|
#
|
662
|
-
# @return [String
|
663
|
+
# @return [Array<::String>]
|
663
664
|
#
|
664
665
|
# @see http://www.ruby-doc.org/core/String.html#method-i-scan
|
665
666
|
#
|
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.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luca Guidi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-02-02 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.7.
|
137
|
+
rubygems_version: 2.7.4
|
138
138
|
signing_key:
|
139
139
|
specification_version: 4
|
140
140
|
summary: Ruby core extentions and Hanami utilities
|