panko_serializer 0.7.6 → 0.7.7

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.
@@ -48,7 +48,7 @@ void empty_write_attributes(VALUE obj, VALUE attributes, EachAttributeFunc func,
48
48
  VALUE writer) {}
49
49
 
50
50
  AttributesWriter create_empty_attributes_writer() {
51
- return (AttributesWriter){.object_type = Unknown,
51
+ return (AttributesWriter){.object_type = UnknownObjectType,
52
52
  .write_attributes = empty_write_attributes};
53
53
  }
54
54
 
@@ -7,7 +7,7 @@
7
7
  #include "plain.h"
8
8
  #include "hash.h"
9
9
 
10
- enum ObjectType { Unknown = 0, ActiveRecord = 1, Plain = 2, Hash = 3 };
10
+ enum ObjectType { UnknownObjectType = 0, ActiveRecord = 1, Plain = 2, Hash = 3 };
11
11
 
12
12
  typedef struct _AttributesWriter {
13
13
  enum ObjectType object_type;
@@ -49,7 +49,7 @@ SerializationDescriptor sd_read(VALUE descriptor) {
49
49
  }
50
50
 
51
51
  void sd_set_writer(SerializationDescriptor sd, VALUE object) {
52
- if (sd->attributes_writer.object_type != Unknown) {
52
+ if (sd->attributes_writer.object_type != UnknownObjectType) {
53
53
  return;
54
54
  }
55
55
 
@@ -75,7 +75,10 @@ module Panko
75
75
 
76
76
  def has_one(name, options = {})
77
77
  serializer_const = options[:serializer]
78
- serializer_const = Panko::SerializerResolver.resolve(name.to_s, self) if serializer_const.nil?
78
+ if serializer_const.kind_of?(String)
79
+ serializer_const = Panko::SerializerResolver.resolve(serializer_const, self)
80
+ end
81
+ serializer_const ||= Panko::SerializerResolver.resolve(name.to_s, self)
79
82
 
80
83
  raise "Can't find serializer for #{self.name}.#{name} has_one relationship." if serializer_const.nil?
81
84
 
@@ -88,7 +91,10 @@ module Panko
88
91
 
89
92
  def has_many(name, options = {})
90
93
  serializer_const = options[:serializer] || options[:each_serializer]
91
- serializer_const = Panko::SerializerResolver.resolve(name.to_s, self) if serializer_const.nil?
94
+ if serializer_const.kind_of?(String)
95
+ serializer_const = Panko::SerializerResolver.resolve(serializer_const, self)
96
+ end
97
+ serializer_const ||= Panko::SerializerResolver.resolve(name.to_s, self)
92
98
 
93
99
  raise "Can't find serializer for #{self.name}.#{name} has_many relationship." if serializer_const.nil?
94
100
 
@@ -13,6 +13,7 @@ class Panko::SerializerResolver
13
13
  end
14
14
 
15
15
  serializer_const ||= safe_serializer_get("#{name.singularize.camelize}Serializer")
16
+ serializer_const ||= safe_serializer_get(name)
16
17
  serializer_const
17
18
  end
18
19
 
data/lib/panko/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Panko
4
- VERSION = "0.7.6"
4
+ VERSION = "0.7.7"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: panko_serializer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.6
4
+ version: 0.7.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yosi Attias
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-21 00:00:00.000000000 Z
11
+ date: 2022-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oj
@@ -167,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
167
167
  - !ruby/object:Gem::Version
168
168
  version: '0'
169
169
  requirements: []
170
- rubygems_version: 3.2.20
170
+ rubygems_version: 3.1.4
171
171
  signing_key:
172
172
  specification_version: 4
173
173
  summary: High Performance JSON Serialization for ActiveRecord & Ruby Objects