bright_serializer 0.5.1 → 0.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: 6b1e6a74356becfd673dd4dac712c8928aeea165d28c2a8f32ae95721b2e3a8c
4
- data.tar.gz: 555e6f814e3ae8f2a7bd2754f6084bfa5a52bae88f129928afdad4e20beed8f0
3
+ metadata.gz: d691a4f0a1ca318ee61c48df75e1ac869aee5a0c4df25fa058d0d07667e7e1d8
4
+ data.tar.gz: 06fe64a9684d29cc29ae1ab3ba73444c8e557869ba2748309296d8e8295a25f2
5
5
  SHA512:
6
- metadata.gz: d7b819bcdef793f0e4cb07d575ec7a23632ae11f51352db4d561cf9e705345eca0f77086bc5f9962e660368bb512b5d982040b4b89dfcfc99560abcc1d5b5140
7
- data.tar.gz: a94b5dabd9b6ad3a7b5ebe47f3ef50247f02cd21c42de603e25372969268d60be00572943f740e780c97129673bc7189d3f7f7d9226390a89e693f055f51e447
6
+ metadata.gz: dde2ce589e3704e19d8d6c2103ade98988633254a87e37c7f523a27ce00d87f0dd566fdfdbca68d04c9bd52aafcaf646fb8dd97230cded013974b9cc311d43f2
7
+ data.tar.gz: dee4c42f1689596729bc981337e1c045376a5891bc3ae4606c43bfa230fecf1e5b51352ca48268c60f411487f05b308dbe979bf206f383c7b18b93393a40b370
data/README.md CHANGED
@@ -80,7 +80,7 @@ end
80
80
 
81
81
  ### Transform keys
82
82
 
83
- By default, keys or not transformed.
83
+ By default, keys are not transformed.
84
84
 
85
85
  ```ruby
86
86
  class AccountSerializer
@@ -223,7 +223,14 @@ To install this gem onto your local machine, run `bundle exec rake install`.
223
223
 
224
224
  ## New release
225
225
 
226
- To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
226
+ Commit all changes in git before bumping the version.
227
+ Bump version with:
228
+
229
+ ```shell
230
+ bin/bump major|minor|patch
231
+ ```
232
+
233
+ GitHub Actions will take care of the rest
227
234
 
228
235
  ## Contributing
229
236
 
@@ -22,10 +22,10 @@ module BrightSerializer
22
22
  value.respond_to?(:serializable_hash) ? value.serializable_hash : value
23
23
  end
24
24
 
25
- def condition?(object, params)
25
+ def condition?(serializer_instance, object, params)
26
26
  return true unless @condition
27
27
 
28
- @condition.call(object, params)
28
+ serializer_instance.instance_exec(object, params, &@condition)
29
29
  end
30
30
 
31
31
  private
@@ -14,7 +14,7 @@ module BrightSerializer
14
14
  end
15
15
 
16
16
  def to_h
17
- @definition = Inflector.deep_transform_keys_in_object(@definition) { |k| Inflector.camel_lower k.to_s }
17
+ @definition = Inflector.deep_transform_keys_in_object(@definition) { |k| k.to_s.camelize(:lower) }
18
18
  parse_ref!
19
19
  evaluate_callable!
20
20
  @definition
@@ -1,58 +1,21 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class Inflector
4
- CAMEL_REGEX = /(_[a-zA-Z])/.freeze
5
- UNDERSCORE_REGEX = /(.)([A-Z])/.freeze
3
+ module Inflector
4
+ module_function
6
5
 
7
- class << self
8
- def camel(term)
9
- return term.capitalize! unless term.include?('_')
6
+ # File active_support/core_ext/hash/keys.rb, line 116
7
+ def deep_transform_keys_in_object(object, &block)
8
+ return object.deep_transform_keys(&block) if object.is_a?(Hash)
9
+ return object.map { |e| deep_transform_keys_in_object(e, &block) } if object.is_a?(Array)
10
10
 
11
- term.capitalize!
12
- term.gsub!(CAMEL_REGEX) { Regexp.last_match(1).delete('_').upcase! }
13
- end
14
-
15
- def camel_lower(term)
16
- return term unless term.include?('_')
17
-
18
- term.gsub!(CAMEL_REGEX) { Regexp.last_match(1).delete('_').upcase! }
19
- end
20
-
21
- def underscore(camel_cased_word)
22
- camel_cased_word.gsub!(UNDERSCORE_REGEX, '\1_\2')
23
- camel_cased_word.downcase!
24
- camel_cased_word
25
- end
26
-
27
- def dash(underscored_word)
28
- underscored_word.tr!('_', '-')
29
- underscored_word
30
- end
11
+ object
12
+ end
31
13
 
32
- # File active_support/core_ext/hash/keys.rb, line 116
33
- def deep_transform_keys_in_object(object, &block)
34
- case object
35
- when Hash
36
- object.each_with_object({}) do |(key, value), result|
37
- result[yield(key)] = deep_transform_keys_in_object(value, &block)
38
- end
39
- when Array
40
- object.map { |e| deep_transform_keys_in_object(e, &block) }
41
- else
42
- object
43
- end
44
- end
14
+ # File active_support/core_ext/hash/deep_transform_values.rb, line 25
15
+ def deep_transform_values_in_object(object, &block)
16
+ return object.deep_transform_values(&block) if object.is_a?(Hash)
17
+ return object.map { |e| deep_transform_values_in_object(e, &block) } if object.is_a?(Array)
45
18
 
46
- # File active_support/core_ext/hash/deep_transform_values.rb, line 25
47
- def deep_transform_values_in_object(object, &block)
48
- case object
49
- when Hash
50
- object.transform_values { |value| deep_transform_values_in_object(value, &block) }
51
- when Array
52
- object.map { |e| deep_transform_values_in_object(e, &block) }
53
- else
54
- yield(object)
55
- end
56
- end
19
+ object
57
20
  end
58
21
  end
@@ -27,10 +27,10 @@ module BrightSerializer
27
27
  end
28
28
 
29
29
  def serialize(object, attributes_to_serialize)
30
- return nil if @object.nil?
30
+ return if object.nil?
31
31
 
32
32
  attributes_to_serialize.each_with_object({}) do |attribute, result|
33
- next unless attribute.condition?(object, @params)
33
+ next unless attribute.condition?(self, object, @params)
34
34
 
35
35
  result[attribute.transformed_key] = attribute.serialize(self, object, @params)
36
36
  end
@@ -73,7 +73,7 @@ module BrightSerializer
73
73
 
74
74
  alias attribute attributes
75
75
 
76
- def has_one(key, serializer:, **options, &block) # rubocop:disable Naming/PredicateName
76
+ def has_one(key, serializer:, **options, &block) # rubocop:disable Naming/PredicatePrefix
77
77
  attribute = AttributeRelation.new(
78
78
  key, serializer, options.delete(:if), options.delete(:entity), options, &block
79
79
  )
@@ -92,14 +92,6 @@ module BrightSerializer
92
92
  @transform_method = transform_name
93
93
  end
94
94
 
95
- def run_transform_key(input)
96
- if transform_method
97
- Inflector.send(@transform_method, input.to_s).to_sym
98
- else
99
- input.to_sym
100
- end
101
- end
102
-
103
95
  def entity
104
96
  {}.tap do |result|
105
97
  @attributes_to_serialize.each do |attribute|
@@ -113,6 +105,24 @@ module BrightSerializer
113
105
  def entity_name
114
106
  name.split('::').last.downcase
115
107
  end
108
+
109
+ private
110
+
111
+ def run_transform_key(input)
112
+ return input.to_sym unless transform_method
113
+
114
+ # no else since `set_key_transform` validate the transform_method
115
+ case transform_method
116
+ when :camel
117
+ input.to_s.camelize.to_sym
118
+ when :camel_lower
119
+ input.to_s.camelize(:lower).to_sym
120
+ when :dash
121
+ input.to_s.dasherize.to_sym
122
+ when :underscore
123
+ input.to_s.underscore.to_sym
124
+ end
125
+ end
116
126
  end
117
127
 
118
128
  private
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BrightSerializer
4
- VERSION = '0.5.1'
4
+ VERSION = '0.6.0'
5
5
  end
@@ -1,7 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'active_support/core_ext/string/inflections'
3
+ require 'active_support'
4
4
  require 'active_support/core_ext/array/extract_options'
5
+ require 'active_support/core_ext/hash/deep_transform_values'
6
+ require 'active_support/core_ext/hash/keys'
7
+ require 'active_support/core_ext/string/inflections'
5
8
  require_relative 'bright_serializer/version'
6
9
 
7
10
  module BrightSerializer
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bright_serializer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean-Francis Bastien
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2023-04-05 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: activesupport
@@ -16,14 +15,14 @@ dependencies:
16
15
  requirements:
17
16
  - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: '5.2'
18
+ version: '7.0'
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - ">="
25
24
  - !ruby/object:Gem::Version
26
- version: '5.2'
25
+ version: '7.0'
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: oj
29
28
  requirement: !ruby/object:Gem::Requirement
@@ -64,11 +63,10 @@ licenses:
64
63
  - MIT
65
64
  metadata:
66
65
  homepage_uri: https://github.com/petalmd/bright_serializer
67
- changelog_uri: https://github.com/petalmd/bright_serializer/blob/master/CHANGELOG.md
66
+ changelog_uri: https://github.com/petalmd/bright_serializer/releases
68
67
  source_code_uri: https://github.com/petalmd/bright_serializer
69
68
  bug_tracker_uri: https://github.com/petalmd/bright_serializer/issues
70
69
  rubygems_mfa_required: 'true'
71
- post_install_message:
72
70
  rdoc_options: []
73
71
  require_paths:
74
72
  - lib
@@ -76,15 +74,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
76
74
  requirements:
77
75
  - - ">="
78
76
  - !ruby/object:Gem::Version
79
- version: '2.6'
77
+ version: '2.7'
80
78
  required_rubygems_version: !ruby/object:Gem::Requirement
81
79
  requirements:
82
80
  - - ">="
83
81
  - !ruby/object:Gem::Version
84
82
  version: '0'
85
83
  requirements: []
86
- rubygems_version: 3.4.1
87
- signing_key:
84
+ rubygems_version: 3.6.9
88
85
  specification_version: 4
89
86
  summary: Light and fast Ruby serializer
90
87
  test_files: []