scale_rb 0.1.15 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,7 +2,7 @@
2
2
 
3
3
  # https://www.rubyguides.com/2017/01/read-binary-data/
4
4
  class String
5
- def to_bytes
5
+ def _to_bytes
6
6
  data = start_with?('0x') ? self[2..] : self
7
7
  raise 'Not valid hex string' if data =~ /[^\da-f]+/i
8
8
 
@@ -10,11 +10,11 @@ class String
10
10
  data.scan(/../).map(&:hex)
11
11
  end
12
12
 
13
- def to_camel
13
+ def _to_camel
14
14
  split('_').collect(&:capitalize).join
15
15
  end
16
16
 
17
- def underscore
17
+ def _underscore
18
18
  gsub(/::/, '/')
19
19
  .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
20
20
  .gsub(/([a-z\d])([A-Z])/, '\1_\2')
@@ -24,22 +24,22 @@ class String
24
24
  end
25
25
 
26
26
  class Integer
27
- def to_bytes(bit_length = nil)
28
- return to_s(16).to_bytes unless bit_length
27
+ def _to_bytes(bit_length = nil)
28
+ return to_s(16)._to_bytes unless bit_length
29
29
 
30
30
  hex = to_s(16).rjust(bit_length / 4, '0')
31
- hex.to_bytes
31
+ hex._to_bytes
32
32
  end
33
33
 
34
34
  # unsigned to signed
35
- def to_signed(bit_length)
35
+ def _to_signed(bit_length)
36
36
  unsigned_mid = 2**(bit_length - 1)
37
37
  unsigned_ceiling = 2**bit_length
38
38
  self >= unsigned_mid ? self - unsigned_ceiling : self
39
39
  end
40
40
 
41
41
  # signed to unsigned
42
- def to_unsigned(bit_length)
42
+ def _to_unsigned(bit_length)
43
43
  unsigned_mid = 2**(bit_length - 1)
44
44
  unsigned_ceiling = 2**bit_length
45
45
  raise 'out of scope' if self >= unsigned_mid || self <= -unsigned_mid
@@ -48,48 +48,48 @@ class Integer
48
48
  end
49
49
 
50
50
  # unix timestamp to utc
51
- def to_utc
51
+ def _to_utc
52
52
  Time.at(self).utc.asctime
53
53
  end
54
54
 
55
55
  # utc to unix timestamp
56
- def from_utc(utc_asctime)
56
+ def _from_utc(utc_asctime)
57
57
  Time.parse(utc_asctime)
58
58
  end
59
59
  end
60
60
 
61
61
  class Array
62
- def to_hex
63
- raise 'Not a byte array' unless byte_array?
62
+ def _to_hex
63
+ raise 'Not a byte array' unless _byte_array?
64
64
 
65
65
  reduce('0x') { |hex, byte| hex + byte.to_s(16).rjust(2, '0') }
66
66
  end
67
67
 
68
- def to_bin
69
- raise 'Not a byte array' unless byte_array?
68
+ def _to_bin
69
+ raise 'Not a byte array' unless _byte_array?
70
70
 
71
71
  reduce('0b') { |bin, byte| bin + byte.to_s(2).rjust(8, '0') }
72
72
  end
73
73
 
74
- def to_utf8
75
- raise 'Not a byte array' unless byte_array?
74
+ def _to_utf8
75
+ raise 'Not a byte array' unless _byte_array?
76
76
 
77
77
  pack('C*').force_encoding('utf-8')
78
78
  end
79
79
 
80
- def to_uint
81
- to_hex.to_i(16)
80
+ def _to_uint
81
+ _to_hex.to_i(16)
82
82
  end
83
83
 
84
- def to_int(bit_length)
85
- to_uint.to_signed(bit_length)
84
+ def _to_int(bit_length)
85
+ _to_uint._to_signed(bit_length)
86
86
  end
87
87
 
88
- def flip
88
+ def _flip
89
89
  reverse
90
90
  end
91
91
 
92
- def byte_array?
92
+ def _byte_array?
93
93
  all? { |e| e >= 0 and e <= 255 }
94
94
  end
95
95
  end
@@ -1,280 +1,284 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module PortableCodec
4
- class Error < StandardError; end
5
- class TypeNotFound < Error; end
6
- class TypeNotImplemented < Error; end
7
- class CompositeInvalidValue < Error; end
8
- class ArrayLengthNotEqual < Error; end
9
- class VariantItemNotFound < Error; end
10
- class VariantIndexOutOfRange < Error; end
11
- class VariantInvalidValue < Error; end
12
-
13
- class << self
14
- def u256(value)
15
- bytes = ScaleRb.encode('u256', value)
16
- bytes.each_slice(8).map do |slice|
17
- ScaleRb.decode('u64', slice).first
3
+ module ScaleRb
4
+ module PortableCodec
5
+ class Error < StandardError; end
6
+ class TypeNotFound < Error; end
7
+ class TypeNotImplemented < Error; end
8
+ class CompositeInvalidValue < Error; end
9
+ class ArrayLengthNotEqual < Error; end
10
+ class VariantItemNotFound < Error; end
11
+ class VariantIndexOutOfRange < Error; end
12
+ class VariantInvalidValue < Error; end
13
+
14
+ class << self
15
+ def u256(value)
16
+ bytes = ScaleRb.encode('u256', value)
17
+ bytes.each_slice(8).map do |slice|
18
+ ScaleRb.decode('u64', slice).first
19
+ end
18
20
  end
19
21
  end
20
- end
21
22
 
22
- class << self
23
- # registry:
24
- # {
25
- # 0 => {
26
- # path: [...],
27
- # params: [...],
28
- # def: {
29
- # primitive: 'u8' | array: {} | ...
30
- # }
31
- # },
32
- # 1 => {
33
- # ...
34
- # }
35
- # }
36
- def decode(id, bytes, registry)
37
- type = registry[id]
38
- raise TypeNotFound, "id: #{id}" if type.nil?
39
-
40
- _path = type._get(:path)
41
- _params = type._get(:params)
42
- type_def = type._get(:def)
43
-
44
- return decode_primitive(type_def, bytes) if type_def._key?(:primitive)
45
- return decode_compact(bytes) if type_def._key?(:compact)
46
- return decode_array(type_def._get(:array), bytes, registry) if type_def._key?(:array)
47
- return decode_sequence(type_def._get(:sequence), bytes, registry) if type_def._key?(:sequence)
48
- return decode_tuple(type_def._get(:tuple), bytes, registry) if type_def._key?(:tuple)
49
- return decode_composite(type_def._get(:composite), bytes, registry) if type_def._key?(:composite)
50
- return decode_variant(type_def._get(:variant), bytes, registry) if type_def._key?(:variant)
51
-
52
- raise TypeNotImplemented, "id: #{id}"
53
- end
23
+ class << self
24
+ # registry:
25
+ # {
26
+ # 0 => {
27
+ # path: [...],
28
+ # params: [...],
29
+ # def: {
30
+ # primitive: 'u8' | array: {} | ...
31
+ # }
32
+ # },
33
+ # 1 => {
34
+ # ...
35
+ # }
36
+ # }
37
+ def decode(id, bytes, registry)
38
+ type = registry[id]
39
+ raise TypeNotFound, "id: #{id}" if type.nil?
40
+
41
+ _path = type._get(:path)
42
+ _params = type._get(:params)
43
+ type_def = type._get(:def)
44
+
45
+ return decode_primitive(type_def, bytes) if type_def._key?(:primitive)
46
+ return decode_compact(bytes) if type_def._key?(:compact)
47
+ return decode_array(type_def._get(:array), bytes, registry) if type_def._key?(:array)
48
+ return decode_sequence(type_def._get(:sequence), bytes, registry) if type_def._key?(:sequence)
49
+ return decode_tuple(type_def._get(:tuple), bytes, registry) if type_def._key?(:tuple)
50
+ return decode_composite(type_def._get(:composite), bytes, registry) if type_def._key?(:composite)
51
+ return decode_variant(type_def._get(:variant), bytes, registry) if type_def._key?(:variant)
52
+
53
+ raise TypeNotImplemented, "id: #{id}"
54
+ end
54
55
 
55
- # Uint, Str, Bool
56
- # Int, Bytes ?
57
- def decode_primitive(type_def, bytes)
58
- primitive = type_def._get(:primitive)
59
- return ScaleRb.decode_uint(primitive, bytes) if ScaleRb.uint?(primitive)
60
- return ScaleRb.decode_string(bytes) if ScaleRb.string?(primitive)
61
- return ScaleRb.decode_boolean(bytes) if ScaleRb.boolean?(primitive)
62
- # return ScaleRb.decode_int(primitive, bytes) if int?(primitive)
63
- # return ScaleRb.decode_bytes(bytes) if bytes?(primitive)
64
- end
56
+ # Uint, Str, Bool
57
+ # Int, Bytes ?
58
+ def decode_primitive(type_def, bytes)
59
+ primitive = type_def._get(:primitive)
60
+ return ScaleRb.decode_uint(primitive, bytes) if ScaleRb.uint?(primitive)
61
+ return ScaleRb.decode_string(bytes) if ScaleRb.string?(primitive)
65
62
 
66
- def decode_compact(bytes)
67
- ScaleRb.decode_compact(bytes)
68
- end
63
+ ScaleRb.decode_boolean(bytes) if ScaleRb.boolean?(primitive)
64
+ # return ScaleRb.decode_int(primitive, bytes) if int?(primitive)
65
+ # return ScaleRb.decode_bytes(bytes) if bytes?(primitive)
66
+ end
69
67
 
70
- def decode_array(array_type, bytes, registry)
71
- len = array_type._get(:len)
72
- inner_type_id = array_type._get(:type)
73
-
74
- # check if the type of inner_type_id is a u8
75
- if _u8?(inner_type_id, registry)
76
- [
77
- bytes[0...len].to_hex,
78
- bytes[len..]
79
- ]
80
- else
81
- _decode_types([inner_type_id] * len, bytes, registry)
68
+ def decode_compact(bytes)
69
+ ScaleRb.decode_compact(bytes)
82
70
  end
83
- end
84
71
 
85
- def _u8?(type_id, registry)
86
- type = registry[type_id]
87
- raise TypeNotFound, "id: #{type_id}" if type.nil?
72
+ def decode_array(array_type, bytes, registry)
73
+ len = array_type._get(:len)
74
+ inner_type_id = array_type._get(:type)
88
75
 
89
- type._get(:def)._get(:primitive)&.downcase == 'u8'
90
- end
76
+ # check if the type of inner_type_id is a u8
77
+ if _u8?(inner_type_id, registry)
78
+ [
79
+ bytes[0...len]._to_hex,
80
+ bytes[len..]
81
+ ]
82
+ else
83
+ _decode_types([inner_type_id] * len, bytes, registry)
84
+ end
85
+ end
91
86
 
92
- def decode_sequence(sequence_type, bytes, registry)
93
- len, remaining_bytes = decode_compact(bytes)
94
- inner_type_id = sequence_type._get(:type)
95
- _decode_types([inner_type_id] * len, remaining_bytes, registry)
96
- end
87
+ def _u8?(type_id, registry)
88
+ type = registry[type_id]
89
+ raise TypeNotFound, "id: #{type_id}" if type.nil?
97
90
 
98
- def decode_tuple(tuple_type, bytes, registry)
99
- _decode_types(tuple_type, bytes, registry)
100
- end
91
+ type._get(:def)._get(:primitive)&.downcase == 'u8'
92
+ end
101
93
 
102
- # {
103
- # name: value,
104
- # ...
105
- # }
106
- def decode_composite(composite_type, bytes, registry)
107
- fields = composite_type._get(:fields)
108
-
109
- # reduce composite level when composite only has one field without name
110
- if fields.length == 1 && fields.first._get(:name).nil?
111
- decode(fields.first._get(:type), bytes, registry)
112
- else
113
- type_name_list = fields.map { |f| f._get(:name) }
114
- type_id_list = fields.map { |f| f._get(:type) }
115
-
116
- type_value_list, remaining_bytes = _decode_types(type_id_list, bytes, registry)
117
- [
118
- if type_name_list.all?(&:nil?)
119
- type_value_list
120
- else
121
- [type_name_list.map(&:to_sym), type_value_list].transpose.to_h
122
- end,
123
- remaining_bytes
124
- ]
94
+ def decode_sequence(sequence_type, bytes, registry)
95
+ len, remaining_bytes = decode_compact(bytes)
96
+ inner_type_id = sequence_type._get(:type)
97
+ _decode_types([inner_type_id] * len, remaining_bytes, registry)
98
+ end
99
+
100
+ def decode_tuple(tuple_type, bytes, registry)
101
+ _decode_types(tuple_type, bytes, registry)
102
+ end
103
+
104
+ # {
105
+ # name: value,
106
+ # ...
107
+ # }
108
+ def decode_composite(composite_type, bytes, registry)
109
+ fields = composite_type._get(:fields)
110
+
111
+ # reduce composite level when composite only has one field without name
112
+ if fields.length == 1 && fields.first._get(:name).nil?
113
+ decode(fields.first._get(:type), bytes, registry)
114
+ else
115
+ type_name_list = fields.map { |f| f._get(:name) }
116
+ type_id_list = fields.map { |f| f._get(:type) }
117
+
118
+ type_value_list, remaining_bytes = _decode_types(type_id_list, bytes, registry)
119
+ [
120
+ if type_name_list.all?(&:nil?)
121
+ type_value_list
122
+ else
123
+ [type_name_list.map(&:to_sym), type_value_list].transpose.to_h
124
+ end,
125
+ remaining_bytes
126
+ ]
127
+ end
125
128
  end
126
- end
127
129
 
128
- def decode_variant(variant_type, bytes, registry)
129
- variants = variant_type._get(:variants)
130
+ def decode_variant(variant_type, bytes, registry)
131
+ variants = variant_type._get(:variants)
130
132
 
131
- index = bytes[0].to_i # TODO: check
132
- item = variants.find { |v| v._get(:index) == index } # item is an composite
133
+ index = bytes[0].to_i # TODO: check
134
+ item = variants.find { |v| v._get(:index) == index } # item is an composite
133
135
 
134
- raise VariantIndexOutOfRange, "type: #{variant_type}, index: #{index}, bytes: #{bytes}" if item.nil?
136
+ raise VariantIndexOutOfRange, "type: #{variant_type}, index: #{index}, bytes: #{bytes}" if item.nil?
135
137
 
136
- item_name = item._get(:name)
137
- item_fields = item._get(:fields)
138
- if item_fields.empty?
139
- [item_name, bytes[1..]]
140
- else
141
- item_value, remaining_bytes = decode_composite(item, bytes[1..], registry)
142
- [{ item_name.to_sym => item_value }, remaining_bytes]
138
+ item_name = item._get(:name)
139
+ item_fields = item._get(:fields)
140
+ if item_fields.empty?
141
+ [item_name, bytes[1..]]
142
+ else
143
+ item_value, remaining_bytes = decode_composite(item, bytes[1..], registry)
144
+ [{ item_name.to_sym => item_value }, remaining_bytes]
145
+ end
143
146
  end
144
- end
145
147
 
146
- def _decode_types(ids, bytes, registry = {})
147
- ScaleRb._decode_each(ids, bytes) do |id, remaining_bytes|
148
- decode(id, remaining_bytes, registry)
148
+ def _decode_types(ids, bytes, registry = {})
149
+ ScaleRb._decode_each(ids, bytes) do |id, remaining_bytes|
150
+ decode(id, remaining_bytes, registry)
151
+ end
149
152
  end
150
- end
151
153
 
152
- def encode_with_hasher(value, type_id, registry, hasher)
153
- value_bytes = encode(type_id, value, registry)
154
- Hasher.apply_hasher(hasher, value_bytes)
155
- end
154
+ def encode_with_hasher(value, type_id, registry, hasher)
155
+ value_bytes = encode(type_id, value, registry)
156
+ Hasher.apply_hasher(hasher, value_bytes)
157
+ end
156
158
 
157
- def encode(id, value, registry)
158
- type = registry[id]
159
- raise TypeNotFound, "id: #{id}" if type.nil?
159
+ def encode(id, value, registry)
160
+ type = registry[id]
161
+ raise TypeNotFound, "id: #{id}" if type.nil?
160
162
 
161
- type_def = type._get(:def)
162
- # debug
163
- # p type_def
164
- # p value
163
+ type_def = type._get(:def)
164
+ # debug
165
+ # p type_def
166
+ # p value
165
167
 
166
- return encode_primitive(type_def, value) if type_def._key?(:primitive)
167
- return encode_compact(value) if type_def._key?(:compact)
168
- return encode_array(type_def._get(:array), value, registry) if type_def._key?(:array)
169
- return encode_sequence(type_def._get(:sequence), value, registry) if type_def._key?(:sequence)
170
- return encode_tuple(type_def._get(:tuple), value, registry) if type_def._key?(:tuple)
171
- return encode_composite(type_def._get(:composite), value, registry) if type_def._key?(:composite)
172
- return encode_variant(type_def._get(:variant), value, registry) if type_def._key?(:variant)
168
+ return encode_primitive(type_def, value) if type_def._key?(:primitive)
169
+ return encode_compact(value) if type_def._key?(:compact)
170
+ return encode_array(type_def._get(:array), value, registry) if type_def._key?(:array)
171
+ return encode_sequence(type_def._get(:sequence), value, registry) if type_def._key?(:sequence)
172
+ return encode_tuple(type_def._get(:tuple), value, registry) if type_def._key?(:tuple)
173
+ return encode_composite(type_def._get(:composite), value, registry) if type_def._key?(:composite)
174
+ return encode_variant(type_def._get(:variant), value, registry) if type_def._key?(:variant)
173
175
 
174
- raise TypeNotImplemented, "id: #{id}"
175
- end
176
+ raise TypeNotImplemented, "id: #{id}"
177
+ end
176
178
 
177
- def encode_primitive(type_def, value)
178
- primitive = type_def._get(:primitive)
179
- return ScaleRb.encode_uint(primitive, value) if ScaleRb.uint?(primitive)
180
- return ScaleRb.encode_string(value) if ScaleRb.string?(primitive)
181
- return ScaleRb.encode_boolean(value) if ScaleRb.boolean?(primitive)
182
- end
179
+ def encode_primitive(type_def, value)
180
+ primitive = type_def._get(:primitive)
181
+ return ScaleRb.encode_uint(primitive, value) if ScaleRb.uint?(primitive)
182
+ return ScaleRb.encode_string(value) if ScaleRb.string?(primitive)
183
183
 
184
- def encode_compact(value)
185
- ScaleRb.encode_compact(value)
186
- end
184
+ ScaleRb.encode_boolean(value) if ScaleRb.boolean?(primitive)
185
+ end
187
186
 
188
- def encode_array(array_type, value, registry)
189
- length = array_type._get(:len)
190
- inner_type_id = array_type._get(:type)
191
- raise ArrayLengthNotEqual, "type: #{array_type}, value: #{value.inspect}" if length != value.length
187
+ def encode_compact(value)
188
+ ScaleRb.encode_compact(value)
189
+ end
192
190
 
193
- _encode_types([inner_type_id] * length, value, registry)
194
- end
191
+ def encode_array(array_type, value, registry)
192
+ length = array_type._get(:len)
193
+ inner_type_id = array_type._get(:type)
194
+ raise ArrayLengthNotEqual, "type: #{array_type}, value: #{value.inspect}" if length != value.length
195
195
 
196
- def encode_sequence(sequence_type, value, registry)
197
- inner_type_id = sequence_type._get(:type)
198
- length_bytes = encode_compact(value.length)
199
- length_bytes + _encode_types([inner_type_id] * value.length, value, registry)
200
- end
196
+ _encode_types([inner_type_id] * length, value, registry)
197
+ end
201
198
 
202
- # tuple_type: [type_id1, type_id2, ...]
203
- def encode_tuple(tuple_type, value, registry)
204
- _encode_types(tuple_type, value, registry)
205
- end
199
+ def encode_sequence(sequence_type, value, registry)
200
+ inner_type_id = sequence_type._get(:type)
201
+ length_bytes = encode_compact(value.length)
202
+ length_bytes + _encode_types([inner_type_id] * value.length, value, registry)
203
+ end
206
204
 
207
- # value:
208
- # {
209
- # name1: value1,
210
- # name2: value2,
211
- # ...
212
- # }
213
- # or
214
- # [value1, value2, ...]
215
- def encode_composite(composite_type, value, registry)
216
- fields = composite_type._get(:fields)
217
- # reduce composite level when composite only has one field without name
218
- if fields.length == 1 && fields.first._get(:name).nil?
219
- # debug
220
- # p fields.first._get(:type)
221
- # p value
222
- encode(fields.first._get(:type), value, registry)
223
- else
224
- values =
205
+ # tuple_type: [type_id1, type_id2, ...]
206
+ def encode_tuple(tuple_type, value, registry)
207
+ _encode_types(tuple_type, value, registry)
208
+ end
209
+
210
+ # value:
211
+ # {
212
+ # name1: value1,
213
+ # name2: value2,
214
+ # ...
215
+ # }
216
+ # or
217
+ # [value1, value2, ...]
218
+ def encode_composite(composite_type, value, registry)
219
+ fields = composite_type._get(:fields)
220
+ # reduce composite level when composite only has one field without name
221
+ if fields.length == 1 && fields.first._get(:name).nil?
222
+ # debug
223
+ # p fields.first._get(:type)
224
+ # p value
225
+ encode(fields.first._get(:type), value, registry)
226
+ else
227
+ values =
228
+ if value.instance_of?(Hash)
229
+ value.values
230
+ elsif value.instance_of?(Array)
231
+ value
232
+ else
233
+ raise CompositeInvalidValue, "value: #{value}, only hash and array"
234
+ end
235
+
236
+ type_id_list = fields.map { |f| f._get(:type) }
237
+ _encode_types(type_id_list, values, registry)
238
+ end
239
+ end
240
+
241
+ # value:
242
+ # {
243
+ # name: v(Hash)
244
+ # }
245
+ # or
246
+ # the_value(String)
247
+ def encode_variant(variant_type, value, registry)
248
+ variants = variant_type._get(:variants)
249
+
250
+ name, v = # v: item inner value
225
251
  if value.instance_of?(Hash)
226
- value.values
227
- elsif value.instance_of?(Array)
228
- value
252
+ [value.keys.first.to_s, value.values.first]
253
+ elsif value.instance_of?(String)
254
+ [value, {}]
229
255
  else
230
- raise CompositeInvalidValue, "value: #{value}, only hash and array"
256
+ raise VariantInvalidValue, "type: #{variant_type}, value: #{value}"
231
257
  end
232
258
 
233
- type_id_list = fields.map { |f| f._get(:type) }
234
- _encode_types(type_id_list, values, registry)
235
- end
236
- end
259
+ item = variants.find { |var| var._get(:name) == name }
260
+ raise VariantItemNotFound, "type: #{variant_type}, name: #{name}" if item.nil?
237
261
 
238
- # value:
239
- # {
240
- # name: v(Hash)
241
- # }
242
- # or
243
- # the_value(String)
244
- def encode_variant(variant_type, value, registry)
245
- variants = variant_type._get(:variants)
246
-
247
- name, v = # v: item inner value
248
- if value.instance_of?(Hash)
249
- [value.keys.first.to_s, value.values.first]
250
- elsif value.instance_of?(String)
251
- [value, {}]
252
- else
253
- raise VariantInvalidValue, "type: #{variant_type}, value: #{value}"
262
+ # if the variant item has more than one field, the value must be a hash with the same length.
263
+ # if the variant item has only one field, that means the field is a type id point to a composite. TODO: check the type's fields length
264
+ if item._get(:fields).length > 1 && item._get(:fields).length != v.length
265
+ raise VariantFieldsLengthNotMatch,
266
+ "type: #{variant_type}, \nvalue: #{v}"
254
267
  end
255
268
 
256
- item = variants.find { |var| var._get(:name) == name }
257
- raise VariantItemNotFound, "type: #{variant_type}, name: #{name}" if item.nil?
258
-
259
- # if the variant item has more than one field, the value must be a hash with the same length.
260
- # if the variant item has only one field, that means the field is a type id point to a composite. TODO: check the type's fields length
261
- if item._get(:fields).length > 1 && item._get(:fields).length != v.length
262
- raise VariantFieldsLengthNotMatch,
263
- "type: #{variant_type}, \nvalue: #{v}"
269
+ ScaleRb.encode_uint('u8', item._get(:index)) + encode_composite(item, v, registry)
264
270
  end
265
271
 
266
- ScaleRb.encode_uint('u8', item._get(:index)) + encode_composite(item, v, registry)
267
- end
268
-
269
- def _encode_types(ids, values, registry)
270
- ScaleRb._encode_each(ids, values) do |id, value|
271
- encode(id, value, registry)
272
+ def _encode_types(ids, values, registry)
273
+ ScaleRb._encode_each(ids, values) do |id, value|
274
+ encode(id, value, registry)
275
+ end
272
276
  end
273
- end
274
277
 
275
- def _encode_types_with_hashers(ids, values, registry, hashers)
276
- ScaleRb._encode_each_with_hashers(ids, values, hashers) do |id, value|
277
- encode(id, value, registry)
278
+ def _encode_types_with_hashers(ids, values, registry, hashers)
279
+ ScaleRb._encode_each_with_hashers(ids, values, hashers) do |id, value|
280
+ encode(id, value, registry)
281
+ end
278
282
  end
279
283
  end
280
284
  end
@@ -1,3 +1,3 @@
1
1
  module ScaleRb
2
- VERSION = '0.1.15'
2
+ VERSION = '0.2.2'
3
3
  end
data/lib/scale_rb.rb CHANGED
@@ -21,7 +21,6 @@ require 'hasher'
21
21
  require 'storage_helper'
22
22
 
23
23
  # client
24
- require 'client/rpc_request_builder'
25
24
  require 'client/http_client'
26
25
  require 'client/abstract_ws_client'
27
26