apple_core 1.4.0 → 1.6.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.
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