scale.rb 0.2.18 → 0.3.2

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.
@@ -1,7 +1,7 @@
1
1
  module Scale
2
2
  module Types
3
3
  class MetadataV1
4
- include SingleValue
4
+ include Base
5
5
  attr_accessor :call_index, :event_index
6
6
 
7
7
  def initialize(value)
@@ -11,7 +11,7 @@ module Scale
11
11
  end
12
12
 
13
13
  def self.decode(scale_bytes)
14
- modules = Scale::Types.type_of("Vec<MetadataV1Module>").decode(scale_bytes).value
14
+ modules = Scale::Types.get("Vec<MetadataV1Module>").decode(scale_bytes).value
15
15
 
16
16
  value = {
17
17
  magicNumber: 1_635_018_093,
@@ -49,7 +49,7 @@ module Scale
49
49
  end
50
50
 
51
51
  class MetadataV1Module
52
- include SingleValue
52
+ include Base
53
53
  def self.decode(scale_bytes)
54
54
  name = String.decode(scale_bytes).value
55
55
  prefix = String.decode(scale_bytes).value
@@ -61,19 +61,19 @@ module Scale
61
61
 
62
62
  has_storage = Bool.decode(scale_bytes).value
63
63
  if has_storage
64
- storages = Scale::Types.type_of("Vec<MetadataV1ModuleStorage>").decode(scale_bytes).value
64
+ storages = Scale::Types.get("Vec<MetadataV1ModuleStorage>").decode(scale_bytes).value
65
65
  result[:storage] = storages.map(&:value)
66
66
  end
67
67
 
68
68
  has_calls = Bool.decode(scale_bytes).value
69
69
  if has_calls
70
- calls = Scale::Types.type_of("Vec<MetadataModuleCall>").decode(scale_bytes).value
70
+ calls = Scale::Types.get("Vec<MetadataModuleCall>").decode(scale_bytes).value
71
71
  result[:calls] = calls.map(&:value)
72
72
  end
73
73
 
74
74
  has_events = Bool.decode(scale_bytes).value
75
75
  if has_events
76
- events = Scale::Types.type_of("Vec<MetadataModuleEvent>").decode(scale_bytes).value
76
+ events = Scale::Types.get("Vec<MetadataModuleEvent>").decode(scale_bytes).value
77
77
  result[:events] = events.map(&:value)
78
78
  end
79
79
 
@@ -82,11 +82,15 @@ module Scale
82
82
  end
83
83
 
84
84
  class MetadataV1ModuleStorage
85
- include SingleValue
85
+ include Base
86
86
 
87
87
  def self.decode(scale_bytes)
88
88
  name = Bytes.decode(scale_bytes).value
89
- modifier = Scale::Types.type_of("Enum", ["Optional", "Default"]).decode(scale_bytes).value
89
+ enum = {
90
+ "type" => "enum",
91
+ "value_list" => ["Optional", "Default"]
92
+ }
93
+ modifier = Scale::Types.get(enum).decode(scale_bytes).value
90
94
 
91
95
  is_key_value = Bool.decode(scale_bytes).value
92
96
 
@@ -104,7 +108,7 @@ module Scale
104
108
  end
105
109
 
106
110
  fallback = Hex.decode(scale_bytes).value
107
- docs = Scale::Types.type_of("Vec<Bytes>").decode(scale_bytes).value.map(&:value)
111
+ docs = Scale::Types.get("Vec<Bytes>").decode(scale_bytes).value.map(&:value)
108
112
 
109
113
  MetadataV1ModuleStorage.new({
110
114
  name: name,
@@ -1,7 +1,7 @@
1
1
  module Scale
2
2
  module Types
3
3
  class MetadataV10
4
- include SingleValue
4
+ include Base
5
5
  attr_accessor :call_index, :event_index
6
6
 
7
7
  def initialize(value)
@@ -11,7 +11,7 @@ module Scale
11
11
  end
12
12
 
13
13
  def self.decode(scale_bytes)
14
- modules = Scale::Types.type_of("Vec<MetadataV8Module>").decode(scale_bytes).value
14
+ modules = Scale::Types.get("Vec<MetadataV8Module>").decode(scale_bytes).value
15
15
 
16
16
  value = {
17
17
  magicNumber: 1_635_018_093,
@@ -1,7 +1,7 @@
1
1
  module Scale
2
2
  module Types
3
3
  class MetadataV11
4
- include SingleValue
4
+ include Base
5
5
  attr_accessor :call_index, :event_index
6
6
 
7
7
  def initialize(value)
@@ -11,7 +11,7 @@ module Scale
11
11
  end
12
12
 
13
13
  def self.decode(scale_bytes)
14
- modules = Scale::Types.type_of("Vec<MetadataV8Module>").decode(scale_bytes).value
14
+ modules = Scale::Types.get("Vec<MetadataV8Module>").decode(scale_bytes).value
15
15
 
16
16
  value = {
17
17
  magicNumber: 1_635_018_093,
@@ -1,7 +1,7 @@
1
1
  module Scale
2
2
  module Types
3
3
  class MetadataV12
4
- include SingleValue
4
+ include Base
5
5
  attr_accessor :call_index, :event_index
6
6
 
7
7
  def initialize(value)
@@ -11,7 +11,7 @@ module Scale
11
11
  end
12
12
 
13
13
  def self.decode(scale_bytes)
14
- modules = Scale::Types.type_of("Vec<MetadataV12Module>").decode(scale_bytes).value
14
+ modules = Scale::Types.get("Vec<MetadataV12Module>").decode(scale_bytes).value
15
15
 
16
16
  value = {
17
17
  magicNumber: 1_635_018_093,
@@ -26,7 +26,8 @@ module Scale
26
26
  call_module_index = 0
27
27
  event_module_index = 0
28
28
 
29
- modules.map(&:value).each_with_index do |m, module_index|
29
+ modules.map(&:value).each do |m|
30
+ module_index = m[:index]
30
31
  if m[:calls]
31
32
  m[:calls].each_with_index do |call, index|
32
33
  call[:lookup] = "%02x%02x" % [module_index, index]
@@ -47,7 +48,7 @@ module Scale
47
48
  end
48
49
 
49
50
  class MetadataV12Module
50
- include SingleValue
51
+ include Base
51
52
  def self.decode(scale_bytes)
52
53
  name = String.decode(scale_bytes).value
53
54
 
@@ -64,18 +65,18 @@ module Scale
64
65
 
65
66
  has_calls = Bool.decode(scale_bytes).value
66
67
  if has_calls
67
- calls = Scale::Types.type_of("Vec<MetadataModuleCall>").decode(scale_bytes).value
68
+ calls = Scale::Types.get("Vec<MetadataModuleCall>").decode(scale_bytes).value
68
69
  result[:calls] = calls.map(&:value)
69
70
  end
70
71
 
71
72
  has_events = Bool.decode(scale_bytes).value
72
73
  if has_events
73
- events = Scale::Types.type_of("Vec<MetadataModuleEvent>").decode(scale_bytes).value
74
+ events = Scale::Types.get("Vec<MetadataModuleEvent>").decode(scale_bytes).value
74
75
  result[:events] = events.map(&:value)
75
76
  end
76
77
 
77
- result[:constants] = Scale::Types.type_of("Vec<MetadataV7ModuleConstants>").decode(scale_bytes).value.map(&:value)
78
- result[:errors] = Scale::Types.type_of("Vec<MetadataModuleError>").decode(scale_bytes).value.map(&:value)
78
+ result[:constants] = Scale::Types.get("Vec<MetadataV7ModuleConstants>").decode(scale_bytes).value.map(&:value)
79
+ result[:errors] = Scale::Types.get("Vec<MetadataModuleError>").decode(scale_bytes).value.map(&:value)
79
80
 
80
81
  result[:index] = U8.decode(scale_bytes).value
81
82
  MetadataV12Module.new(result)
@@ -0,0 +1,161 @@
1
+ module Scale
2
+ module Types
3
+ class MetadataV13
4
+ include Base
5
+ attr_accessor :call_index, :event_index
6
+
7
+ def initialize(value)
8
+ @call_index = {}
9
+ @event_index = {}
10
+ super(value)
11
+ end
12
+
13
+ def self.decode(scale_bytes)
14
+ modules = Scale::Types.get("Vec<MetadataV13Module>").decode(scale_bytes).value
15
+
16
+ value = {
17
+ magicNumber: 1_635_018_093,
18
+ metadata: {
19
+ version: 12,
20
+ modules: modules.map(&:value)
21
+ }
22
+ }
23
+
24
+ result = MetadataV13.new(value)
25
+
26
+ call_module_index = 0
27
+ event_module_index = 0
28
+
29
+ modules.map(&:value).each do |m|
30
+ module_index = m[:index]
31
+ if m[:calls]
32
+ m[:calls].each_with_index do |call, index|
33
+ call[:lookup] = "%02x%02x" % [module_index, index]
34
+ result.call_index[call[:lookup]] = [m, call]
35
+ end
36
+ end
37
+
38
+ if m[:events]
39
+ m[:events].each_with_index do |event, index|
40
+ event[:lookup] = "%02x%02x" % [module_index, index]
41
+ result.event_index[event[:lookup]] = [m, event]
42
+ end
43
+ end
44
+ end
45
+
46
+ result
47
+ end
48
+ end
49
+
50
+ class MetadataV13ModuleStorage
51
+ include Base
52
+ def self.decode(scale_bytes)
53
+ prefix = String.decode(scale_bytes).value
54
+ items = Scale::Types.get("Vec<MetadataV13ModuleStorageEntry>").decode(scale_bytes).value.map(&:value)
55
+ result = {
56
+ prefix: prefix,
57
+ items: items
58
+ }
59
+
60
+ MetadataV13ModuleStorage.new(result)
61
+ end
62
+ end
63
+
64
+ class MetadataV13ModuleStorageEntry
65
+ include Base
66
+ def self.decode(scale_bytes)
67
+ name = String.decode(scale_bytes).value
68
+ modifier_enum = {
69
+ "type" => "enum",
70
+ "value_list" => ["Optional", "Default"]
71
+ }
72
+ modifier = Scale::Types.get(modifier_enum).decode(scale_bytes).value
73
+ result = {
74
+ name: name,
75
+ modifier: modifier
76
+ }
77
+
78
+ storage_function_type_enum = {
79
+ "type" => "enum",
80
+ "value_list" => %w[Plain Map DoubleMap NMap]
81
+ }
82
+ storage_function_type = Scale::Types.get(storage_function_type_enum).decode(scale_bytes).value
83
+ if storage_function_type == "Plain"
84
+ result[:type] = {
85
+ Plain: String.decode(scale_bytes).value
86
+ }
87
+ elsif storage_function_type == "Map"
88
+ result[:type] = {
89
+ Map: {
90
+ hasher: StorageHasher.decode(scale_bytes).value,
91
+ key: String.decode(scale_bytes).value,
92
+ value: String.decode(scale_bytes).value,
93
+ linked: Bool.decode(scale_bytes).value
94
+ }
95
+ }
96
+ elsif storage_function_type == "DoubleMap"
97
+ result[:type] = {
98
+ DoubleMap: {
99
+ hasher: StorageHasher.decode(scale_bytes).value,
100
+ key1: String.decode(scale_bytes).value,
101
+ key2: String.decode(scale_bytes).value,
102
+ value: String.decode(scale_bytes).value,
103
+ key2Hasher: StorageHasher.decode(scale_bytes).value
104
+ }
105
+ }
106
+ elsif storage_function_type == "NMap"
107
+ keys = Scale::Types.get("Vec<String>").decode(scale_bytes).value.map(&:value)
108
+ hashers = Scale::Types.get("Vec<StorageHasher>").decode(scale_bytes).value.map(&:value)
109
+ result[:type] = {
110
+ NMap: {
111
+ hashers: hashers,
112
+ keys: keys,
113
+ value: String.decode(scale_bytes).value,
114
+ }
115
+ }
116
+ end
117
+
118
+ result[:fallback] = Hex.decode(scale_bytes).value
119
+ result[:documentation] = Scale::Types.get("Vec<String>").decode(scale_bytes).value.map(&:value)
120
+
121
+ MetadataV13ModuleStorageEntry.new(result)
122
+ end
123
+ end
124
+
125
+ class MetadataV13Module
126
+ include Base
127
+ def self.decode(scale_bytes)
128
+ name = String.decode(scale_bytes).value
129
+
130
+ result = {
131
+ name: name
132
+ }
133
+
134
+ has_storage = Bool.decode(scale_bytes).value
135
+ if has_storage
136
+ storage = MetadataV13ModuleStorage.decode(scale_bytes).value
137
+ result[:storage] = storage
138
+ result[:prefix] = storage[:prefix]
139
+ end
140
+
141
+ has_calls = Bool.decode(scale_bytes).value
142
+ if has_calls
143
+ calls = Scale::Types.get("Vec<MetadataModuleCall>").decode(scale_bytes).value
144
+ result[:calls] = calls.map(&:value)
145
+ end
146
+
147
+ has_events = Bool.decode(scale_bytes).value
148
+ if has_events
149
+ events = Scale::Types.get("Vec<MetadataModuleEvent>").decode(scale_bytes).value
150
+ result[:events] = events.map(&:value)
151
+ end
152
+
153
+ result[:constants] = Scale::Types.get("Vec<MetadataV7ModuleConstants>").decode(scale_bytes).value.map(&:value)
154
+ result[:errors] = Scale::Types.get("Vec<MetadataModuleError>").decode(scale_bytes).value.map(&:value)
155
+
156
+ result[:index] = U8.decode(scale_bytes).value
157
+ MetadataV13Module.new(result)
158
+ end
159
+ end
160
+ end
161
+ end
@@ -1,7 +1,7 @@
1
1
  module Scale
2
2
  module Types
3
3
  class MetadataV2
4
- include SingleValue
4
+ include Base
5
5
  attr_accessor :call_index, :event_index
6
6
 
7
7
  def initialize(value)
@@ -11,7 +11,7 @@ module Scale
11
11
  end
12
12
 
13
13
  def self.decode(scale_bytes)
14
- modules = Scale::Types.type_of("Vec<MetadataModule>").decode(scale_bytes).value
14
+ modules = Scale::Types.get("Vec<MetadataModule>").decode(scale_bytes).value
15
15
 
16
16
  value = {
17
17
  magicNumber: 1_635_018_093,
@@ -1,7 +1,7 @@
1
1
  module Scale
2
2
  module Types
3
3
  class MetadataV3
4
- include SingleValue
4
+ include Base
5
5
  attr_accessor :call_index, :event_index
6
6
 
7
7
  def initialize(value)
@@ -11,7 +11,7 @@ module Scale
11
11
  end
12
12
 
13
13
  def self.decode(scale_bytes)
14
- modules = Scale::Types.type_of("Vec<MetadataModule>").decode(scale_bytes).value
14
+ modules = Scale::Types.get("Vec<MetadataModule>").decode(scale_bytes).value
15
15
 
16
16
  value = {
17
17
  magicNumber: 1_635_018_093,
@@ -1,7 +1,7 @@
1
1
  module Scale
2
2
  module Types
3
3
  class MetadataV4
4
- include SingleValue
4
+ include Base
5
5
  attr_accessor :call_index, :event_index
6
6
 
7
7
  def initialize(value)
@@ -11,7 +11,7 @@ module Scale
11
11
  end
12
12
 
13
13
  def self.decode(scale_bytes)
14
- modules = Scale::Types.type_of("Vec<MetadataV4Module>").decode(scale_bytes).value
14
+ modules = Scale::Types.get("Vec<MetadataV4Module>").decode(scale_bytes).value
15
15
 
16
16
  value = {
17
17
  magicNumber: 1_635_018_093,
@@ -49,7 +49,7 @@ module Scale
49
49
  end
50
50
 
51
51
  class MetadataV4Module
52
- include SingleValue
52
+ include Base
53
53
  def self.decode(scale_bytes)
54
54
  name = String.decode(scale_bytes).value
55
55
  prefix = String.decode(scale_bytes).value
@@ -61,19 +61,19 @@ module Scale
61
61
 
62
62
  has_storage = Bool.decode(scale_bytes).value
63
63
  if has_storage
64
- storages = Scale::Types.type_of("Vec<MetadataV4ModuleStorage>").decode(scale_bytes).value
64
+ storages = Scale::Types.get("Vec<MetadataV4ModuleStorage>").decode(scale_bytes).value
65
65
  result[:storage] = storages.map(&:value)
66
66
  end
67
67
 
68
68
  has_calls = Bool.decode(scale_bytes).value
69
69
  if has_calls
70
- calls = Scale::Types.type_of("Vec<MetadataModuleCall>").decode(scale_bytes).value
70
+ calls = Scale::Types.get("Vec<MetadataModuleCall>").decode(scale_bytes).value
71
71
  result[:calls] = calls.map(&:value)
72
72
  end
73
73
 
74
74
  has_events = Bool.decode(scale_bytes).value
75
75
  if has_events
76
- events = Scale::Types.type_of("Vec<MetadataModuleEvent>").decode(scale_bytes).value
76
+ events = Scale::Types.get("Vec<MetadataModuleEvent>").decode(scale_bytes).value
77
77
  result[:events] = events.map(&:value)
78
78
  end
79
79
 
@@ -82,14 +82,24 @@ module Scale
82
82
  end
83
83
 
84
84
  class MetadataV4ModuleStorage
85
- include SingleValue
85
+ include Base
86
86
  def self.decode(scale_bytes)
87
+ name = String.decode(scale_bytes).value
88
+ modifier_enum = {
89
+ "type" => "enum",
90
+ "value_list" => ["Optional", "Default"]
91
+ }
92
+ modifier = Scale::Types.get(modifier_enum).decode(scale_bytes).value
87
93
  result = {
88
- name: String.decode(scale_bytes).value,
89
- modifier: Scale::Types.type_of("Enum", %w[Optional Default]).decode(scale_bytes).value
94
+ name: name,
95
+ modifier: modifier
90
96
  }
91
97
 
92
- storage_function_type = Scale::Types.type_of("Enum", %w[Plain Map DoubleMap]).decode(scale_bytes).value
98
+ storage_function_type_enum = {
99
+ "type" => "enum",
100
+ "value_list" => %w[Plain Map DoubleMap]
101
+ }
102
+ storage_function_type = Scale::Types.get(storage_function_type_enum).decode(scale_bytes).value
93
103
  if storage_function_type == "Plain"
94
104
  result[:type] = {
95
105
  Plain: String.decode(scale_bytes).value
@@ -116,7 +126,7 @@ module Scale
116
126
  end
117
127
 
118
128
  result[:fallback] = Hex.decode(scale_bytes).value
119
- result[:documentation] = Scale::Types.type_of("Vec<String>").decode(scale_bytes).value.map(&:value)
129
+ result[:documentation] = Scale::Types.get("Vec<String>").decode(scale_bytes).value.map(&:value)
120
130
 
121
131
  MetadataV4ModuleStorage.new(result)
122
132
  end