avromatic 0.9.0.rc2 → 0.9.0.rc3

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
  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