scale.rb 0.3.0 → 0.3.1
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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/scale.rb +2 -1
- data/lib/scale/version.rb +1 -1
- data/lib/substrate_client.rb +2 -2
- data/lib/type_builder.rb +15 -14
- data/lib/type_registry.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 861596854598a5ea2a2648cc9fe3b32915eeba97a372f2c49ba1839537cd6741
|
4
|
+
data.tar.gz: 222a2e692373bd1523f37927a304c12f2d24d252c428be3b6beb8b4dc52163c8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 68406b9ce9d33d5bf4513fc825f7e76b5e290f52a6b144893ff9df130e513ff01f20b647e51eab61efef2f15bb4b4be0db0b0a817cba465f268577199731f4d3
|
7
|
+
data.tar.gz: d0225db7a736a2909dd8e3967658b9fef543457e2eea479e09af8944161830fbad114782ec8fa0014e6a4df5f8599c3b128dcc16cc00c3518dcd836f1b6dd4ef
|
data/Gemfile.lock
CHANGED
data/lib/scale.rb
CHANGED
@@ -44,7 +44,7 @@ module Scale
|
|
44
44
|
|
45
45
|
module Types
|
46
46
|
class << self
|
47
|
-
attr_accessor :debug
|
47
|
+
attr_accessor :debug, :logger
|
48
48
|
end
|
49
49
|
|
50
50
|
def self.check_types
|
@@ -126,3 +126,4 @@ class ::Hash
|
|
126
126
|
end
|
127
127
|
|
128
128
|
Scale::Types.debug = false
|
129
|
+
Scale::Types.logger = Logger.new(STDOUT)
|
data/lib/scale/version.rb
CHANGED
data/lib/substrate_client.rb
CHANGED
@@ -122,8 +122,8 @@ class SubstrateClient
|
|
122
122
|
block = self.chain_getBlock(block_hash)
|
123
123
|
SubstrateClient::Helper.decode_block(block)
|
124
124
|
rescue => ex
|
125
|
-
|
126
|
-
|
125
|
+
Scale::Types.logger.error ex
|
126
|
+
Scale::Types.logger.error ex.backtrace.join("\n\t")
|
127
127
|
end
|
128
128
|
|
129
129
|
def get_block_events(block_hash=nil)
|
data/lib/type_builder.rb
CHANGED
@@ -41,11 +41,12 @@ module Scale
|
|
41
41
|
# 5. Struct, 6. Enum, 7. Set
|
42
42
|
else
|
43
43
|
|
44
|
-
|
44
|
+
type_info.transform_keys!(&:to_sym)
|
45
|
+
if type_info[:type] == "struct"
|
45
46
|
build_struct(type_info)
|
46
|
-
elsif type_info[
|
47
|
+
elsif type_info[:type] == "enum"
|
47
48
|
build_enum(type_info)
|
48
|
-
elsif type_info[
|
49
|
+
elsif type_info[:type] == "set"
|
49
50
|
build_set(type_info)
|
50
51
|
else
|
51
52
|
raise Scale::TypeBuildError.new("Failed to build a type from #{type_info}")
|
@@ -158,7 +159,7 @@ module Scale
|
|
158
159
|
|
159
160
|
def build_struct(type_info)
|
160
161
|
# items: {"a" => Type}
|
161
|
-
items = type_info[
|
162
|
+
items = type_info[:type_mapping].map do |item|
|
162
163
|
item_name = item[0]
|
163
164
|
item_type = get(item[1])
|
164
165
|
[item_name, item_type]
|
@@ -183,10 +184,10 @@ module Scale
|
|
183
184
|
|
184
185
|
# not implemented: ["Compact", "Hex"]
|
185
186
|
def build_enum(type_info)
|
186
|
-
#
|
187
|
-
if type_info.has_key?(
|
187
|
+
# type_mapping: [["Item1", "Compact"], [["Item2", "Hex"]]
|
188
|
+
if type_info.has_key?(:type_mapping)
|
188
189
|
# items: {a: Type}
|
189
|
-
items = type_info[
|
190
|
+
items = type_info[:type_mapping].map do |item|
|
190
191
|
item_name = item[0]
|
191
192
|
item_type = get(item[1])
|
192
193
|
[item_name.to_sym, item_type]
|
@@ -210,14 +211,14 @@ module Scale
|
|
210
211
|
end
|
211
212
|
end
|
212
213
|
|
213
|
-
# [1, "hello"]
|
214
|
-
if type_info.has_key?(
|
215
|
-
type_name = "Enum#{type_info[
|
214
|
+
# value_list: [1, "hello"]
|
215
|
+
if type_info.has_key?(:value_list)
|
216
|
+
type_name = "Enum#{type_info[:value_list].map {|value| value.to_s.camelize2}.join}"
|
216
217
|
|
217
218
|
if !Scale::Types.const_defined?(type_name)
|
218
219
|
klass = Class.new do
|
219
220
|
include Scale::Types::Enum
|
220
|
-
values *type_info[
|
221
|
+
values *type_info[:value_list]
|
221
222
|
end
|
222
223
|
return Scale::Types.const_set type_name, klass
|
223
224
|
else
|
@@ -237,12 +238,12 @@ module Scale
|
|
237
238
|
# }
|
238
239
|
# }
|
239
240
|
def build_set(type_info)
|
240
|
-
type_name = "Set#{type_info[
|
241
|
+
type_name = "Set#{type_info[:value_list].keys.map(&:camelize2).join("")}"
|
241
242
|
if !Scale::Types.const_defined?(type_name)
|
242
|
-
bytes_length = type_info[
|
243
|
+
bytes_length = type_info[:value_type][1..].to_i / 8
|
243
244
|
klass = Class.new do
|
244
245
|
include Scale::Types::Set
|
245
|
-
items type_info[
|
246
|
+
items type_info[:value_list], bytes_length
|
246
247
|
end
|
247
248
|
return Scale::Types.const_set type_name, klass
|
248
249
|
else
|
data/lib/type_registry.rb
CHANGED
@@ -26,7 +26,7 @@ module Scale
|
|
26
26
|
@types = default_types.merge(spec_types)
|
27
27
|
rescue => ex
|
28
28
|
# TODO: check different errors
|
29
|
-
|
29
|
+
Scale::Types.logger.error "There is no types json file named #{spec_name}"
|
30
30
|
@types = default_types
|
31
31
|
end
|
32
32
|
else
|
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.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Wu Minzhe
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-08-
|
11
|
+
date: 2021-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: blake2b_rs
|