scale_rb 0.1.10 → 0.1.13

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
  SHA256:
3
- metadata.gz: 0c7019e91465191e14eb99ca5b57435245b9cb533cc0b5eb7e9ee944f8485a8c
4
- data.tar.gz: 8d9eb533ffb3046536f915c39271049d46b20a1417989e6844c6b3ba927bd1e3
3
+ metadata.gz: e442bed63503c0e8c7210753df2fa8a293a094c4df6e095f649997923a4d65c6
4
+ data.tar.gz: 97c1bc3b28346baf2f28a93a5a302240d327b663fc7acad7f0bdbd5c558a8e2e
5
5
  SHA512:
6
- metadata.gz: ef65503ad4ccc4f26490c0ff9ed0715beb312ee50ca5ca6a1f4824a924a01cd833503bbd1f80e8c510eb26d12a6f400655a0fcc5bed12a505ef15cb1e686b69d
7
- data.tar.gz: cf36689a9d7bf12c104f51e39483f3db58d073423d314692f07cfba1ce49e324032c57b4fbe122b207f85ac08af60bbdb44dc8e21fde0c558bbbd05bb255d40f
6
+ metadata.gz: b233f131d753ca6bb5f632523da0d09be97d2f721a9933c63c6def842ea55de30fd6a7f46081c0113b114b48ce15ed1193b5b834e382379e2406a8eb3416c012
7
+ data.tar.gz: 7f97fd3d9927fd3873717226e1294209af285062314850af0d9000e46cdb657b033c3536d19da6cd1bbc6baaeed6f39d729ea7ec3bfcd0c381e75bcfcf1afd5b
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- scale_rb (0.1.10)
4
+ scale_rb (0.1.13)
5
5
  base58
6
6
  blake2b_rs (~> 0.1.4)
7
7
  xxhash
@@ -178,6 +178,44 @@ module ScaleRb
178
178
  end
179
179
  get_storage(url, pallet_name, item_name, key, value, registry, at)
180
180
  end
181
+
182
+ # get_storage3 is a more ruby style function
183
+ #
184
+ # pallet_name and storage_name is pascal style like 'darwinia_staking'
185
+ def get_storage3(url, metadata, pallet_name, storage_name, key_part1: nil, key_part2: nil, at: nil)
186
+ pallet_name = to_pascal pallet_name
187
+ storage_name = to_pascal storage_name
188
+ ScaleRb.logger.debug "#{pallet_name}.#{storage_name}(#{[key_part1, key_part2].compact.join(', ')})"
189
+
190
+ key = [key_part1, key_part2].compact.map { |part_of_key| c(part_of_key) }
191
+ ScaleRb.logger.debug "converted key: #{key}"
192
+
193
+ get_storage2(
194
+ url,
195
+ pallet_name,
196
+ storage_name,
197
+ key,
198
+ metadata,
199
+ at
200
+ )
201
+ end
202
+
203
+ private
204
+
205
+ def to_pascal(str)
206
+ str.split('_').collect(&:capitalize).join
207
+ end
208
+
209
+ # convert key to byte array
210
+ def c(key)
211
+ if key.start_with?('0x')
212
+ key.to_bytes
213
+ elsif key.to_i.to_s == key # check if key is a number
214
+ key.to_i
215
+ else
216
+ key
217
+ end
218
+ end
181
219
  end
182
220
  end
183
221
  end
@@ -70,7 +70,23 @@ module PortableCodec
70
70
  def decode_array(array_type, bytes, registry)
71
71
  len = array_type._get(:len)
72
72
  inner_type_id = array_type._get(:type)
73
- _decode_types([inner_type_id] * len, bytes, registry)
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)
82
+ end
83
+ end
84
+
85
+ def _u8?(type_id, registry)
86
+ type = registry[type_id]
87
+ raise TypeNotFound, "id: #{type_id}" if type.nil?
88
+
89
+ type._get(:def)._get(:primitive)&.downcase == 'u8'
74
90
  end
75
91
 
76
92
  def decode_sequence(sequence_type, bytes, registry)
@@ -242,7 +258,10 @@ module PortableCodec
242
258
 
243
259
  # if the variant item has more than one field, the value must be a hash with the same length.
244
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
245
- raise VariantFieldsLengthNotMatch, "type: #{variant_type}, \nvalue: #{v}" if item._get(:fields).length > 1 && item._get(:fields).length != v.length
261
+ if item._get(:fields).length > 1 && item._get(:fields).length != v.length
262
+ raise VariantFieldsLengthNotMatch,
263
+ "type: #{variant_type}, \nvalue: #{v}"
264
+ end
246
265
 
247
266
  ScaleRb.encode_uint('u8', item._get(:index)) + encode_composite(item, v, registry)
248
267
  end
@@ -1,3 +1,3 @@
1
1
  module ScaleRb
2
- VERSION = '0.1.10'
2
+ VERSION = '0.1.13'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scale_rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.10
4
+ version: 0.1.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aki Wu
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-08-21 00:00:00.000000000 Z
11
+ date: 2023-08-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: blake2b_rs