bright_serializer 0.2.0 → 0.2.5

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: 124b91b1e579f871a02ebdc415fc663c3053ea9a45592a3bcf37cae0f3ef6f20
4
- data.tar.gz: c59949c767f3391e97e38d332ecaf14a93525ea5971edf260a044af5b66ee513
3
+ metadata.gz: ae3444c6b0be4fc77c338286c25e97acc5501aeac9af722a53bf1182dad6034c
4
+ data.tar.gz: 75461556470937cd50f91326e591c73aea3a089cbfe3961200a8420d6682c019
5
5
  SHA512:
6
- metadata.gz: a716280c2dc9064f639f9e67ccf0ab24ae4cf0060293d5d0d77bad889598857cd1aadc75612cc38a8ffe564d57b8e24f97e699d9fa46efdad03964a890b6a856
7
- data.tar.gz: 0311226ca9be88fcc43d690486de25195c25cd7ccdf0bad636b0b4707dc50a01a07b7f830071d947f01ee6d4660b04122f9fed601a5113c2ee2e83600b639d53
6
+ metadata.gz: 17d5c832abe849c799e4c5240bdfda4ed8e292f0284a3004908d0e812a0bb90268f85be8f1e416c83b596446aec0bcef38d02d1e26e607fe6da902dfc6daa69f
7
+ data.tar.gz: 7e78a38854d53707fd8f6cd4eb3df7368f045fc20f086df1fd592c07cf723b69de458c2bfc2890457d245633f716bbc1e8d379cb0318f8486809fc42ff37fd72
data/.rubocop.yml CHANGED
@@ -2,6 +2,9 @@ require:
2
2
  - rubocop-performance
3
3
  - rubocop-rspec
4
4
 
5
+ AllCops:
6
+ NewCops: enable
7
+
5
8
  Metrics/BlockLength:
6
9
  Enabled: false
7
10
 
@@ -30,4 +33,7 @@ Metrics/CyclomaticComplexity:
30
33
  Enabled: false
31
34
 
32
35
  Metrics/AbcSize:
33
- Enabled: false
36
+ Enabled: false
37
+
38
+ RSpec/NestedGroups:
39
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -4,11 +4,33 @@
4
4
 
5
5
  * Your contribution
6
6
 
7
+ ## 0.2.5 (2021-03-08)
8
+
9
+ * When serializing an Hash, check present of the key before trying string ([#57](https://github.com/petalmd/bright_serializer/pull/57))
10
+
11
+ ## 0.2.4 (2021-02-19)
12
+
13
+ * Try symbol and string keys when the object to serialize is an Hash ([#54](https://github.com/petalmd/bright_serializer/pull/54))
14
+
15
+ ## 0.2.3 (2021-01-04)
16
+
17
+ * Update dependencies ([v0.2.2...v0.2.3](https://github.com/petalmd/bright_serializer/compare/v0.2.2...v0.2.3))
18
+
19
+ ## 0.2.2 (2020-07-22)
20
+
21
+ * Run CI build on all supported Ruby versions ([#11](https://github.com/petalmd/bright_serializer/pull/11))
22
+ * Update Rubocop 0.78.0 => 0.88.0 and run auto-correction
23
+ * Deep transform entity keys ([#12](https://github.com/petalmd/bright_serializer/pull/12))
24
+
25
+ ## 0.2.1 (2020-07-21)
26
+
27
+ * Handle set_key_transform inherited from a parent serializer ([#10](https://github.com/petalmd/bright_serializer/pull/10))
28
+
7
29
  ## 0.2.0 (2020-07-17)
8
30
 
9
31
  * Add RubyGems version badge
10
32
  * Handle inherit from a parent serializer
11
- * Define entity in serializer for grape_swagger (#9)
33
+ * Define entity in serializer for grape_swagger ([#9](https://github.com/petalmd/bright_serializer/pull/9))
12
34
 
13
35
  ## 0.1.1 (2020-07-13)
14
36
 
data/Gemfile.lock CHANGED
@@ -1,52 +1,59 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bright_serializer (0.2.0)
4
+ bright_serializer (0.2.5)
5
5
  oj (~> 3)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- ast (2.4.0)
11
- concurrent-ruby (1.1.5)
10
+ ast (2.4.1)
11
+ concurrent-ruby (1.1.7)
12
12
  diff-lcs (1.4.4)
13
- faker (2.9.0)
14
- i18n (>= 1.6, < 1.8)
15
- i18n (1.7.0)
13
+ faker (2.15.1)
14
+ i18n (>= 1.6, < 2)
15
+ i18n (1.8.5)
16
16
  concurrent-ruby (~> 1.0)
17
- jaro_winkler (1.5.4)
18
- oj (3.10.0)
19
- parallel (1.19.1)
20
- parser (2.7.0.0)
21
- ast (~> 2.4.0)
17
+ oj (3.11.1)
18
+ parallel (1.20.1)
19
+ parser (3.0.0.0)
20
+ ast (~> 2.4.1)
22
21
  rainbow (3.0.0)
23
- rake (13.0.1)
24
- rspec (3.9.0)
25
- rspec-core (~> 3.9.0)
26
- rspec-expectations (~> 3.9.0)
27
- rspec-mocks (~> 3.9.0)
28
- rspec-core (3.9.2)
29
- rspec-support (~> 3.9.3)
30
- rspec-expectations (3.9.2)
22
+ rake (13.0.3)
23
+ regexp_parser (2.0.3)
24
+ rexml (3.2.4)
25
+ rspec (3.10.0)
26
+ rspec-core (~> 3.10.0)
27
+ rspec-expectations (~> 3.10.0)
28
+ rspec-mocks (~> 3.10.0)
29
+ rspec-core (3.10.0)
30
+ rspec-support (~> 3.10.0)
31
+ rspec-expectations (3.10.0)
31
32
  diff-lcs (>= 1.2.0, < 2.0)
32
- rspec-support (~> 3.9.0)
33
- rspec-mocks (3.9.1)
33
+ rspec-support (~> 3.10.0)
34
+ rspec-mocks (3.10.0)
34
35
  diff-lcs (>= 1.2.0, < 2.0)
35
- rspec-support (~> 3.9.0)
36
- rspec-support (3.9.3)
37
- rubocop (0.78.0)
38
- jaro_winkler (~> 1.5.1)
36
+ rspec-support (~> 3.10.0)
37
+ rspec-support (3.10.0)
38
+ rubocop (0.93.1)
39
39
  parallel (~> 1.10)
40
- parser (>= 2.6)
40
+ parser (>= 2.7.1.5)
41
41
  rainbow (>= 2.2.2, < 4.0)
42
+ regexp_parser (>= 1.8)
43
+ rexml
44
+ rubocop-ast (>= 0.6.0)
42
45
  ruby-progressbar (~> 1.7)
43
- unicode-display_width (>= 1.4.0, < 1.7)
44
- rubocop-performance (1.5.2)
45
- rubocop (>= 0.71.0)
46
- rubocop-rspec (1.37.1)
47
- rubocop (>= 0.68.1)
48
- ruby-progressbar (1.10.1)
49
- unicode-display_width (1.6.0)
46
+ unicode-display_width (>= 1.4.0, < 2.0)
47
+ rubocop-ast (1.4.0)
48
+ parser (>= 2.7.1.5)
49
+ rubocop-performance (1.9.2)
50
+ rubocop (>= 0.90.0, < 2.0)
51
+ rubocop-ast (>= 0.4.0)
52
+ rubocop-rspec (1.44.1)
53
+ rubocop (~> 0.87)
54
+ rubocop-ast (>= 0.7.1)
55
+ ruby-progressbar (1.11.0)
56
+ unicode-display_width (1.7.0)
50
57
 
51
58
  PLATFORMS
52
59
  ruby
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
30
30
  # Specify which files should be added to the gem when it is released.
31
31
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
32
32
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
33
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
33
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|.github)/}) }
34
34
  end
35
35
  spec.bindir = 'exe'
36
36
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
@@ -21,7 +21,7 @@ module BrightSerializer
21
21
  if @block
22
22
  @block.arity.abs == 1 ? object.instance_eval(&@block) : object.instance_exec(object, params, &@block)
23
23
  elsif object.is_a?(Hash)
24
- object[key]
24
+ object.key?(key) ? object[key] : object[key.to_s]
25
25
  else
26
26
  object.send(key)
27
27
  end
@@ -14,7 +14,7 @@ module BrightSerializer
14
14
  end
15
15
 
16
16
  def to_h
17
- @definition.transform_keys! { |k| Inflector.camel_lower k.to_s }
17
+ Inflector.deep_transform_keys_in_object!(@definition) { |k| Inflector.camel_lower k.to_s }
18
18
  parse_ref!
19
19
  @definition
20
20
  end
@@ -3,8 +3,7 @@
3
3
  module BrightSerializer
4
4
  module Entity
5
5
  class Parser
6
- attr_reader :model
7
- attr_reader :endpoint
6
+ attr_reader :model, :endpoint
8
7
 
9
8
  def initialize(model, endpoint)
10
9
  @model = model
@@ -59,5 +59,21 @@ class Inflector
59
59
  end
60
60
  end
61
61
  end
62
+
63
+ # File active_support/core_ext/hash/keys.rb, line 156
64
+ def deep_transform_keys_in_object!(object, &block)
65
+ case object
66
+ when Hash
67
+ object.keys.each do |key| # rubocop:disable Style/HashEachMethods
68
+ value = object.delete(key)
69
+ object[yield(key)] = deep_transform_keys_in_object!(value, &block)
70
+ end
71
+ object
72
+ when Array
73
+ object.map! { |e| deep_transform_keys_in_object!(e, &block) }
74
+ else
75
+ object
76
+ end
77
+ end
62
78
  end
63
79
  end
@@ -12,6 +12,7 @@ module BrightSerializer
12
12
  DEFAULT_OJ_OPTIONS = { mode: :compat, time_format: :ruby, use_to_json: true }.freeze
13
13
 
14
14
  def self.included(base)
15
+ super
15
16
  base.extend ClassMethods
16
17
  base.instance_variable_set(:@attributes_to_serialize, [])
17
18
  end
@@ -54,6 +55,7 @@ module BrightSerializer
54
55
  super
55
56
  subclass.instance_variable_set(:@attributes_to_serialize, []) unless subclass.attributes_to_serialize
56
57
  subclass.attributes_to_serialize.concat(@attributes_to_serialize)
58
+ subclass.instance_variable_set(:@transform_method, @transform_method) unless subclass.transform_method
57
59
  end
58
60
 
59
61
  def attributes(*attributes, **options, &block)
@@ -85,7 +87,8 @@ module BrightSerializer
85
87
  def entity
86
88
  {}.tap do |result|
87
89
  @attributes_to_serialize.each do |attribute|
88
- entity_value = attribute.entity&.to_h || BrightSerializer::Entity::Base::DEFAULT_DEFINITION
90
+ entity_value = attribute.entity&.to_h ||
91
+ BrightSerializer::Entity::Base::DEFAULT_DEFINITION
89
92
  result.merge!(attribute.transformed_key => entity_value)
90
93
  end
91
94
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BrightSerializer
4
- VERSION = '0.2.0'
4
+ VERSION = '0.2.5'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bright_serializer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean-Francis Bastien
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-07-17 00:00:00.000000000 Z
11
+ date: 2021-03-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oj
@@ -87,7 +87,6 @@ executables: []
87
87
  extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
- - ".github/workflows/build.yml"
91
90
  - ".gitignore"
92
91
  - ".rspec"
93
92
  - ".rubocop.yml"
@@ -1,23 +0,0 @@
1
- name: Build
2
-
3
- on: [push]
4
-
5
- jobs:
6
- build:
7
-
8
- runs-on: ubuntu-latest
9
-
10
- steps:
11
- - uses: actions/checkout@v1
12
- - name: Set up Ruby 2.7
13
- uses: actions/setup-ruby@v1
14
- with:
15
- ruby-version: 2.7
16
- - name: Bundle install
17
- run: |
18
- gem install bundler
19
- bundle install --jobs 4 --retry 3
20
- - name: Specs
21
- run: bundle exec rake
22
- - name: Rubocop
23
- run: bundle exec rubocop --parallel