hanami-utils 1.3.7 → 2.0.0.alpha1
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 +14 -29
- data/README.md +5 -13
- data/hanami-utils.gemspec +3 -4
- data/lib/hanami/interactor.rb +29 -53
- data/lib/hanami/logger.rb +12 -12
- data/lib/hanami/logger/colorizer.rb +10 -10
- data/lib/hanami/logger/filter.rb +10 -89
- data/lib/hanami/logger/formatter.rb +7 -7
- data/lib/hanami/middleware.rb +11 -0
- data/lib/hanami/utils.rb +3 -19
- data/lib/hanami/utils/basic_object.rb +3 -63
- data/lib/hanami/utils/blank.rb +6 -8
- data/lib/hanami/utils/callbacks.rb +20 -5
- data/lib/hanami/utils/class.rb +3 -52
- data/lib/hanami/utils/class_attribute.rb +22 -13
- data/lib/hanami/utils/class_attribute/attributes.rb +45 -0
- data/lib/hanami/utils/escape.rb +170 -172
- data/lib/hanami/utils/file_list.rb +1 -1
- data/lib/hanami/utils/files.rb +2 -31
- data/lib/hanami/utils/hash.rb +12 -341
- data/lib/hanami/utils/json.rb +1 -1
- data/lib/hanami/utils/kernel.rb +12 -11
- data/lib/hanami/utils/load_paths.rb +3 -3
- data/lib/hanami/utils/query_string.rb +1 -1
- data/lib/hanami/utils/shell_color.rb +9 -9
- data/lib/hanami/utils/string.rb +38 -102
- data/lib/hanami/utils/version.rb +1 -1
- metadata +15 -29
- data/lib/hanami/utils/duplicable.rb +0 -82
- data/lib/hanami/utils/inflector.rb +0 -493
@@ -50,7 +50,7 @@ module Hanami
|
|
50
50
|
@paths = original.instance_variable_get(:@paths).dup
|
51
51
|
end
|
52
52
|
|
53
|
-
# Iterates
|
53
|
+
# Iterates thru the collection and yields the given block.
|
54
54
|
# It skips duplications and raises an error in case one of the paths
|
55
55
|
# doesn't exist.
|
56
56
|
#
|
@@ -117,7 +117,7 @@ module Hanami
|
|
117
117
|
self
|
118
118
|
end
|
119
119
|
|
120
|
-
|
120
|
+
alias << push
|
121
121
|
|
122
122
|
# It freezes the object by preventing further modifications.
|
123
123
|
#
|
@@ -158,7 +158,7 @@ module Hanami
|
|
158
158
|
|
159
159
|
private
|
160
160
|
|
161
|
-
#
|
161
|
+
# Allow subclasses to define their own policy to discover the realpath
|
162
162
|
# of the given path.
|
163
163
|
#
|
164
164
|
# @since 0.2.0
|
@@ -18,22 +18,22 @@ module Hanami
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
#
|
21
|
+
# Escape codes for terminals to output strings in colors
|
22
22
|
#
|
23
23
|
# @since 1.2.0
|
24
24
|
# @api private
|
25
25
|
COLORS = ::Hash[
|
26
|
-
black:
|
27
|
-
red:
|
28
|
-
green:
|
29
|
-
yellow:
|
30
|
-
blue:
|
26
|
+
black: 30,
|
27
|
+
red: 31,
|
28
|
+
green: 32,
|
29
|
+
yellow: 33,
|
30
|
+
blue: 34,
|
31
31
|
magenta: 35,
|
32
|
-
cyan:
|
33
|
-
gray:
|
32
|
+
cyan: 36,
|
33
|
+
gray: 37,
|
34
34
|
].freeze
|
35
35
|
|
36
|
-
#
|
36
|
+
# Colorize output
|
37
37
|
# 8 colors available: black, red, green, yellow, blue, magenta, cyan, and gray
|
38
38
|
#
|
39
39
|
# @param input [#to_s] the string to colorize
|
data/lib/hanami/utils/string.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "hanami/utils/inflector"
|
4
3
|
require "transproc"
|
5
4
|
require "concurrent/map"
|
6
5
|
|
@@ -9,7 +8,7 @@ module Hanami
|
|
9
8
|
# String on steroids
|
10
9
|
#
|
11
10
|
# @since 0.1.0
|
12
|
-
class String
|
11
|
+
class String # rubocop:disable Metrics/ClassLength
|
13
12
|
# Empty string for #classify
|
14
13
|
#
|
15
14
|
# @since 0.6.0
|
@@ -74,17 +73,16 @@ module Hanami
|
|
74
73
|
#
|
75
74
|
# @since 0.3.4
|
76
75
|
# @api private
|
77
|
-
CLASSIFY_WORD_SEPARATOR = /#{CLASSIFY_SEPARATOR}|#{NAMESPACE_SEPARATOR}|#{UNDERSCORE_SEPARATOR}|#{DASHERIZE_SEPARATOR}/.freeze
|
76
|
+
CLASSIFY_WORD_SEPARATOR = /#{CLASSIFY_SEPARATOR}|#{NAMESPACE_SEPARATOR}|#{UNDERSCORE_SEPARATOR}|#{DASHERIZE_SEPARATOR}/.freeze
|
78
77
|
|
79
78
|
@__transformations__ = Concurrent::Map.new
|
80
79
|
|
81
80
|
extend Transproc::Registry
|
82
81
|
extend Transproc::Composer
|
83
82
|
|
84
|
-
#
|
83
|
+
# Apply the given transformation(s) to `input`
|
85
84
|
#
|
86
|
-
# It performs a pipeline of transformations, by applying the given
|
87
|
-
# functions from `Hanami::Utils::String` and `::String`.
|
85
|
+
# It performs a pipeline of transformations, by applying the given functions from `Hanami::Utils::String` and `::String`.
|
88
86
|
# The transformations are applied in the given order.
|
89
87
|
#
|
90
88
|
# It doesn't mutate the input, unless you use destructive methods from `::String`
|
@@ -132,6 +130,8 @@ module Hanami
|
|
132
130
|
# Hanami::Utils::String.transform("Cherry", -> { "blossom" }))
|
133
131
|
# # => ArgumentError: wrong number of arguments (given 1, expected 0)
|
134
132
|
#
|
133
|
+
# rubocop:disable Metrics/AbcSize
|
134
|
+
# rubocop:disable Metrics/MethodLength
|
135
135
|
def self.transform(input, *transformations)
|
136
136
|
fn = @__transformations__.fetch_or_store(transformations.hash) do
|
137
137
|
compose do |fns|
|
@@ -143,7 +143,7 @@ module Hanami
|
|
143
143
|
elsif input.respond_to?(transformation)
|
144
144
|
t(:bind, input, ->(i) { i.public_send(transformation, *args) })
|
145
145
|
else
|
146
|
-
raise NoMethodError.new(%(undefined method `#{transformation.inspect}' for #{input.inspect}:#{input.class}))
|
146
|
+
raise NoMethodError.new(%(undefined method `#{transformation.inspect}' for #{input.inspect}:#{input.class}))
|
147
147
|
end
|
148
148
|
end
|
149
149
|
end
|
@@ -151,6 +151,8 @@ module Hanami
|
|
151
151
|
|
152
152
|
fn.call(input)
|
153
153
|
end
|
154
|
+
# rubocop:enable Metrics/MethodLength
|
155
|
+
# rubocop:enable Metrics/AbcSize
|
154
156
|
|
155
157
|
# Extracted from `transproc` source code
|
156
158
|
#
|
@@ -163,7 +165,7 @@ module Hanami
|
|
163
165
|
binding.instance_exec(value, &fun)
|
164
166
|
end
|
165
167
|
|
166
|
-
#
|
168
|
+
# Return a titleized version of the string
|
167
169
|
#
|
168
170
|
# @param input [::String] the input
|
169
171
|
#
|
@@ -180,7 +182,7 @@ module Hanami
|
|
180
182
|
underscore(string).split(CLASSIFY_SEPARATOR).map(&:capitalize).join(TITLEIZE_SEPARATOR)
|
181
183
|
end
|
182
184
|
|
183
|
-
#
|
185
|
+
# Return a capitalized version of the string
|
184
186
|
#
|
185
187
|
# @param input [::String] the input
|
186
188
|
#
|
@@ -207,7 +209,7 @@ module Hanami
|
|
207
209
|
tail.unshift(head.capitalize).join(CAPITALIZE_SEPARATOR)
|
208
210
|
end
|
209
211
|
|
210
|
-
#
|
212
|
+
# Return a CamelCase version of the string
|
211
213
|
#
|
212
214
|
# @param input [::String] the input
|
213
215
|
#
|
@@ -231,7 +233,7 @@ module Hanami
|
|
231
233
|
words.zip(delimiters).join
|
232
234
|
end
|
233
235
|
|
234
|
-
#
|
236
|
+
# Return a downcased and underscore separated version of the string
|
235
237
|
#
|
236
238
|
# Revised version of `ActiveSupport::Inflector.underscore` implementation
|
237
239
|
# @see https://github.com/rails/rails/blob/feaa6e2048fe86bcf07e967d6e47b865e42e055b/activesupport/lib/active_support/inflector/methods.rb#L90
|
@@ -256,7 +258,7 @@ module Hanami
|
|
256
258
|
string.downcase
|
257
259
|
end
|
258
260
|
|
259
|
-
#
|
261
|
+
# Return a downcased and dash separated version of the string
|
260
262
|
#
|
261
263
|
# @param input [::String] the input
|
262
264
|
#
|
@@ -277,7 +279,7 @@ module Hanami
|
|
277
279
|
underscore(string).split(CLASSIFY_SEPARATOR).join(DASHERIZE_SEPARATOR)
|
278
280
|
end
|
279
281
|
|
280
|
-
#
|
282
|
+
# Return the string without the Ruby namespace of the class
|
281
283
|
#
|
282
284
|
# @param input [::String] the input
|
283
285
|
#
|
@@ -295,7 +297,7 @@ module Hanami
|
|
295
297
|
::String.new(input.to_s).split(NAMESPACE_SEPARATOR).last
|
296
298
|
end
|
297
299
|
|
298
|
-
#
|
300
|
+
# Return the top level namespace name
|
299
301
|
#
|
300
302
|
# @param input [::String] the input
|
301
303
|
#
|
@@ -313,47 +315,7 @@ module Hanami
|
|
313
315
|
::String.new(input.to_s).split(NAMESPACE_SEPARATOR).first
|
314
316
|
end
|
315
317
|
|
316
|
-
#
|
317
|
-
#
|
318
|
-
# @param input [::String] the input
|
319
|
-
#
|
320
|
-
# @return [::String] the pluralized string.
|
321
|
-
#
|
322
|
-
# @since 1.1.0
|
323
|
-
#
|
324
|
-
# @see Hanami::Utils::Inflector
|
325
|
-
# @deprecated
|
326
|
-
#
|
327
|
-
# @example
|
328
|
-
# require 'hanami/utils/string'
|
329
|
-
#
|
330
|
-
# Hanami::Utils::String.pluralize('book') # => 'books'
|
331
|
-
def self.pluralize(input)
|
332
|
-
string = ::String.new(input.to_s)
|
333
|
-
Inflector.pluralize(string)
|
334
|
-
end
|
335
|
-
|
336
|
-
# Returns a singularized version of self.
|
337
|
-
#
|
338
|
-
# @param input [::String] the input
|
339
|
-
#
|
340
|
-
# @return [::String] the singularized string.
|
341
|
-
#
|
342
|
-
# @since 1.1.0
|
343
|
-
# @deprecated
|
344
|
-
#
|
345
|
-
# @see Hanami::Utils::Inflector
|
346
|
-
#
|
347
|
-
# @example
|
348
|
-
# require 'hanami/utils/string'
|
349
|
-
#
|
350
|
-
# Hanami::Utils::String.singularize('books') # => 'book'
|
351
|
-
def self.singularize(input)
|
352
|
-
string = ::String.new(input.to_s)
|
353
|
-
Inflector.singularize(string)
|
354
|
-
end
|
355
|
-
|
356
|
-
# Replaces the rightmost match of `pattern` with `replacement`
|
318
|
+
# Replace the rightmost match of `pattern` with `replacement`
|
357
319
|
#
|
358
320
|
# If the pattern cannot be matched, it returns the original string.
|
359
321
|
#
|
@@ -374,7 +336,7 @@ module Hanami
|
|
374
336
|
# # => 'authors/books#index'
|
375
337
|
def self.rsub(input, pattern, replacement)
|
376
338
|
string = ::String.new(input.to_s)
|
377
|
-
if i = string.rindex(pattern)
|
339
|
+
if i = string.rindex(pattern) # rubocop:disable Lint/AssignmentInCondition
|
378
340
|
s = string.dup
|
379
341
|
s[i] = replacement
|
380
342
|
s
|
@@ -395,7 +357,7 @@ module Hanami
|
|
395
357
|
@string = string.to_s
|
396
358
|
end
|
397
359
|
|
398
|
-
#
|
360
|
+
# Return a titleized version of the string
|
399
361
|
#
|
400
362
|
# @return [Hanami::Utils::String] the transformed string
|
401
363
|
#
|
@@ -411,7 +373,7 @@ module Hanami
|
|
411
373
|
self.class.new underscore.split(CLASSIFY_SEPARATOR).map(&:capitalize).join(TITLEIZE_SEPARATOR)
|
412
374
|
end
|
413
375
|
|
414
|
-
#
|
376
|
+
# Return a capitalized version of the string
|
415
377
|
#
|
416
378
|
# @return [Hanami::Utils::String] the transformed string
|
417
379
|
#
|
@@ -443,7 +405,7 @@ module Hanami
|
|
443
405
|
)
|
444
406
|
end
|
445
407
|
|
446
|
-
#
|
408
|
+
# Return a CamelCase version of the string
|
447
409
|
#
|
448
410
|
# @return [Hanami::Utils::String] the transformed string
|
449
411
|
#
|
@@ -466,7 +428,7 @@ module Hanami
|
|
466
428
|
self.class.new words.zip(delimiters).join
|
467
429
|
end
|
468
430
|
|
469
|
-
#
|
431
|
+
# Return a downcased and underscore separated version of the string
|
470
432
|
#
|
471
433
|
# Revised version of `ActiveSupport::Inflector.underscore` implementation
|
472
434
|
# @see https://github.com/rails/rails/blob/feaa6e2048fe86bcf07e967d6e47b865e42e055b/activesupport/lib/active_support/inflector/methods.rb#L90
|
@@ -490,7 +452,7 @@ module Hanami
|
|
490
452
|
self.class.new new_string
|
491
453
|
end
|
492
454
|
|
493
|
-
#
|
455
|
+
# Return a downcased and dash separated version of the string
|
494
456
|
#
|
495
457
|
# @return [Hanami::Utils::String] the transformed string
|
496
458
|
#
|
@@ -512,7 +474,7 @@ module Hanami
|
|
512
474
|
self.class.new underscore.split(CLASSIFY_SEPARATOR).join(DASHERIZE_SEPARATOR)
|
513
475
|
end
|
514
476
|
|
515
|
-
#
|
477
|
+
# Return the string without the Ruby namespace of the class
|
516
478
|
#
|
517
479
|
# @return [Hanami::Utils::String] the transformed string
|
518
480
|
#
|
@@ -531,7 +493,7 @@ module Hanami
|
|
531
493
|
self.class.new split(NAMESPACE_SEPARATOR).last
|
532
494
|
end
|
533
495
|
|
534
|
-
#
|
496
|
+
# Return the top level namespace name
|
535
497
|
#
|
536
498
|
# @return [Hanami::Utils::String] the transformed string
|
537
499
|
#
|
@@ -572,8 +534,9 @@ module Hanami
|
|
572
534
|
# 'Hanami::Utils'
|
573
535
|
# 'Hanami::App'
|
574
536
|
#
|
537
|
+
# rubocop:disable Metrics/MethodLength
|
575
538
|
def tokenize
|
576
|
-
if match = TOKENIZE_REGEXP.match(@string)
|
539
|
+
if match = TOKENIZE_REGEXP.match(@string) # rubocop:disable Lint/AssignmentInCondition
|
577
540
|
pre = match.pre_match
|
578
541
|
post = match.post_match
|
579
542
|
tokens = match[1].split(TOKENIZE_SEPARATOR)
|
@@ -586,32 +549,7 @@ module Hanami
|
|
586
549
|
|
587
550
|
nil
|
588
551
|
end
|
589
|
-
|
590
|
-
# Returns a pluralized version of self.
|
591
|
-
#
|
592
|
-
# @return [Hanami::Utils::String] the pluralized string.
|
593
|
-
#
|
594
|
-
# @api private
|
595
|
-
# @since 0.4.1
|
596
|
-
# @deprecated
|
597
|
-
#
|
598
|
-
# @see Hanami::Utils::Inflector
|
599
|
-
def pluralize
|
600
|
-
self.class.new Inflector.pluralize(self)
|
601
|
-
end
|
602
|
-
|
603
|
-
# Returns a singularized version of self.
|
604
|
-
#
|
605
|
-
# @return [Hanami::Utils::String] the singularized string.
|
606
|
-
#
|
607
|
-
# @api private
|
608
|
-
# @since 0.4.1
|
609
|
-
# @deprecated
|
610
|
-
#
|
611
|
-
# @see Hanami::Utils::Inflector
|
612
|
-
def singularize
|
613
|
-
self.class.new Inflector.singularize(self)
|
614
|
-
end
|
552
|
+
# rubocop:enable Metrics/MethodLength
|
615
553
|
|
616
554
|
# Returns the hash of the internal string
|
617
555
|
#
|
@@ -633,7 +571,7 @@ module Hanami
|
|
633
571
|
@string
|
634
572
|
end
|
635
573
|
|
636
|
-
|
574
|
+
alias to_str to_s
|
637
575
|
|
638
576
|
# Equality
|
639
577
|
#
|
@@ -645,9 +583,9 @@ module Hanami
|
|
645
583
|
to_s == other
|
646
584
|
end
|
647
585
|
|
648
|
-
|
586
|
+
alias eql? ==
|
649
587
|
|
650
|
-
#
|
588
|
+
# Split the string with the given pattern
|
651
589
|
#
|
652
590
|
# @return [Array<::String>]
|
653
591
|
#
|
@@ -659,7 +597,7 @@ module Hanami
|
|
659
597
|
@string.split(pattern, limit)
|
660
598
|
end
|
661
599
|
|
662
|
-
#
|
600
|
+
# Replace the given pattern with the given replacement
|
663
601
|
#
|
664
602
|
# @return [::String]
|
665
603
|
#
|
@@ -675,7 +613,7 @@ module Hanami
|
|
675
613
|
end
|
676
614
|
end
|
677
615
|
|
678
|
-
#
|
616
|
+
# Iterate through the string, matching the pattern.
|
679
617
|
# Either return all those patterns, or pass them to the block.
|
680
618
|
#
|
681
619
|
# @return [Array<::String>]
|
@@ -688,7 +626,7 @@ module Hanami
|
|
688
626
|
@string.scan(pattern, &blk)
|
689
627
|
end
|
690
628
|
|
691
|
-
#
|
629
|
+
# Replace the rightmost match of `pattern` with `replacement`
|
692
630
|
#
|
693
631
|
# If the pattern cannot be matched, it returns the original string.
|
694
632
|
#
|
@@ -714,7 +652,7 @@ module Hanami
|
|
714
652
|
# puts result
|
715
653
|
# # => #<Hanami::Utils::String:0x007fdb41232ed0 @string="authors/books#index">
|
716
654
|
def rsub(pattern, replacement)
|
717
|
-
if i = rindex(pattern)
|
655
|
+
if i = rindex(pattern) # rubocop:disable Lint/AssignmentInCondition
|
718
656
|
s = @string.dup
|
719
657
|
s[i] = replacement
|
720
658
|
self.class.new s
|
@@ -723,23 +661,21 @@ module Hanami
|
|
723
661
|
end
|
724
662
|
end
|
725
663
|
|
726
|
-
#
|
664
|
+
# Override Ruby's method_missing in order to provide ::String interface
|
727
665
|
#
|
728
666
|
# @api private
|
729
667
|
# @since 0.3.0
|
730
668
|
#
|
731
669
|
# @raise [NoMethodError] If doesn't respond to the given method
|
732
670
|
def method_missing(method_name, *args, &blk)
|
733
|
-
unless respond_to?(method_name)
|
734
|
-
raise NoMethodError.new(%(undefined method `#{method_name}' for "#{@string}":#{self.class}))
|
735
|
-
end
|
671
|
+
raise NoMethodError.new(%(undefined method `#{method_name}' for "#{@string}":#{self.class})) unless respond_to?(method_name)
|
736
672
|
|
737
673
|
s = @string.__send__(method_name, *args, &blk)
|
738
674
|
s = self.class.new(s) if s.is_a?(::String)
|
739
675
|
s
|
740
676
|
end
|
741
677
|
|
742
|
-
#
|
678
|
+
# Override Ruby's respond_to_missing? in order to support ::String interface
|
743
679
|
#
|
744
680
|
# @api private
|
745
681
|
# @since 0.3.0
|
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:
|
4
|
+
version: 2.0.0.alpha1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luca Guidi
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-01-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: transproc
|
@@ -64,42 +64,28 @@ dependencies:
|
|
64
64
|
requirements:
|
65
65
|
- - "~>"
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: '
|
67
|
+
version: '12'
|
68
68
|
type: :development
|
69
69
|
prerelease: false
|
70
70
|
version_requirements: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
72
|
- - "~>"
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version: '
|
74
|
+
version: '12'
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: rspec
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
79
|
- - "~>"
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: '3.
|
81
|
+
version: '3.7'
|
82
82
|
type: :development
|
83
83
|
prerelease: false
|
84
84
|
version_requirements: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
86
|
- - "~>"
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version: '3.
|
89
|
-
- !ruby/object:Gem::Dependency
|
90
|
-
name: rubocop
|
91
|
-
requirement: !ruby/object:Gem::Requirement
|
92
|
-
requirements:
|
93
|
-
- - '='
|
94
|
-
- !ruby/object:Gem::Version
|
95
|
-
version: '0.81'
|
96
|
-
type: :development
|
97
|
-
prerelease: false
|
98
|
-
version_requirements: !ruby/object:Gem::Requirement
|
99
|
-
requirements:
|
100
|
-
- - '='
|
101
|
-
- !ruby/object:Gem::Version
|
102
|
-
version: '0.81'
|
88
|
+
version: '3.7'
|
103
89
|
description: Hanami utilities
|
104
90
|
email:
|
105
91
|
- me@lucaguidi.com
|
@@ -117,19 +103,19 @@ files:
|
|
117
103
|
- lib/hanami/logger/colorizer.rb
|
118
104
|
- lib/hanami/logger/filter.rb
|
119
105
|
- lib/hanami/logger/formatter.rb
|
106
|
+
- lib/hanami/middleware.rb
|
120
107
|
- lib/hanami/utils.rb
|
121
108
|
- lib/hanami/utils/basic_object.rb
|
122
109
|
- lib/hanami/utils/blank.rb
|
123
110
|
- lib/hanami/utils/callbacks.rb
|
124
111
|
- lib/hanami/utils/class.rb
|
125
112
|
- lib/hanami/utils/class_attribute.rb
|
113
|
+
- lib/hanami/utils/class_attribute/attributes.rb
|
126
114
|
- lib/hanami/utils/deprecation.rb
|
127
|
-
- lib/hanami/utils/duplicable.rb
|
128
115
|
- lib/hanami/utils/escape.rb
|
129
116
|
- lib/hanami/utils/file_list.rb
|
130
117
|
- lib/hanami/utils/files.rb
|
131
118
|
- lib/hanami/utils/hash.rb
|
132
|
-
- lib/hanami/utils/inflector.rb
|
133
119
|
- lib/hanami/utils/io.rb
|
134
120
|
- lib/hanami/utils/json.rb
|
135
121
|
- lib/hanami/utils/kernel.rb
|
@@ -143,7 +129,7 @@ homepage: http://hanamirb.org
|
|
143
129
|
licenses:
|
144
130
|
- MIT
|
145
131
|
metadata: {}
|
146
|
-
post_install_message:
|
132
|
+
post_install_message:
|
147
133
|
rdoc_options: []
|
148
134
|
require_paths:
|
149
135
|
- lib
|
@@ -151,15 +137,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
151
137
|
requirements:
|
152
138
|
- - ">="
|
153
139
|
- !ruby/object:Gem::Version
|
154
|
-
version: 2.
|
140
|
+
version: 2.5.0
|
155
141
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
156
142
|
requirements:
|
157
|
-
- - "
|
143
|
+
- - ">"
|
158
144
|
- !ruby/object:Gem::Version
|
159
|
-
version:
|
145
|
+
version: 1.3.1
|
160
146
|
requirements: []
|
161
|
-
rubygems_version: 3.2
|
162
|
-
signing_key:
|
147
|
+
rubygems_version: 3.0.2
|
148
|
+
signing_key:
|
163
149
|
specification_version: 4
|
164
150
|
summary: Ruby core extentions and Hanami utilities
|
165
151
|
test_files: []
|