bright_serializer 0.5.2 → 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 +4 -4
- data/README.md +8 -1
- data/lib/bright_serializer/attribute.rb +2 -2
- data/lib/bright_serializer/entity/base.rb +1 -1
- data/lib/bright_serializer/inflector.rb +13 -50
- data/lib/bright_serializer/serializer.rb +20 -10
- data/lib/bright_serializer/version.rb +1 -1
- data/lib/bright_serializer.rb +4 -1
- metadata +7 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d691a4f0a1ca318ee61c48df75e1ac869aee5a0c4df25fa058d0d07667e7e1d8
|
4
|
+
data.tar.gz: 06fe64a9684d29cc29ae1ab3ba73444c8e557869ba2748309296d8e8295a25f2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dde2ce589e3704e19d8d6c2103ade98988633254a87e37c7f523a27ce00d87f0dd566fdfdbca68d04c9bd52aafcaf646fb8dd97230cded013974b9cc311d43f2
|
7
|
+
data.tar.gz: dee4c42f1689596729bc981337e1c045376a5891bc3ae4606c43bfa230fecf1e5b51352ca48268c60f411487f05b308dbe979bf206f383c7b18b93393a40b370
|
data/README.md
CHANGED
@@ -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
|
-
|
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
|
-
|
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|
|
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
|
-
|
4
|
-
|
5
|
-
UNDERSCORE_REGEX = /(.)([A-Z])/.freeze
|
3
|
+
module Inflector
|
4
|
+
module_function
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
|
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
|
-
|
12
|
-
|
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
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
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
|
-
|
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
|
@@ -30,7 +30,7 @@ module BrightSerializer
|
|
30
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/
|
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
|
data/lib/bright_serializer.rb
CHANGED
@@ -1,7 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'active_support
|
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.
|
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:
|
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: '
|
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: '
|
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/
|
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.
|
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.
|
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: []
|