apple_core 1.4.0 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b031ca8051ff8d6e391f4e9b4015bc9f80517202e6a597766f70c9a0756ade70
4
- data.tar.gz: 63dcd8c0c2a70233b70729bcc07c37044cafad4573fbd0fe0e3bb395ec88ff94
3
+ metadata.gz: 2556df7cbebb3daec1f26d9806d449960174af33b4b46a5b8928c6e8088a158e
4
+ data.tar.gz: 36d23f73e93c2838fbb00a75abee6281e07df81998aa3a091e41bc5876b3e5aa
5
5
  SHA512:
6
- metadata.gz: 0f17c0ea2da214f24cbd48679415ff1d498a1e9e4d0f2964a365671f2a861119ed6ab149b332cae34cb628dd36b3645cfbc3cc9012b79aef8c55694261ab238b
7
- data.tar.gz: f636bcd1eb98ece8ff046d8ceaeb7d03104b1faa63b3a3eec9f73770ed93ece0d56c0b762770d548234d1891fe3622333f6d91d8bd373770a6f2bb458713a6da
6
+ metadata.gz: 2667b4f75eccdef83b0157ff7cfd20b8af40a5ae86dba6b922904780ae3439698085e125c90b8adab3a417235e1b05b3cf1b5a899dbd88ea55253901dd5a1100
7
+ data.tar.gz: d4717068717a43f8510d154f7f1ef2ca1d9873e236297eb79f3c812d26b3ae8dde40d0f0b3e877333dc865dc1e697c20b0dc08b764f262d899aeeab2531f2c8a
checksums.yaml.gz.sig CHANGED
Binary file
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2010-2016 The Kompanee, Ltd
1
+ Copyright (c) 2010-2019 The Kompanee, Ltd
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
4
  of this software and associated documentation files (the "Software"), to deal
@@ -7,38 +7,40 @@ module ActionController
7
7
  module ResourceNaming
8
8
  using ::AppleCore::Refinements::String
9
9
 
10
+ # rubocop:disable Lint/MixedRegexpCaptureTypes
10
11
  CONTROLLER_RESOURCE_NAME_PATTERN = /
11
12
  \A # Beginning of String
12
13
  (?:
13
14
  (?<modules> # Full Modules
14
15
  (?: # Match Root Module (Optional)
15
16
  (?<root_module>
16
- [^\:]+ # The Module Name
17
- (?=\:\:) # Which Must Be Followed By '::'
17
+ [^:]+ # The Module Name
18
+ (?=::) # Which Must Be Followed By '::'
18
19
  )
19
- (?:\:\:)? # Up Through the '::' But Don't
20
+ (?:::)? # Up Through the '::' But Don't
20
21
  # Capture If It's The Sole Module
21
22
  )?
22
23
  (?<submodules> # Match Submodule List (Optional)
23
24
  ( # There May Be Zero or More of These
24
- [^\:]+ # The Module Name
25
- \:\: # Up Through the '::'
25
+ [^:]+ # The Module Name
26
+ :: # Up Through the '::'
26
27
  )*?
27
28
  (?<last_submodule> # The Final Submodule (Optional)
28
- [^\:]+ # The Module Name
29
- (?=\:\:) # Which Must Be Followed By '::'
29
+ [^:]+ # The Module Name
30
+ (?=::) # Which Must Be Followed By '::'
30
31
  )?
31
32
  )?
32
33
  )
33
- \:\: # Required Final Separator
34
+ :: # Required Final Separator
34
35
  )?
35
36
  (?<controller_name>
36
- (?<resource_name>\w+?) # Base Resource Name
37
+ (?<base_resource_name>\w+?) # Base Resource Name
37
38
  (?:Index|Indicies)? # Optional Index Suffix
38
39
  )
39
40
  Controller # Literal 'Controller'
40
41
  \z # End of String
41
42
  /x
43
+ # rubocop:enable Lint/MixedRegexpCaptureTypes
42
44
 
43
45
  def self.included(base)
44
46
  base.extend(self)
@@ -62,14 +64,14 @@ module ResourceNaming
62
64
  end
63
65
 
64
66
  def plural_resource_base_class_name
65
- @plural_resource_base_class_name ||= resource_name
67
+ @plural_resource_base_class_name ||= base_resource_name
66
68
  .pluralize
67
69
  end
68
70
 
69
71
  def singular_resource_class_name
70
72
  @singular_resource_class_name ||= [
71
- name_components['root_module'],
72
- resource_name,
73
+ name_components['modules'],
74
+ base_resource_name,
73
75
  ]
74
76
  .compact
75
77
  .join('::')
@@ -84,9 +86,9 @@ module ResourceNaming
84
86
  @name_components ||= name.match(CONTROLLER_RESOURCE_NAME_PATTERN).named_captures
85
87
  end
86
88
 
87
- def resource_name
88
- @resource_name ||= name_components['resource_name']
89
- .singularize
89
+ def base_resource_name
90
+ @base_resource_name ||= name_components['base_resource_name']
91
+ .singularize
90
92
  end
91
93
  end
92
94
  end
@@ -4,22 +4,32 @@ require 'uri'
4
4
  require 'apple_core/refinements/query_string'
5
5
 
6
6
  module AppleCore
7
+ module ActionView
7
8
  module Helpers
8
9
  module WebClientUrl
9
10
  using ::AppleCore::Refinements::QueryString
10
11
 
12
+ # rubocop:disable Metrics/AbcSize
11
13
  def web_client_url(**options)
12
- route_name = options.delete(:name)
13
- default_options = Chamber.env.web_client.slice('host', 'port', 'protocol')
14
- route_path = Chamber.env.web_client.urls[route_name]
14
+ route_name = options.delete(:name)
15
+
16
+ if defined?(::Chamber)
17
+ default_options = Chamber.env.web_client.slice('host', 'port', 'protocol')
18
+ original_path = Chamber.env.web_client.urls[route_name]
19
+ else
20
+ default_options = {}
21
+ original_path = options.delete(:path)
22
+ end
15
23
 
16
- options.dup.each do |key, value|
24
+ path = options.dup.inject(original_path) do |memo, (key, value)|
17
25
  key_pattern = %r{/:#{key}(?=(/|\z))}
18
26
 
19
- next unless route_path.match?(key_pattern)
20
-
21
- route_path.gsub!(key_pattern, "/#{value}")
22
- options.delete(key)
27
+ if memo.match?(key_pattern)
28
+ options.delete(key)
29
+ memo.gsub(key_pattern, "/#{value}")
30
+ else
31
+ memo
32
+ end
23
33
  end
24
34
 
25
35
  options = default_options.merge(options)
@@ -30,7 +40,7 @@ module WebClientUrl
30
40
  options.delete('host'),
31
41
  options.delete('port') || 443,
32
42
  nil,
33
- route_path,
43
+ path,
34
44
  nil,
35
45
  options.to_query,
36
46
  anchor,
@@ -38,6 +48,8 @@ module WebClientUrl
38
48
 
39
49
  URI::HTTPS.new(*arguments).to_s
40
50
  end
51
+ # rubocop:enable Metrics/AbcSize
52
+ end
41
53
  end
42
54
  end
43
55
  end
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Stolen from https://github.com/rails/rails/blob/94ca3e0a571dba0fe41ca18d61634c5f3aa11209/activesupport/lib/active_support/core_ext/class/attribute.rb
5
+ # and https://github.com/rails/rails/blob/94ca3e0a571dba0fe41ca18d61634c5f3aa11209/activesupport/lib/active_support/core_ext/module/remove_method.rb
6
+
7
+ # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
8
+ # rubocop:disable Metrics/PerceivedComplexity
9
+ # rubocop:disable Style/Send, Style/GuardClause, Metrics/BlockNesting
10
+ # rubocop:disable Style/OptionHash
11
+ module AppleCore
12
+ module Extensions
13
+ module Class
14
+ module ClassMethods
15
+ def class_attribute(method_name, options = {})
16
+ instance_reader = options.fetch(:instance_accessor, true) &&
17
+ options.fetch(:instance_reader, true)
18
+ instance_writer = options.fetch(:instance_accessor, true) &&
19
+ options.fetch(:instance_writer, true)
20
+
21
+ remove_possible_singleton_method(method_name)
22
+ define_singleton_method(method_name) { options[:default] }
23
+
24
+ ivar = "@#{method_name}"
25
+
26
+ remove_possible_singleton_method("#{method_name}=")
27
+ define_singleton_method("#{method_name}=") do |val|
28
+ singleton_class.class_eval do
29
+ remove_possible_method(method_name)
30
+ define_method(method_name) { val }
31
+ end
32
+
33
+ if singleton_class?
34
+ class_eval do
35
+ remove_possible_method(method_name)
36
+ define_method(method_name) do
37
+ if instance_variable_defined? ivar
38
+ instance_variable_get ivar
39
+ else
40
+ singleton_class.send method_name
41
+ end
42
+ end
43
+ end
44
+ end
45
+ val
46
+ end
47
+
48
+ if instance_reader
49
+ remove_possible_method method_name
50
+ define_method(method_name) do
51
+ if instance_variable_defined?(ivar)
52
+ instance_variable_get ivar
53
+ else
54
+ self.class.public_send method_name
55
+ end
56
+ end
57
+ end
58
+
59
+ if instance_writer
60
+ remove_possible_method "#{method_name}="
61
+ attr_writer method_name
62
+ end
63
+ end
64
+ end
65
+
66
+ def self.included(base)
67
+ base.extend(ClassMethods)
68
+ end
69
+ end
70
+ end
71
+ end
72
+ # rubocop:enable Style/OptionHash
73
+ # rubocop:enable Style/Send, Style/GuardClause, Metrics/BlockNesting
74
+ # rubocop:enable Metrics/PerceivedComplexity
75
+ # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Stolen from https://github.com/rails/rails/blob/94ca3e0a571dba0fe41ca18d61634c5f3aa11209/activesupport/lib/active_support/core_ext/class/attribute.rb
5
+ # and https://github.com/rails/rails/blob/94ca3e0a571dba0fe41ca18d61634c5f3aa11209/activesupport/lib/active_support/core_ext/module/remove_method.rb
6
+
7
+ class Module
8
+ def remove_possible_method(method)
9
+ return unless method_defined?(method) || private_method_defined?(method)
10
+
11
+ undef_method(method)
12
+ end
13
+
14
+ # Removes the named singleton method, if it exists.
15
+ def remove_possible_singleton_method(method)
16
+ singleton_class.instance_eval do
17
+ remove_possible_method(method)
18
+ end
19
+ end
20
+
21
+ # Replaces the existing method definition, if there is one, with the passed
22
+ # block as its body.
23
+ def redefine_method(method, &block)
24
+ remove_possible_method(method)
25
+ define_method(method, &block)
26
+ end
27
+ end
@@ -5,7 +5,7 @@ require 'apple_core/action_view/helpers/web_client_url'
5
5
  module AppleCore
6
6
  class Railtie < Rails::Railtie
7
7
  initializer 'web_client_url.helper' do |_app|
8
- ActionView::Base.public_send(:include, AppleCore::Helpers::WebClientUrl)
8
+ ::ActionView::Base.include AppleCore::ActionView::Helpers::WebClientUrl
9
9
  end
10
10
  end
11
11
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'apple_core/transforms/enumerable'
4
+
3
5
  module AppleCore
4
6
  module Refinements
5
7
  module Array
@@ -33,6 +35,14 @@ refine ::Array do
33
35
  {}
34
36
  end
35
37
  end
38
+
39
+ def deep_transform_keys(&block)
40
+ Transforms::Enumerable.deep_transform_keys(self, &block)
41
+ end
42
+
43
+ def deep_transform_values(&block)
44
+ Transforms::Enumerable.deep_transform_values(nil, self, &block)
45
+ end
36
46
  end
37
47
  end
38
48
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'apple_core/transforms/hash'
3
+ require 'apple_core/transforms/enumerable'
4
4
 
5
5
  module AppleCore
6
6
  module Refinements
@@ -17,7 +17,35 @@ refine ::Hash do
17
17
  end
18
18
 
19
19
  def deep_underscore_keys
20
- Transforms::Hash.deep_underscore_keys(self)
20
+ Transforms::Enumerable.deep_underscore_keys(self)
21
+ end
22
+
23
+ def deep_transform_keys(&block)
24
+ Transforms::Enumerable.deep_transform_keys(self, &block)
25
+ end
26
+
27
+ def deep_transform_values(&block)
28
+ Transforms::Enumerable.deep_transform_values(nil, self, &block)
29
+ end
30
+
31
+ unless method_defined?(:deep_merge)
32
+ def deep_merge(other, &block)
33
+ dup.deep_merge!(other, &block)
34
+ end
35
+ end
36
+
37
+ unless method_defined?(:deep_merge!)
38
+ def deep_merge!(other, &block)
39
+ merge!(other) do |key, value_1, value_2|
40
+ if value_1.is_a?(::Hash) && value_2.is_a?(::Hash)
41
+ value_1.deep_merge(value_2, &block)
42
+ elsif block
43
+ yield(key, value_1, value_2)
44
+ else
45
+ value_2
46
+ end
47
+ end
48
+ end
21
49
  end
22
50
 
23
51
  unless method_defined?(:slice)
@@ -29,17 +29,16 @@ end
29
29
  refine ::Hash do
30
30
  unless method_defined?(:to_param)
31
31
  def to_param(namespace = nil)
32
- map { |key, value|
33
- unless (value.is_a?(Hash) || value.is_a?(Array)) && value.empty?
32
+ filter_map { |key, value|
33
+ if (!value.is_a?(Hash) && !value.is_a?(Array)) || !value.empty?
34
34
  value.to_query(namespace ? "#{namespace}[#{key}]" : key)
35
35
  end
36
36
  }
37
- .compact
38
37
  .sort!
39
38
  .join('&')
40
39
  end
41
40
 
42
- alias_method :to_param, :to_query
41
+ alias_method :to_query, :to_param
43
42
  end
44
43
  end
45
44
 
@@ -12,6 +12,16 @@ refine ::String do
12
12
  only_digits? ? to_i(base) : nil
13
13
  end
14
14
 
15
+ def indent(*args)
16
+ dup.tap { |v| v.indent!(*args) }
17
+ end
18
+
19
+ def indent!(amount, indent_string = nil, indent_empty_lines = false) # rubocop:disable Style/OptionalBooleanParameter
20
+ indent_string = indent_string || self[/^[ \t]/] || ' '
21
+ regex = indent_empty_lines ? /^/ : /^(?!$)/
22
+ gsub!(regex, indent_string * amount)
23
+ end
24
+
15
25
  unless defined?(ActiveSupport::Inflector)
16
26
  # rubocop:disable Style/PerlBackrefs
17
27
  def camelize(first_letter_casing = :upper)
@@ -33,7 +43,23 @@ refine ::String do
33
43
  end
34
44
  # rubocop:enable Style/PerlBackrefs
35
45
 
36
- # rubocop:disable Metrics/MethodLength
46
+ def constantize
47
+ names = split('::')
48
+ names.shift if names.empty? || names.first.empty?
49
+
50
+ constant = Object
51
+
52
+ names.each do |name|
53
+ constant = if constant.const_defined?(name)
54
+ constant.const_get(name)
55
+ else
56
+ constant.const_missing(name)
57
+ end
58
+ end
59
+
60
+ constant
61
+ end
62
+
37
63
  def pluralize
38
64
  result = to_s.dup
39
65
 
@@ -73,9 +99,8 @@ refine ::String do
73
99
 
74
100
  result
75
101
  end
76
- # rubocop:enable Metrics/MethodLength
77
102
 
78
- # rubocop:disable Metrics/MethodLength, Layout/AlignHash
103
+ # rubocop:disable Layout/HashAlignment
79
104
  def singularize
80
105
  result = to_s.dup
81
106
 
@@ -127,7 +152,7 @@ refine ::String do
127
152
 
128
153
  result
129
154
  end
130
- # rubocop:enable Metrics/MethodLength, Layout/AlignHash
155
+ # rubocop:enable Layout/HashAlignment
131
156
 
132
157
  def underscore
133
158
  word = gsub('::', '/')
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'apple_core/refinements/string'
4
+
5
+ module AppleCore
6
+ module Transforms
7
+ class Enumerable
8
+ using ::AppleCore::Refinements::String
9
+
10
+ def self.deep_underscore_keys(other)
11
+ deep_transform_keys(other, &:underscore)
12
+ end
13
+
14
+ def self.deep_transform_keys(object, &block)
15
+ case object
16
+ when ::Hash
17
+ object.each_with_object({}) do |(key, value), result|
18
+ result[yield(key)] = deep_transform_keys(value, &block)
19
+ end
20
+ when ::Array
21
+ object.map { |e| deep_transform_keys(e, &block) }
22
+ else
23
+ object
24
+ end
25
+ end
26
+
27
+ def self.deep_transform_values(key, value, &block)
28
+ case value
29
+ when ::Hash
30
+ value.each_with_object({}) do |(k, v), memo|
31
+ memo[k] = deep_transform_values(k, v, &block)
32
+ end
33
+ when ::Array
34
+ yield(
35
+ key,
36
+ value.map { |v| deep_transform_values(nil, v, &block) }
37
+ )
38
+ else
39
+ yield(key, value)
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AppleCore
4
- VERSION = '1.4.0'
4
+ VERSION = '1.6.0'
5
5
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apple_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - thegranddesign
@@ -10,97 +10,91 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDqjCCApKgAwIBAgIBATANBgkqhkiG9w0BAQUFADBNMREwDwYDVQQDDAhydWJ5
14
- Z2VtczEjMCEGCgmSJomT8ixkARkWE2xpdmluZ2hpZ2hvbnRoZWJsb2cxEzARBgoJ
15
- kiaJk/IsZAEZFgNjb20wHhcNMTcwODAyMjI1OTM1WhcNMTgwODAyMjI1OTM1WjBN
16
- MREwDwYDVQQDDAhydWJ5Z2VtczEjMCEGCgmSJomT8ixkARkWE2xpdmluZ2hpZ2hv
17
- bnRoZWJsb2cxEzARBgoJkiaJk/IsZAEZFgNjb20wggEiMA0GCSqGSIb3DQEBAQUA
18
- A4IBDwAwggEKAoIBAQDtLa7+7p49gW15OgOyRZad/F92iZcMdDjZ2kAxZlviXgVe
19
- PCtjfdURobH+YMdt++6eRkE25utIFqHyN51Shxfdc21T3fPQe/ZEoMyiJK4tYzbh
20
- 7VjNJG4ldvKKpS1p7iVz9imnyTxNwb0JaIOsOFCA04T0u6aCQi2acNvAPLviXk0q
21
- xJ/CKjI4QUTZKVrBt8Q1Egrp2yzmEnSNftDuTbBb8m4vDR+w325CwbKCgycHJ1/g
22
- YZ3FO76TzJuRVbsYS/bU5XKHVEpkeFmWBqEXsk4DuUIWLa6WZEJcoZf+YP+1pycG
23
- 7YqSbydpINtEdopD+EEI+g+zNJ4nSI8/eQcQyEjBAgMBAAGjgZQwgZEwCQYDVR0T
24
- BAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFDWuVrg4ve0vLu71kqiGdyBnzJGV
25
- MCsGA1UdEQQkMCKBIHJ1YnlnZW1zQGxpdmluZ2hpZ2hvbnRoZWJsb2cuY29tMCsG
26
- A1UdEgQkMCKBIHJ1YnlnZW1zQGxpdmluZ2hpZ2hvbnRoZWJsb2cuY29tMA0GCSqG
27
- SIb3DQEBBQUAA4IBAQDJIpHjbBPGiaY4wOHcXlltQ+BMmhWQNh+1fZtyajQd+7Ay
28
- fv23mO7Mf25Q38gopQlpaODkfxq54Jt8FvQbr5RYRS4j+JEKb75NgrAtehd8USUd
29
- CiJJGH+yvGNWug9IGZCGX91HIbTsLQ5IUUWQasC5jGP8nxXufUr9xgAJZZenewny
30
- B2qKu8q1A/kj6cw62RCY7yBmUXxlcJBj8g+JKYAFbYYKUdQSzf50k9IiWLWunJM+
31
- Y2GAoHKstmfIVhc4XHOPpmTd2o/C29O9oaRgjrkfQEhF/KvJ/PhoV5hvokzsCyI5
32
- iUeXPfvrGD/itYIBCgk+fnzyQQ4QtE5hTQaWQ3o2
13
+ MIIEyjCCAzKgAwIBAgIBATANBgkqhkiG9w0BAQsFADBVMSIwIAYDVQQDDBlsb2Nh
14
+ bGV1bmtub3duODEwX3J1YnlnZW1zMRowGAYKCZImiZPyLGQBGRYKcHJvdG9ubWFp
15
+ bDETMBEGCgmSJomT8ixkARkWA2NvbTAeFw0yMjA3MDkwNTMxMjJaFw0yMzA3MDkw
16
+ NTMxMjJaMFUxIjAgBgNVBAMMGWxvY2FsZXVua25vd244MTBfcnVieWdlbXMxGjAY
17
+ BgoJkiaJk/IsZAEZFgpwcm90b25tYWlsMRMwEQYKCZImiZPyLGQBGRYDY29tMIIB
18
+ ojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA0otlhSPyU7jLLW1p786Mo/pV
19
+ 5cJ1Ed8D/bJK78PqGFO2h0ZUefupxT5PRMokLYNNGRPopnAAxZ0zVxJ68aOyYCBW
20
+ Wk3/XFcXCrtk/OcFwLTltgeMjyqCBd/zRRx6CCjY4uOfH0E3n1gQ6Fbmewjg83XJ
21
+ nOs7Gu/hzj5+feEQ1Exmg6z1oCM/8BTIBtK+p++HvcDK3AhJ7x3fc6P9WS+22w6j
22
+ 7jpi3p9YtoAjrXIzw3lsobiX+bEt+N+T47e8gOATVgapuZ/QmJzNU6LWepehs4V1
23
+ 8J+FUaIMV7nAMKmpkbYL51uHEiGV+HDx1HUdOsCFx8zD4h49KRT2t6AcumJ5P1Cj
24
+ c7NX2xl85ShHDNNFkozuC2c5cwj6F20EVaVjGwv2OFq0S2tUw9EJXHTN9RpfRUmn
25
+ IHwS9M4gcJO7IzV39a1YL6+9hrabF4+JTSYDehq8oxTdcOPLYyvH54aJWVqCrnLO
26
+ KNa/p6hMmwxTWNS5Vz0uxuEGyE9E0tHbtjIs2XX5AgMBAAGjgaQwgaEwCQYDVR0T
27
+ BAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFAK3RicwO0f6+puFN6lRVMOKMJuu
28
+ MDMGA1UdEQQsMCqBKGxvY2FsZXVua25vd244MTArcnVieWdlbXNAcHJvdG9ubWFp
29
+ bC5jb20wMwYDVR0SBCwwKoEobG9jYWxldW5rbm93bjgxMCtydWJ5Z2Vtc0Bwcm90
30
+ b25tYWlsLmNvbTANBgkqhkiG9w0BAQsFAAOCAYEAQwV6pOp5gm8141pyXeQFI/5E
31
+ rZYO3MvdyZM8O3HMD51LDS8mtMURceaKZM6WTambe2RVX4A++0qUiEnn9K4Fexm/
32
+ SEGaC/Gp+Fg9D1SKfkdq9bgdIhOEUwiGqjczgzNC806AtWZ+awI940oydFYZlpo0
33
+ jMQihPPJEqF1U6JBDMZYV5tX/dJYSGRl9L3s1k2tjoN98q+beNaZQDn21Amml4eK
34
+ KEkMeTTJ2E4GVzR9eKEETLq2LygdUWWZ5NdWOYTxJMdg1GZp3b6X8hJrwfOiizqt
35
+ /ANlIEh11/pOnWa6WPUVpGIMpYdquvmJXnF2LX6zxkKK1hbrebt+vAEAGczgw1Ri
36
+ rkLM6y+BHQdkOTj3VG4MjIU8D4h1Z73Exzxds/VbVKMEz+8JrFjGJ/tYa0PZ8U5p
37
+ 3yXL4G6eW3rdBW/OiLF7GgG2o26d02OMzf4+ubUVS5LQDOcd4vgNPLWzJSBt1YIh
38
+ TgBsED7Me5YdMVXxtTWYsF1VMzaL9hReD3UXGcxe
33
39
  -----END CERTIFICATE-----
34
- date: 2018-07-10 00:00:00.000000000 Z
40
+ date: 2022-07-17 00:00:00.000000000 Z
35
41
  dependencies:
36
42
  - !ruby/object:Gem::Dependency
37
43
  name: activemodel
38
44
  requirement: !ruby/object:Gem::Requirement
39
45
  requirements:
40
- - - "<"
41
- - !ruby/object:Gem::Version
42
- version: '6.0'
43
- - - ">="
46
+ - - "~>"
44
47
  - !ruby/object:Gem::Version
45
- version: '4.2'
48
+ version: '7.0'
46
49
  type: :development
47
50
  prerelease: false
48
51
  version_requirements: !ruby/object:Gem::Requirement
49
52
  requirements:
50
- - - "<"
51
- - !ruby/object:Gem::Version
52
- version: '6.0'
53
- - - ">="
53
+ - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: '4.2'
55
+ version: '7.0'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: activerecord
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - "<"
61
- - !ruby/object:Gem::Version
62
- version: '6.0'
63
- - - ">="
60
+ - - "~>"
64
61
  - !ruby/object:Gem::Version
65
- version: '4.2'
62
+ version: '7.0'
66
63
  type: :development
67
64
  prerelease: false
68
65
  version_requirements: !ruby/object:Gem::Requirement
69
66
  requirements:
70
- - - "<"
71
- - !ruby/object:Gem::Version
72
- version: '6.0'
73
- - - ">="
67
+ - - "~>"
74
68
  - !ruby/object:Gem::Version
75
- version: '4.2'
69
+ version: '7.0'
76
70
  - !ruby/object:Gem::Dependency
77
71
  name: rspec
78
72
  requirement: !ruby/object:Gem::Requirement
79
73
  requirements:
80
74
  - - "~>"
81
75
  - !ruby/object:Gem::Version
82
- version: '3.7'
76
+ version: '3.11'
83
77
  type: :development
84
78
  prerelease: false
85
79
  version_requirements: !ruby/object:Gem::Requirement
86
80
  requirements:
87
81
  - - "~>"
88
82
  - !ruby/object:Gem::Version
89
- version: '3.7'
83
+ version: '3.11'
90
84
  - !ruby/object:Gem::Dependency
91
- name: rspectacular
85
+ name: rspeckled
92
86
  requirement: !ruby/object:Gem::Requirement
93
87
  requirements:
94
88
  - - "~>"
95
89
  - !ruby/object:Gem::Version
96
- version: '0.6'
90
+ version: 0.0.53
97
91
  type: :development
98
92
  prerelease: false
99
93
  version_requirements: !ruby/object:Gem::Requirement
100
94
  requirements:
101
95
  - - "~>"
102
96
  - !ruby/object:Gem::Version
103
- version: '0.6'
97
+ version: 0.0.53
104
98
  description: To the CORE!
105
99
  email:
106
100
  - rubygems@livinghighontheblog.com
@@ -116,6 +110,8 @@ files:
116
110
  - lib/apple_core/active_model/errors.rb
117
111
  - lib/apple_core/active_model/validations/inclusion_validator.rb
118
112
  - lib/apple_core/active_record/base.rb
113
+ - lib/apple_core/extensions/class.rb
114
+ - lib/apple_core/extensions/module.rb
119
115
  - lib/apple_core/railtie.rb
120
116
  - lib/apple_core/refinements/array.rb
121
117
  - lib/apple_core/refinements/deep_dup.rb
@@ -123,13 +119,20 @@ files:
123
119
  - lib/apple_core/refinements/integer.rb
124
120
  - lib/apple_core/refinements/query_string.rb
125
121
  - lib/apple_core/refinements/string.rb
126
- - lib/apple_core/transforms/hash.rb
122
+ - lib/apple_core/transforms/enumerable.rb
127
123
  - lib/apple_core/version.rb
128
- homepage: https://example.com
124
+ homepage: https://github.com/thekompanee/apple_core
129
125
  licenses:
130
126
  - MIT
131
127
  metadata:
132
128
  allowed_push_host: https://rubygems.org
129
+ bug_tracker_uri: https://github.com/thekompanee/apple_core/issues
130
+ changelog_uri: https://github.com/thekompanee/apple_core/blob/master/CHANGELOG.md
131
+ documentation_uri: https://github.com/thekompanee/apple_core/tree/releases/v1.5.0
132
+ homepage_uri: https://github.com/thekompanee/apple_core
133
+ source_code_uri: https://github.com/thekompanee/apple_core
134
+ wiki_uri: https://github.com/thekompanee/apple_core/wiki
135
+ rubygems_mfa_required: 'true'
133
136
  post_install_message:
134
137
  rdoc_options: []
135
138
  require_paths:
@@ -145,8 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
148
  - !ruby/object:Gem::Version
146
149
  version: '0'
147
150
  requirements: []
148
- rubyforge_project:
149
- rubygems_version: 2.7.7
151
+ rubygems_version: 3.3.7
150
152
  signing_key:
151
153
  specification_version: 4
152
154
  summary: Non-Active Support
metadata.gz.sig CHANGED
Binary file
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'apple_core/refinements/string'
4
-
5
- module AppleCore
6
- module Transforms
7
- class Hash
8
- using ::AppleCore::Refinements::String
9
-
10
- def self.deep_underscore_keys(other)
11
- return other unless other.is_a? ::Hash
12
-
13
- other.each_with_object({}) do |(key, value), hash|
14
- value = case value
15
- when ::Hash
16
- deep_underscore_keys(value)
17
- when ::Array
18
- value.map do |item|
19
- deep_underscore_keys(item)
20
- end
21
- else
22
- value
23
- end
24
-
25
- hash[key.to_s.underscore] = value
26
- end
27
- end
28
- end
29
- end
30
- end