avromatic 0.9.0.rc2 → 0.9.0.rc3

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
  SHA1:
3
- metadata.gz: 349bd4de9cfdaffd91c737ef6330d9b9d20ff8ed
4
- data.tar.gz: cc1b8f6f5275cea982902ce4ae5d055e504a69a5
3
+ metadata.gz: d494566e3d9e224fc731b7aacbfa179d53da3079
4
+ data.tar.gz: bd8c57dd841fac2aa38d3b577116738f11ab59ee
5
5
  SHA512:
6
- metadata.gz: a1d4474e40c761995be5512600d9e84f6f743501b9f496901900686058cd4e5190c78712723125bf66d3e7a571cc786ea579fcc91021bcf35506a88f7ef69be7
7
- data.tar.gz: 72e71deb56ff37c1f85a4c11b04d37f2672cc0d3b406ee574180257f690a6f7d057fe53250cfbd513610740120fe7e191d7d73970f7140be4c6b7b16d711c122
6
+ metadata.gz: b184df456bdd953ca9707304a098db1b739e55616e773dcddedb6b2e60a73fae937c2e91dac0649b3e523f06b73164116de4ff782e17e8a5b093366baed08289
7
+ data.tar.gz: 4d5021c10406881dfaf32d5392eef6fc87cd3c09667bb5a11e967717ee907b00d8456580810d0b362d7d63a6470c10c93b084e07dcb545969b5f3b7f086c6953
data/CHANGELOG.md CHANGED
@@ -4,6 +4,7 @@
4
4
  - Experimental: Add support for more than one non-null type in a union.
5
5
  - Allow nested models to be referenced and reused.
6
6
  - Fix the serialization of nested complex types.
7
+ - Add support for recursive models.
7
8
 
8
9
  ## v0.8.0
9
10
  - Add support for logical types. Currently this requires using the
@@ -21,6 +21,8 @@ module Avromatic
21
21
 
22
22
  module ClassMethods
23
23
  def add_avro_fields
24
+ register!
25
+
24
26
  if key_avro_schema
25
27
  check_for_field_conflicts!
26
28
  define_avro_attributes(key_avro_schema)
@@ -9,18 +9,25 @@ module Avromatic
9
9
 
10
10
  module ClassMethods
11
11
  def build_nested_model(schema)
12
- fullname = schema.fullname
12
+ fullname = nested_models.remove_prefix(schema.fullname)
13
13
 
14
14
  if nested_models.registered?(fullname)
15
15
  nested_models[fullname]
16
16
  else
17
17
  nested_model = Avromatic::Model.model(schema: schema,
18
- nested_models: nested_models)
18
+ nested_models: nested_models,
19
+ register: true)
19
20
  # Register the generated model with Axiom to prevent it being
20
21
  # treated as a BasicObject.
21
22
  # See https://github.com/solnic/virtus/issues/284#issuecomment-56405137
22
23
  Axiom::Types::Object.new { primitive(nested_model) }
23
- nested_models.register(nested_model)
24
+ end
25
+ end
26
+
27
+ # Register this model if it can be used as a nested model.
28
+ def register!
29
+ if key_avro_schema.nil? && value_avro_schema.type_sym == :record
30
+ nested_models.register(self)
24
31
  end
25
32
  end
26
33
  end
@@ -18,7 +18,7 @@ module Avromatic
18
18
  def register(model)
19
19
  raise 'models with a key schema are not supported' if model.key_avro_schema
20
20
  name = model.avro_schema.fullname
21
- name = remove_prefix(name) if @prefix
21
+ name = remove_prefix(name)
22
22
  @hash[name] = model
23
23
  end
24
24
 
@@ -26,13 +26,13 @@ module Avromatic
26
26
  @hash.key?(fullname)
27
27
  end
28
28
 
29
- private
30
-
31
29
  def remove_prefix(name)
30
+ return name if @prefix.nil?
31
+
32
32
  value =
33
33
  case @prefix
34
34
  when String
35
- name.from(@prefix.length) if name.start_with?(@prefix)
35
+ name.start_with?(@prefix) ? name.from(@prefix.length) : name
36
36
  when Regexp
37
37
  name.sub(@prefix, '')
38
38
  else
@@ -1,3 +1,3 @@
1
1
  module Avromatic
2
- VERSION = '0.9.0.rc2'.freeze
2
+ VERSION = '0.9.0.rc3'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avromatic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0.rc2
4
+ version: 0.9.0.rc3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Salsify Engineering
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-09-14 00:00:00.000000000 Z
11
+ date: 2016-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: avro