active_model_serializers_binary 0.0.25 → 0.1.5

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: a7e6176e80446184f50b715b1db5308f5d0555ff
4
- data.tar.gz: 2449dbbc3c428edf4c903968da0d048e89dad5a6
3
+ metadata.gz: 8867fc2c627dc2fe2e4e7c064bd1ed5ae721eb89
4
+ data.tar.gz: b096205753623930ad89c0c9dd4d308f3ff8ef19
5
5
  SHA512:
6
- metadata.gz: 89f0fd0d0312d221276908a5bff529f5815462782360f1b919caabe171a65e10ef435e4288e19e90962ce86f66e899c7b2914a37be9a74cfacf8e9f548fb65b1
7
- data.tar.gz: 1aa798e4988b906b44c8d13b0877f0d9ca9d9945878af76341adbd9f97021ad93b0814902f885b594fd8ab9c68fe946878f8360491a9223d2a41bfdb4095fc90
6
+ metadata.gz: c89aed42e8c94feb10867ee254dec8638e9ecae1ed8b414cef0792ec08e50e000d08dc99c0ea1e0356bbf1efc19b2a086b213efb63d4b69b69b07f8a9b148804
7
+ data.tar.gz: 7acb69425c7502733109d4200fb255951a93f5354d8cb2d3b6c1662948f521264d470099cab822e472593250aac36eeb4868a34e86a80077988c4c0b30258898
data/Gemfile.lock CHANGED
@@ -1,86 +1,80 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_model_serializers_binary (0.0.24)
5
- activemodel (~> 4.1)
4
+ active_model_serializers_binary (0.1.5)
5
+ activemodel (~> 5.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- actionmailer (4.1.4)
11
- actionpack (= 4.1.4)
12
- actionview (= 4.1.4)
13
- mail (~> 2.5.4)
14
- actionpack (4.1.4)
15
- actionview (= 4.1.4)
16
- activesupport (= 4.1.4)
17
- rack (~> 1.5.2)
18
- rack-test (~> 0.6.2)
19
- actionview (4.1.4)
20
- activesupport (= 4.1.4)
10
+ actioncable (5.0.0.1)
11
+ actionpack (= 5.0.0.1)
12
+ nio4r (~> 1.2)
13
+ websocket-driver (~> 0.6.1)
14
+ actionmailer (5.0.0.1)
15
+ actionpack (= 5.0.0.1)
16
+ actionview (= 5.0.0.1)
17
+ activejob (= 5.0.0.1)
18
+ mail (~> 2.5, >= 2.5.4)
19
+ rails-dom-testing (~> 2.0)
20
+ actionpack (5.0.0.1)
21
+ actionview (= 5.0.0.1)
22
+ activesupport (= 5.0.0.1)
23
+ rack (~> 2.0)
24
+ rack-test (~> 0.6.3)
25
+ rails-dom-testing (~> 2.0)
26
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
27
+ actionview (5.0.0.1)
28
+ activesupport (= 5.0.0.1)
21
29
  builder (~> 3.1)
22
30
  erubis (~> 2.7.0)
23
- activemodel (4.1.4)
24
- activesupport (= 4.1.4)
25
- builder (~> 3.1)
26
- activerecord (4.1.4)
27
- activemodel (= 4.1.4)
28
- activesupport (= 4.1.4)
29
- arel (~> 5.0.0)
30
- activesupport (4.1.4)
31
- i18n (~> 0.6, >= 0.6.9)
32
- json (~> 1.7, >= 1.7.7)
31
+ rails-dom-testing (~> 2.0)
32
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
33
+ activejob (5.0.0.1)
34
+ activesupport (= 5.0.0.1)
35
+ globalid (>= 0.3.6)
36
+ activemodel (5.0.0.1)
37
+ activesupport (= 5.0.0.1)
38
+ activerecord (5.0.0.1)
39
+ activemodel (= 5.0.0.1)
40
+ activesupport (= 5.0.0.1)
41
+ arel (~> 7.0)
42
+ activesupport (5.0.0.1)
43
+ concurrent-ruby (~> 1.0, >= 1.0.2)
44
+ i18n (~> 0.7)
33
45
  minitest (~> 5.1)
34
- thread_safe (~> 0.1)
35
46
  tzinfo (~> 1.1)
36
- annotate (2.6.5)
37
- activerecord (>= 2.3.0)
38
- rake (>= 0.8.7)
39
- arel (5.0.1.20140414130214)
40
- bcrypt (3.1.7)
47
+ annotate (2.7.1)
48
+ activerecord (>= 3.2, < 6.0)
49
+ rake (>= 10.4, < 12.0)
50
+ arel (7.1.1)
41
51
  builder (3.2.2)
42
52
  byebug (4.0.5)
43
53
  columnize (= 0.9.0)
44
54
  coderay (1.1.0)
45
- coffee-rails (4.0.1)
46
- coffee-script (>= 2.2.0)
47
- railties (>= 4.0.0, < 5.0)
48
- coffee-script (2.3.0)
49
- coffee-script-source
50
- execjs
51
- coffee-script-source (1.7.1)
52
55
  colorize (0.7.3)
53
56
  columnize (0.9.0)
54
- devise (3.2.4)
55
- bcrypt (~> 3.0)
56
- orm_adapter (~> 0.1)
57
- railties (>= 3.2.6, < 5)
58
- thread_safe (~> 0.1)
59
- warden (~> 1.2.3)
57
+ concurrent-ruby (1.0.2)
60
58
  erubis (2.7.0)
61
- execjs (2.2.1)
62
- hike (1.2.3)
63
- i18n (0.6.11)
59
+ globalid (0.3.7)
60
+ activesupport (>= 4.1.0)
61
+ i18n (0.7.0)
64
62
  interception (0.5)
65
- jbuilder (1.5.3)
66
- activesupport (>= 3.0.0)
67
- multi_json (>= 1.2.0)
68
- jquery-ui-rails (4.2.1)
69
- railties (>= 3.2.16)
70
- jquery-validation-rails (1.12.0)
71
- railties (>= 3.2, < 5.0)
72
- thor (~> 0.14)
73
- json (1.8.3)
74
- libv8 (3.16.14.3)
75
- mail (2.5.4)
76
- mime-types (~> 1.16)
77
- treetop (~> 1.4.8)
63
+ loofah (2.0.3)
64
+ nokogiri (>= 1.5.9)
65
+ mail (2.6.4)
66
+ mime-types (>= 1.16, < 4)
78
67
  method_source (0.8.2)
79
- mime-types (1.25.1)
80
- minitest (5.4.0)
81
- multi_json (1.10.1)
82
- orm_adapter (0.5.0)
83
- polyglot (0.3.5)
68
+ mime-types (3.1)
69
+ mime-types-data (~> 3.2015)
70
+ mime-types-data (3.2016.0521)
71
+ mini_portile2 (2.1.0)
72
+ minitest (5.9.0)
73
+ nio4r (1.2.1)
74
+ nokogiri (1.6.8)
75
+ mini_portile2 (~> 2.1.0)
76
+ pkg-config (~> 1.1.7)
77
+ pkg-config (1.1.7)
84
78
  pry (0.10.1)
85
79
  coderay (~> 1.1.0)
86
80
  method_source (~> 0.8.1)
@@ -96,61 +90,49 @@ GEM
96
90
  pry-rescue (1.4.2)
97
91
  interception (>= 0.5)
98
92
  pry
99
- rack (1.5.2)
100
- rack-test (0.6.2)
93
+ rack (2.0.1)
94
+ rack-test (0.6.3)
101
95
  rack (>= 1.0)
102
- rails (4.1.4)
103
- actionmailer (= 4.1.4)
104
- actionpack (= 4.1.4)
105
- actionview (= 4.1.4)
106
- activemodel (= 4.1.4)
107
- activerecord (= 4.1.4)
108
- activesupport (= 4.1.4)
96
+ rails (5.0.0.1)
97
+ actioncable (= 5.0.0.1)
98
+ actionmailer (= 5.0.0.1)
99
+ actionpack (= 5.0.0.1)
100
+ actionview (= 5.0.0.1)
101
+ activejob (= 5.0.0.1)
102
+ activemodel (= 5.0.0.1)
103
+ activerecord (= 5.0.0.1)
104
+ activesupport (= 5.0.0.1)
109
105
  bundler (>= 1.3.0, < 2.0)
110
- railties (= 4.1.4)
111
- sprockets-rails (~> 2.0)
112
- railties (4.1.4)
113
- actionpack (= 4.1.4)
114
- activesupport (= 4.1.4)
106
+ railties (= 5.0.0.1)
107
+ sprockets-rails (>= 2.0.0)
108
+ rails-dom-testing (2.0.1)
109
+ activesupport (>= 4.2.0, < 6.0)
110
+ nokogiri (~> 1.6.0)
111
+ rails-html-sanitizer (1.0.3)
112
+ loofah (~> 2.0)
113
+ railties (5.0.0.1)
114
+ actionpack (= 5.0.0.1)
115
+ activesupport (= 5.0.0.1)
116
+ method_source
115
117
  rake (>= 0.8.7)
116
118
  thor (>= 0.18.1, < 2.0)
117
- rake (10.3.2)
118
- ref (1.0.5)
119
- sass (3.2.19)
120
- sass-rails (4.0.3)
121
- railties (>= 4.0.0, < 5.0)
122
- sass (~> 3.2.0)
123
- sprockets (~> 2.8, <= 2.11.0)
124
- sprockets-rails (~> 2.0)
119
+ rake (10.5.0)
125
120
  slop (3.6.0)
126
- sprockets (2.11.0)
127
- hike (~> 1.2)
128
- multi_json (~> 1.0)
129
- rack (~> 1.0)
130
- tilt (~> 1.1, != 1.3.0)
131
- sprockets-rails (2.1.3)
132
- actionpack (>= 3.0)
133
- activesupport (>= 3.0)
134
- sprockets (~> 2.8)
135
- sqlite3 (1.3.9)
136
- therubyracer (0.12.1)
137
- libv8 (~> 3.16.14.0)
138
- ref
121
+ sprockets (3.7.0)
122
+ concurrent-ruby (~> 1.0)
123
+ rack (> 1, < 3)
124
+ sprockets-rails (3.2.0)
125
+ actionpack (>= 4.0)
126
+ activesupport (>= 4.0)
127
+ sprockets (>= 3.0.0)
128
+ sqlite3 (1.3.11)
139
129
  thor (0.19.1)
140
- thread_safe (0.3.4)
141
- tilt (1.4.1)
142
- treetop (1.4.15)
143
- polyglot
144
- polyglot (>= 0.3.1)
145
- turbolinks (2.2.2)
146
- coffee-rails
147
- tzinfo (1.2.1)
130
+ thread_safe (0.3.5)
131
+ tzinfo (1.2.2)
148
132
  thread_safe (~> 0.1)
149
- uglifier (1.3.0)
150
- execjs (>= 0.3.0)
151
- multi_json (~> 1.0, >= 1.0.2)
152
- warden (1.2.3)
153
- rack (>= 1.0)
133
+ websocket-driver (0.6.4)
134
+ websocket-extensions (>= 0.1.0)
135
+ websocket-extensions (0.1.2)
154
136
  yard (0.8.7.6)
155
137
 
156
138
  PLATFORMS
@@ -160,24 +142,15 @@ DEPENDENCIES
160
142
  active_model_serializers_binary!
161
143
  annotate
162
144
  bundler (~> 1.6)
163
- coffee-rails (~> 4.0)
164
145
  colorize (~> 0.7)
165
- devise (~> 3.2)
166
- jbuilder (~> 1.2)
167
- jquery-ui-rails (~> 4.2)
168
- jquery-validation-rails (~> 1.12)
169
146
  pry
170
147
  pry-byebug
171
148
  pry-doc
172
149
  pry-rails
173
150
  pry-rescue
174
- rails (~> 4.1)
151
+ rails (~> 5.0)
175
152
  rake (~> 10.3)
176
- sass-rails (~> 4.0)
177
- sqlite3 (~> 1.3)
178
- therubyracer (~> 0.12)
179
- turbolinks (~> 2.2)
180
- uglifier (~> 1.3)
153
+ sqlite3
181
154
 
182
155
  BUNDLED WITH
183
- 1.11.2
156
+ 1.15.3
@@ -21,19 +21,19 @@ Gem::Specification.new do |s|
21
21
 
22
22
  s.add_development_dependency "bundler", "~> 1.6"
23
23
  s.add_development_dependency "rake", "~> 10.3"
24
- s.add_development_dependency "sqlite3", "~> 1.3"
25
- s.add_development_dependency "rails", "~> 4.1"
24
+ s.add_development_dependency "sqlite3"
25
+ s.add_development_dependency "rails", "~> 5.0"
26
26
 
27
- s.add_development_dependency 'devise', '~> 3.2'
28
- s.add_development_dependency 'jquery-ui-rails', '~> 4.2'
29
- s.add_development_dependency 'sass-rails', '~> 4.0'
30
- s.add_development_dependency 'uglifier', '~> 1.3'
31
- s.add_development_dependency 'coffee-rails', '~> 4.0'
32
- s.add_development_dependency 'turbolinks', "~> 2.2"
33
- s.add_development_dependency 'jbuilder', '~> 1.2'
34
- s.add_development_dependency 'jquery-validation-rails', '~> 1.12'
35
- s.add_development_dependency 'therubyracer', '~> 0.12'
27
+ #s.add_development_dependency 'devise', '~> 3.2'
28
+ #s.add_development_dependency 'jquery-ui-rails', '~> 4.2'
29
+ #s.add_development_dependency 'sass-rails', '~> 4.0'
30
+ #s.add_development_dependency 'uglifier', '~> 1.3'
31
+ #s.add_development_dependency 'coffee-rails', '~> 4.0'
32
+ #s.add_development_dependency 'turbolinks', "~> 2.2"
33
+ #s.add_development_dependency 'jbuilder', '~> 1.2'
34
+ #s.add_development_dependency 'jquery-validation-rails', '~> 1.12'
35
+ #s.add_development_dependency 'therubyracer', '~> 0.12'
36
36
  s.add_development_dependency "colorize", '~> 0.7'
37
37
 
38
- s.add_dependency "activemodel", "~> 4.1"
38
+ s.add_dependency "activemodel", "~> 5.0"
39
39
  end
@@ -17,62 +17,99 @@ module ActiveModel
17
17
  self.attr_config = {}
18
18
 
19
19
  def attributes
20
- keys = self.attr_config.select{|k, v| v[:virtual]==true}.keys
20
+ keys = self.attr_config.select{ |k, v| v[:virtual]==true }.keys
21
21
  values = keys.map{ |var| self.instance_variable_get("@#{var}") }
22
- super.merge(Hash[keys.zip values])
22
+ (super rescue {}).merge(Hash[keys.zip values])
23
23
  end
24
+
25
+ def initialize( *args )
26
+ super rescue super()
27
+ initialize_serializer
28
+ end
29
+
30
+ def initialize_serializer
31
+ self.class.add_virtual_attributes self
32
+ end
33
+
34
+ after_initialize :initialize_serializer rescue nil
24
35
  end
25
36
 
26
37
  module ClassMethods
38
+ def add_virtual_attributes( instance )
39
+ self.attr_config.each{ |k, v| add_virtual_attribute(instance, k, v) }
40
+ end
41
+
42
+ def add_virtual_attribute( instance, attr_name, attr_value )
43
+ attr_name = attr_name.to_s
44
+ if attr_value[:virtual] == true
45
+ true
46
+ else
47
+ if !instance.respond_to? attr_name
48
+ attr_value[:virtual] = true
49
+ attr_accessor attr_name
50
+ true
51
+ else
52
+ false
53
+ end
54
+ end
55
+ end
56
+
27
57
  # todo: agrupar parametros en hash (rompe la compatibilidad hacia atras)
28
- def serialize_options(attr_name, coder, count=1, length=1, virtual=false, &block )
29
- attr_accessor(attr_name) if virtual
58
+ def serialize_options( attr_name, coder, count=1, length=1, virtual=false, &block )
30
59
  self.attr_config.merge!(attr_name.to_s => {:coder => coder, :count => count, :length => length, :block => block, :name => attr_name, :virtual => virtual})
31
60
  end
32
61
 
62
+ def serialize_attribute_options( attr_name, options, &block )
63
+ self.attr_config.merge!(attr_name.to_s => options.merge({ block: block }))
64
+ end
65
+
33
66
  def int8( attr_name, options = {}, &block )
34
- serialize_options attr_name, DataTypes::Int8, options[:count], options[:length], options[:virtual], &block
67
+ serialize_attribute_options attr_name, options.merge({coder: DataTypes::Int8}), &block
35
68
  end
36
69
 
37
70
  def int16( attr_name, options = {}, &block )
38
- serialize_options attr_name, DataTypes::Int16, options[:count], options[:length], options[:virtual], &block
71
+ serialize_attribute_options attr_name, options.merge({coder: DataTypes::Int16}), &block
39
72
  end
40
73
 
41
74
  def int32( attr_name, options = {}, &block )
42
- serialize_options attr_name, DataTypes::Int32, options[:count], options[:length], options[:virtual], &block
75
+ serialize_attribute_options attr_name, options.merge({coder: DataTypes::Int32}), &block
43
76
  end
44
77
 
45
78
  def uint8( attr_name, options = {}, &block )
46
- serialize_options attr_name, DataTypes::UInt8, options[:count], options[:length], options[:virtual], &block
79
+ serialize_attribute_options attr_name, options.merge({coder: DataTypes::UInt8}), &block
47
80
  end
48
81
 
49
82
  def uint16( attr_name, options = {}, &block )
50
- serialize_options attr_name, DataTypes::UInt16, options[:count], options[:length], options[:virtual], &block
83
+ serialize_attribute_options attr_name, options.merge({coder: DataTypes::UInt16}), &block
51
84
  end
52
85
 
53
86
  def uint32( attr_name, options = {}, &block )
54
- serialize_options attr_name, DataTypes::UInt32, options[:count], options[:length], options[:virtual], &block
87
+ serialize_attribute_options attr_name, options.merge({coder: DataTypes::UInt32}), &block
55
88
  end
56
89
 
57
90
  def bitfield( attr_name, options = {}, &block )
58
- serialize_options attr_name, DataTypes::BitField, options[:count], options[:length], options[:virtual], &block
91
+ serialize_attribute_options attr_name, options.merge({coder: DataTypes::BitField}), &block
59
92
  end
60
93
 
61
94
  def float32( attr_name, options = {}, &block )
62
- serialize_options attr_name, DataTypes::Float32, options[:count], options[:length], options[:virtual], &block
95
+ serialize_attribute_options attr_name, options.merge({coder: DataTypes::Float32}), &block
63
96
  end
64
97
 
65
98
  def char( attr_name, options = {}, &block )
66
- serialize_options attr_name, DataTypes::Char, options[:count], options[:length], options[:virtual], &block
99
+ serialize_attribute_options attr_name, options.merge({coder: DataTypes::Char}), &block
67
100
  end
68
101
 
69
102
  def bool( attr_name, options = {}, &block )
70
- serialize_options attr_name, DataTypes::Bool, options[:count], options[:length], options[:virtual], &block
103
+ serialize_attribute_options attr_name, options.merge({coder: DataTypes::Bool}), &block
104
+ end
105
+
106
+ def nest( attr_name, options={}, &block )
107
+ serialize_attribute_options attr_name, options.merge({type: :nest}), &block
71
108
  end
72
109
  end
73
110
 
74
111
  class Serializer #:nodoc:
75
- attr_reader :options
112
+ #attr_reader :options
76
113
 
77
114
  def initialize(serializable, options = nil)
78
115
  @serializable = serializable
@@ -80,24 +117,28 @@ module ActiveModel
80
117
  end
81
118
 
82
119
  def dump
83
- serializable_values = @serializable.serializable_hash(options)
120
+ serializable_values = @serializable.serializable_hash(@options)
84
121
  start_address = @options[:start_address] || 0
85
122
 
86
- buffer = [] # Buffer en bytes
87
- tmp_buffer = [] # Buffer temporal en bytes
88
- current_address = start_address*2 + 0.0 # Dirección en bytes
123
+ buffer = [] # Data Buffer
124
+ tmp_buffer = [] # Aux Data Buffer
125
+ current_address = start_address*2 + 0.0 # Address in bytes
89
126
 
90
- @serializable.attr_config.each do |key, options|
91
- var = options[:coder].new(options.merge(parent: @serializable))
92
- # Busca el valor del atributo y si no existe devuelve nil
93
- var.value = serializable_values[key] rescue nil
127
+ @serializable.attr_config.each do |attr_name, attr_options|
128
+ if attr_options[:type] != :nest
129
+ var = attr_options[:coder].new(attr_options.merge(parent: @serializable))
130
+ var.value = serializable_values[attr_name] rescue nil
131
+ else
132
+ var = attr_options[:coder].new(serializable_values[attr_name].attributes)
133
+ end
94
134
 
95
135
  byte = current_address.floor
96
136
  bit = (current_address.modulo(1)*8).round
97
137
 
98
138
  tmp_buffer = var.dump
139
+
99
140
  if @options[:align]
100
- if !var.type.in? [:bitfield, :bool]
141
+ if !attr_options[:type].in? [:bitfield, :bool, :nest]
101
142
  # Se posiciona al principio de un byte
102
143
  if bit != 0
103
144
  byte += 1
@@ -118,7 +159,7 @@ module ActiveModel
118
159
  end
119
160
 
120
161
  # Si los datos ocupan mas de un byte concatena los arrays
121
- if !var.type.in? [:bitfield, :bool] and @options[:align]
162
+ if !attr_options[:type].in? [:bitfield, :bool] and @options[:align]
122
163
  buffer.insert(byte, tmp_buffer).flatten!
123
164
  else # En caso de ser bits
124
165
  tmp_buffer.flatten!
@@ -145,14 +186,14 @@ module ActiveModel
145
186
 
146
187
  current_address = start_address*2 + 0.0 # Dirección en bytes
147
188
 
148
- @serializable.attr_config.each do |key, options|
189
+ @serializable.attr_config.each do |attr, attr_options|
149
190
  byte = current_address.floor
150
191
  bit = (current_address.modulo(1)*8).round
151
192
 
152
- var = options[:coder].new(options.merge(parent: @serializable)) #creo objeto del tipo de dato pasado
193
+ var = attr_options[:coder].new(attr_options.merge(parent: @serializable)) #creo objeto del tipo de dato pasado
153
194
 
154
195
  if @options[:align]
155
- if !var.type.in? [:bitfield, :bool]
196
+ if !attr_options[:type].in? [:bitfield, :bool, :nest]
156
197
  # Se posiciona al principio de un byte
157
198
  if bit != 0
158
199
  byte += 1
@@ -173,27 +214,67 @@ module ActiveModel
173
214
  end
174
215
 
175
216
  # Si los datos ocupan mas de un byte, obtiene los bytes completos del buffer original
176
- if var.bit_length >= 8 and @options[:align]
217
+ if !attr_options[:type].in? [:bitfield, :bool] and @options[:align]
177
218
  result_deserialized=var.load(buffer.slice(byte, var.size))
178
219
  else # En caso de ser bits
179
220
  tmp_buffer = buffer.slice(byte, (var.size+bit/8.0).ceil)
180
221
  result_deserialized=var.load([tmp_buffer.pack('C*').unpack('b*').first.slice(bit,var.size*8)].pack('b*').unpack('C*'))
181
222
  end
182
- serialized_values["#{key}"] = result_deserialized.count>1 ? result_deserialized : result_deserialized.first
223
+
224
+ if attr_options[:type] == :nest
225
+ serialized_values["#{attr}"] = result_deserialized
226
+ else
227
+ serialized_values["#{attr}"] = result_deserialized.count>1 ? result_deserialized : result_deserialized.first
228
+ end
183
229
  current_address = (byte+bit/8.0)+var.size
184
230
  end
185
231
 
186
232
  # Asigno los datos leidos
187
233
  serialized_values.each do |k,v|
188
- if @serializable.respond_to? "#{k}="
189
- @serializable.send("#{k}=", v)
190
- else
191
- @serializable.instance_variable_set("@#{k}".to_sym, v)
192
- end
234
+ @serializable.send("#{k}=", v)
193
235
  end
194
236
  @serializable
195
237
  end
196
238
 
239
+ # Return size of object in bytes
240
+ def size
241
+ serializable_values = @serializable.serializable_hash(@options)
242
+ start_address = @options[:start_address] || 0
243
+
244
+ current_address = 0.0 # Dirección en bytes
245
+
246
+ @serializable.attr_config.each do |attr_name, attr_options|
247
+ var = attr_options[:coder].new(attr_options.merge(parent: @serializable))
248
+
249
+ byte = current_address.floor
250
+ bit = (current_address.modulo(1)*8).round
251
+
252
+ if @options[:align]
253
+ if !attr_options[:type].in? [:bitfield, :bool, :nest]
254
+ # Se posiciona al principio de un byte
255
+ if bit != 0
256
+ byte += 1
257
+ bit = 0
258
+ current_address = (byte+bit/8.0)
259
+ end
260
+ # Si el dato es una palabra simple, alinea los datos en el siguiente byte par
261
+ if var.bit_length > 8 and current_address.modulo(2) != 0
262
+ byte += 1
263
+ bit = 0
264
+ end
265
+ # Si el dato es una palabra doble, alinea los datos en la siguiente palabra par
266
+ if var.bit_length > 16 and (current_address + start_address*2).modulo(4) != 0
267
+ byte += 4-byte%4
268
+ bit = 0
269
+ end
270
+ end
271
+ end
272
+
273
+ current_address = (byte+bit/8.0)+var.size
274
+ end
275
+ current_address-start_address
276
+ end
277
+
197
278
  end #close class serializer
198
279
 
199
280
  # Returns a binary array representing the model. Configuration can be
@@ -215,6 +296,8 @@ module ActiveModel
215
296
  Serializer.new(self, options).dump
216
297
  end
217
298
 
299
+ alias_method :dump, :to_bytes
300
+
218
301
  def to_words(options = {}, &block)
219
302
  data = to_bytes(options, &block)
220
303
  byte_count = (data.count/2.0).ceil*2
@@ -270,11 +353,21 @@ module ActiveModel
270
353
  retVal
271
354
  end
272
355
 
356
+ alias_method :load, :from_bytes
357
+
273
358
  def from_words(buffer = [], options = {}, &block)
274
359
  data = buffer.pack('v*').unpack('C*')
275
360
  from_bytes(data, options, &block)
276
361
  end
277
362
 
363
+ def size(options = {})
364
+ default_options = {
365
+ :align => true
366
+ }
367
+ options = default_options.deep_merge(options)
368
+ Serializer.new(self, options).size
369
+ end
370
+
278
371
  end
279
372
  end
280
373
  end
@@ -1,6 +1,6 @@
1
1
  module DataTypes
2
2
 
3
- class Type
3
+ class BaseType
4
4
 
5
5
  attr_accessor :raw_value, :bit_length, :type, :sign, :count, :length, :value, :name, :parent
6
6
 
@@ -53,6 +53,8 @@ module DataTypes
53
53
  v.to_s[0...length]
54
54
  when :bool
55
55
  (v.in? [1, true]) ? true : false
56
+ when :nest
57
+ v
56
58
  else
57
59
  v.to_i
58
60
  end
@@ -78,7 +80,7 @@ module DataTypes
78
80
  def check_raw_value(value)
79
81
  check(value, {
80
82
  :type => :uint8,
81
- :count => size,
83
+ :count => (size < 1 ? 1 : size),
82
84
  :length => 1,
83
85
  :bit_length => 8,
84
86
  :sign => :unsigned,
@@ -2,88 +2,88 @@ require_relative 'base_type.rb'
2
2
 
3
3
  module DataTypes
4
4
 
5
- class Int8 < Type
5
+ class Int8 < BaseType
6
6
  def initialize(options = {})
7
7
  super options.merge :bit_length => 8, :sign => :signed
8
8
  end
9
9
 
10
10
  def dump(value=nil)
11
- before_dump( value )
11
+ before_dump( value ).pack('c*').unpack('C*')
12
12
  @raw_value = @value
13
13
  end
14
14
 
15
15
  def load(raw_value)
16
- self.value = check_raw_value(raw_value)
16
+ self.value = check_raw_value(raw_value).pack('C*').unpack('c*')
17
17
  after_load
18
18
  end
19
19
  end
20
20
 
21
- class Int16 < Type
21
+ class Int16 < BaseType
22
22
  def initialize(options = {})
23
23
  super options.merge :bit_length => 16, :sign => :signed
24
24
  end
25
25
 
26
26
  def dump(value=nil)
27
27
  before_dump( value )
28
- @raw_value = @value.pack('v*').unpack('C*')
28
+ @raw_value = @value.pack('s<*').unpack('C*')
29
29
  end
30
30
 
31
31
  def load(raw_value)
32
- self.value = check_raw_value(raw_value).pack('C*').unpack('v*')
32
+ self.value = check_raw_value(raw_value).pack('C*').unpack('s<*')
33
33
  after_load
34
34
  end
35
35
  end
36
36
 
37
- class Int32 < Type
37
+ class Int32 < BaseType
38
38
  def initialize(options = {})
39
39
  super options.merge :bit_length => 32, :sign => :signed
40
40
  end
41
41
 
42
42
  def dump(value=nil)
43
43
  before_dump( value )
44
- @raw_value = @value.pack('V*').unpack('C*')
44
+ @raw_value = @value.pack('l<*').unpack('C*')
45
45
  end
46
46
 
47
47
  def load(raw_value)
48
- self.value = check_raw_value(raw_value).pack('C*').unpack('V*') if !value.nil?
48
+ self.value = check_raw_value(raw_value).pack('C*').unpack('l<*') if !value.nil?
49
49
  after_load
50
50
  end
51
51
  end
52
52
 
53
- class UInt16 < Type
53
+ class UInt16 < BaseType
54
54
  def initialize(options = {})
55
55
  super options.merge :bit_length => 16, :sign => :unsigned
56
56
  end
57
57
 
58
58
  def dump(value=nil)
59
59
  before_dump( value )
60
- @raw_value = @value.pack('v*').unpack('C*')
60
+ @raw_value = @value.pack('S<*').unpack('C*')
61
61
  end
62
62
 
63
- def load(raw_value)
63
+ def load(raw_value)
64
64
  @raw_value = check_raw_value(raw_value)
65
- self.value = @raw_value.pack('C*').unpack('v*')
65
+ self.value = @raw_value.pack('C*').unpack('S<*')
66
66
  after_load
67
67
  end
68
68
  end
69
69
 
70
- class UInt32 < Type
70
+ class UInt32 < BaseType
71
71
  def initialize(options = {})
72
72
  super options.merge :bit_length => 32, :sign => :unsigned
73
73
  end
74
74
 
75
75
  def dump(value=nil)
76
76
  before_dump( value )
77
- @raw_value = @value.pack('l*').unpack('C*')
77
+ @raw_value = @value.pack('L<*').unpack('C*')
78
78
  end
79
79
 
80
80
  def load(raw_value)
81
- self.value = check_raw_value(raw_value).pack('C*').unpack('l*') if !value.nil?
81
+ self.value = check_raw_value(raw_value).pack('C*').unpack('L<*') if !value.nil?
82
82
  after_load
83
83
  end
84
84
  end
85
85
 
86
- class UInt8 < Type
86
+ class UInt8 < BaseType
87
87
  def initialize(options = {})
88
88
  super options.merge :bit_length => 8, :sign => :unsigned
89
89
  end
@@ -99,9 +99,9 @@ module DataTypes
99
99
  end
100
100
  end
101
101
 
102
- class BitField < Type
102
+ class BitField < BaseType
103
103
  def initialize(options = {})
104
- length = 32 if length > 32
104
+ length = options[:bin_length].blank? ? 1 : (options[:bin_length] > 32 ? 32 : options[:bin_length])
105
105
  super options.merge :bit_length => length, :sign => :unsigned
106
106
  end
107
107
 
@@ -137,7 +137,7 @@ module DataTypes
137
137
  end
138
138
  end
139
139
 
140
- class Char < Type
140
+ class Char < BaseType
141
141
  def initialize(options = {})
142
142
  super options.merge :bit_length => 8, :sign => nil, :default_value => "\x0"
143
143
  end
@@ -153,7 +153,7 @@ module DataTypes
153
153
  end
154
154
  end
155
155
 
156
- class Bool < Type
156
+ class Bool < BaseType
157
157
  def initialize(options = {})
158
158
  super options.merge :bit_length => 1, :default_value => false
159
159
  end
@@ -169,7 +169,7 @@ module DataTypes
169
169
  end
170
170
  end
171
171
 
172
- class Float32 < Type
172
+ class Float32 < BaseType
173
173
  def initialize(options = {})
174
174
  super options.merge :bit_length => 32, :sign => nil, :default_value => 0.0
175
175
  end
@@ -1,3 +1,3 @@
1
1
  module ActiveModelSerializersBinary
2
- VERSION = "0.0.25"
2
+ VERSION = "0.1.5"
3
3
  end
@@ -5,12 +5,12 @@
5
5
  # id :integer not null, primary key
6
6
  # uid :integer
7
7
  # silo :integer
8
- # nombre :string(255)
8
+ # nombre :string
9
9
  # total_acumulado :integer
10
10
  # bits1 :boolean
11
11
  # bits2 :boolean
12
12
  # ffloat :float
13
- # variable :string(255)
13
+ # variable :string
14
14
  # created_at :datetime
15
15
  # updated_at :datetime
16
16
  #
@@ -18,29 +18,6 @@
18
18
  class Producto < ActiveRecord::Base
19
19
  include ActiveModel::Serializers::Binary
20
20
 
21
- int16 :uid
22
- int16 :silo
23
21
  char :nombre, count: 1, length: 20
24
- int32 :total_acumulado
25
- bool :bits1
26
- bool :bits2
27
- bool :bits3, virtual: true
28
- bool :bits4, virtual: true
29
- bool :bits5, virtual: true
30
- bool :bits6, virtual: true
31
- bool :bits7, virtual: true
32
- bool :bits8, virtual: true
33
- bool :bits9, virtual: true
34
- bool :bits10, virtual: true
35
- bool :bits11, virtual: true
36
- bool :bits12, virtual: true
37
- bool :bits13, virtual: true
38
- bool :bits14, virtual: true
39
- bool :bits15, virtual: true
40
- bool :bits16, virtual: true
41
- float32 :ffloat
42
- char :variable, count: 1, length: 20 do |field, mode|
43
- puts (mode.to_s + ': variable block').blue
44
- end
45
- int32 :test, count: 10, virtual: true # No existe en la DB
22
+ nest :tipo, coder: Tipo
46
23
  end
@@ -0,0 +1,18 @@
1
+ # == Schema Information
2
+ #
3
+ # Table name: tipos
4
+ #
5
+ # id :integer not null, primary key
6
+ # name :string
7
+ # producto_id :integer
8
+ # created_at :datetime not null
9
+ # updated_at :datetime not null
10
+ #
11
+
12
+ class Tipo < ActiveRecord::Base
13
+ include ActiveModel::Serializers::Binary
14
+
15
+ int16 :producto_id
16
+ char :name, count: 1, length: 20
17
+
18
+ end
@@ -14,7 +14,7 @@ Rails.application.configure do
14
14
 
15
15
  # Configure static asset server for tests with Cache-Control for performance.
16
16
  config.serve_static_assets = true
17
- config.static_cache_control = 'public, max-age=3600'
17
+ config.public_file_server.headers = { 'Cache-Control' => 'public, max-age=3600' }
18
18
 
19
19
  # Show full error reports and disable caching.
20
20
  config.consider_all_requests_local = true
@@ -0,0 +1,9 @@
1
+ class CreateTipos < ActiveRecord::Migration[5.0]
2
+ def change
3
+ create_table :tipos do |t|
4
+ t.string :name
5
+
6
+ t.timestamps
7
+ end
8
+ end
9
+ end
@@ -1,4 +1,3 @@
1
- # encoding: UTF-8
2
1
  # This file is auto-generated from the current state of the database. Instead
3
2
  # of editing this file, please use the migrations feature of Active Record to
4
3
  # incrementally modify your database, and then regenerate this schema definition.
@@ -11,9 +10,9 @@
11
10
  #
12
11
  # It's strongly recommended that you check this file into your version control system.
13
12
 
14
- ActiveRecord::Schema.define(version: 20160608024807) do
13
+ ActiveRecord::Schema.define(version: 20170817015810) do
15
14
 
16
- create_table "productos", force: true do |t|
15
+ create_table "productos", force: :cascade do |t|
17
16
  t.integer "uid"
18
17
  t.integer "silo"
19
18
  t.string "nombre"
@@ -26,4 +25,12 @@ ActiveRecord::Schema.define(version: 20160608024807) do
26
25
  t.datetime "updated_at"
27
26
  end
28
27
 
28
+ create_table "tipos", force: :cascade do |t|
29
+ t.string "name"
30
+ t.integer "producto_id"
31
+ t.datetime "created_at", null: false
32
+ t.datetime "updated_at", null: false
33
+ t.index ["producto_id"], name: "index_tipos_on_producto_id"
34
+ end
35
+
29
36
  end
@@ -8,42 +8,21 @@ class String
8
8
  end
9
9
 
10
10
  orig = Producto.new
11
- orig.uid = 1
12
- orig.silo = 0
13
- orig.nombre = "MAIZ"
14
- orig.total_acumulado = 50
15
- orig.bits1 = 1
16
- orig.bits2 = 0
17
- orig.bits3 = nil
18
- orig.bits4 = nil
19
- orig.bits5 = nil
20
- orig.bits6 = nil
21
- orig.bits7 = nil
22
- orig.bits8 = nil
23
- orig.bits9 = nil
24
- orig.bits10 = nil
25
- orig.bits11 = nil
26
- orig.bits12 = nil
27
- orig.bits13 = nil
28
- orig.bits14 = nil
29
- orig.bits15 = nil
30
- orig.bits16 = nil
31
- orig.ffloat= 1.2345678
32
- orig.variable = '012345678901234567890123456789'
33
- orig.test = (1..10).to_a
11
+ orig.nombre = "AAAAAAAAAAAAAAAAAAAA"
12
+ orig.tipo = Tipo.new({name:"BBBBBBBBBBBBBBBBBBBB", producto_id: 0x55AA})
34
13
 
35
14
  puts 'Datos originales...'
36
15
  puts orig.inspect.green
37
16
 
38
17
  puts 'serializando...'
39
- serial = orig.to_bytes do |b|
40
- puts 'to_bytes block'.blue
41
- end
18
+ serial = orig.to_bytes
42
19
 
43
20
  puts serial.inspect.yellow
44
21
 
45
22
  puts 'deserializando...'
46
- deser = Producto.new.from_bytes serial do |b|
47
- puts 'from_bytes block'.blue
48
- end
49
- puts deser.inspect.green
23
+ deser = Producto.new.from_bytes serial
24
+ puts deser.inspect.green
25
+
26
+ must_be_equal = (serial <=> deser.to_bytes) === 0
27
+ puts "Test OK".green if must_be_equal
28
+ puts "Test fail".red unless must_be_equal
@@ -5,12 +5,12 @@
5
5
  # id :integer not null, primary key
6
6
  # uid :integer
7
7
  # silo :integer
8
- # nombre :string(255)
8
+ # nombre :string
9
9
  # total_acumulado :integer
10
10
  # bits1 :boolean
11
11
  # bits2 :boolean
12
12
  # ffloat :float
13
- # variable :string(255)
13
+ # variable :string
14
14
  # created_at :datetime
15
15
  # updated_at :datetime
16
16
  #
@@ -0,0 +1,20 @@
1
+ # == Schema Information
2
+ #
3
+ # Table name: tipos
4
+ #
5
+ # id :integer not null, primary key
6
+ # name :string
7
+ # producto_id :integer
8
+ # created_at :datetime not null
9
+ # updated_at :datetime not null
10
+ #
11
+
12
+ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
13
+
14
+ one:
15
+ name: MyString
16
+ producto: one
17
+
18
+ two:
19
+ name: MyString
20
+ producto: two
@@ -5,12 +5,12 @@
5
5
  # id :integer not null, primary key
6
6
  # uid :integer
7
7
  # silo :integer
8
- # nombre :string(255)
8
+ # nombre :string
9
9
  # total_acumulado :integer
10
10
  # bits1 :boolean
11
11
  # bits2 :boolean
12
12
  # ffloat :float
13
- # variable :string(255)
13
+ # variable :string
14
14
  # created_at :datetime
15
15
  # updated_at :datetime
16
16
  #
@@ -0,0 +1,18 @@
1
+ # == Schema Information
2
+ #
3
+ # Table name: tipos
4
+ #
5
+ # id :integer not null, primary key
6
+ # name :string
7
+ # producto_id :integer
8
+ # created_at :datetime not null
9
+ # updated_at :datetime not null
10
+ #
11
+
12
+ require 'test_helper'
13
+
14
+ class TipoTest < ActiveSupport::TestCase
15
+ # test "the truth" do
16
+ # assert true
17
+ # end
18
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_model_serializers_binary
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.25
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - ByS Sistemas de Control
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-28 00:00:00.000000000 Z
11
+ date: 2017-08-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -42,156 +42,30 @@ dependencies:
42
42
  name: sqlite3
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '1.3'
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '1.3'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rails
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '4.1'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '4.1'
69
- - !ruby/object:Gem::Dependency
70
- name: devise
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '3.2'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '3.2'
83
- - !ruby/object:Gem::Dependency
84
- name: jquery-ui-rails
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '4.2'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '4.2'
97
- - !ruby/object:Gem::Dependency
98
- name: sass-rails
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '4.0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '4.0'
111
- - !ruby/object:Gem::Dependency
112
- name: uglifier
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '1.3'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '1.3'
125
- - !ruby/object:Gem::Dependency
126
- name: coffee-rails
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '4.0'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '4.0'
139
- - !ruby/object:Gem::Dependency
140
- name: turbolinks
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: '2.2'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: '2.2'
153
- - !ruby/object:Gem::Dependency
154
- name: jbuilder
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - "~>"
158
- - !ruby/object:Gem::Version
159
- version: '1.2'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - "~>"
165
- - !ruby/object:Gem::Version
166
- version: '1.2'
167
- - !ruby/object:Gem::Dependency
168
- name: jquery-validation-rails
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - "~>"
172
- - !ruby/object:Gem::Version
173
- version: '1.12'
174
- type: :development
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - "~>"
179
- - !ruby/object:Gem::Version
180
- version: '1.12'
181
- - !ruby/object:Gem::Dependency
182
- name: therubyracer
183
- requirement: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - "~>"
186
- - !ruby/object:Gem::Version
187
- version: '0.12'
61
+ version: '5.0'
188
62
  type: :development
189
63
  prerelease: false
190
64
  version_requirements: !ruby/object:Gem::Requirement
191
65
  requirements:
192
66
  - - "~>"
193
67
  - !ruby/object:Gem::Version
194
- version: '0.12'
68
+ version: '5.0'
195
69
  - !ruby/object:Gem::Dependency
196
70
  name: colorize
197
71
  requirement: !ruby/object:Gem::Requirement
@@ -212,14 +86,14 @@ dependencies:
212
86
  requirements:
213
87
  - - "~>"
214
88
  - !ruby/object:Gem::Version
215
- version: '4.1'
89
+ version: '5.0'
216
90
  type: :runtime
217
91
  prerelease: false
218
92
  version_requirements: !ruby/object:Gem::Requirement
219
93
  requirements:
220
94
  - - "~>"
221
95
  - !ruby/object:Gem::Version
222
- version: '4.1'
96
+ version: '5.0'
223
97
  description: active_model_serializers_binary is a declarative way to serialize/deserialize
224
98
  ActiveModel classes for raw data exchange.
225
99
  email:
@@ -255,6 +129,7 @@ files:
255
129
  - test/dummy/app/models/.keep
256
130
  - test/dummy/app/models/concerns/.keep
257
131
  - test/dummy/app/models/producto.rb
132
+ - test/dummy/app/models/tipo.rb
258
133
  - test/dummy/app/views/layouts/application.html.erb
259
134
  - test/dummy/bin/bundle
260
135
  - test/dummy/bin/rails
@@ -279,6 +154,7 @@ files:
279
154
  - test/dummy/config/routes.rb
280
155
  - test/dummy/config/secrets.yml
281
156
  - test/dummy/db/migrate/20160608024807_create_productos.rb
157
+ - test/dummy/db/migrate/20170817015810_create_tipos.rb
282
158
  - test/dummy/db/schema.rb
283
159
  - test/dummy/lib/assets/.keep
284
160
  - test/dummy/lib/test_parser.rb
@@ -288,7 +164,9 @@ files:
288
164
  - test/dummy/public/500.html
289
165
  - test/dummy/public/favicon.ico
290
166
  - test/dummy/test/fixtures/productos.yml
167
+ - test/dummy/test/fixtures/tipos.yml
291
168
  - test/dummy/test/models/producto_test.rb
169
+ - test/dummy/test/models/tipo_test.rb
292
170
  - test/test_helper.rb
293
171
  homepage: https://github.com/bys-control/active_model_serializers_binary
294
172
  licenses:
@@ -310,7 +188,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
310
188
  version: '0'
311
189
  requirements: []
312
190
  rubyforge_project:
313
- rubygems_version: 2.5.1
191
+ rubygems_version: 2.4.8
314
192
  signing_key:
315
193
  specification_version: 4
316
194
  summary: Serialize models to/from binary format for raw data exchange
@@ -328,6 +206,7 @@ test_files:
328
206
  - test/dummy/app/models/.keep
329
207
  - test/dummy/app/models/concerns/.keep
330
208
  - test/dummy/app/models/producto.rb
209
+ - test/dummy/app/models/tipo.rb
331
210
  - test/dummy/app/views/layouts/application.html.erb
332
211
  - test/dummy/bin/bundle
333
212
  - test/dummy/bin/rails
@@ -352,6 +231,7 @@ test_files:
352
231
  - test/dummy/config/routes.rb
353
232
  - test/dummy/config/secrets.yml
354
233
  - test/dummy/db/migrate/20160608024807_create_productos.rb
234
+ - test/dummy/db/migrate/20170817015810_create_tipos.rb
355
235
  - test/dummy/db/schema.rb
356
236
  - test/dummy/lib/assets/.keep
357
237
  - test/dummy/lib/test_parser.rb
@@ -361,6 +241,7 @@ test_files:
361
241
  - test/dummy/public/500.html
362
242
  - test/dummy/public/favicon.ico
363
243
  - test/dummy/test/fixtures/productos.yml
244
+ - test/dummy/test/fixtures/tipos.yml
364
245
  - test/dummy/test/models/producto_test.rb
246
+ - test/dummy/test/models/tipo_test.rb
365
247
  - test/test_helper.rb
366
- has_rdoc: