scale_rb 0.1.15 → 0.2.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,64 +1,66 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module StorageHelper
4
- class << self
5
- # key: {
6
- # value: ,
7
- # type: ,
8
- # hashers: []
9
- # }
10
- def encode_storage_key(pallet_name, item_name, key = nil, registry = nil)
11
- storage_key = Hasher.twox128(pallet_name) + Hasher.twox128(item_name)
3
+ module ScaleRb
4
+ module StorageHelper
5
+ class << self
6
+ # key: {
7
+ # value: ,
8
+ # type: ,
9
+ # hashers: []
10
+ # }
11
+ def encode_storage_key(pallet_name, item_name, key = nil, registry = nil)
12
+ storage_key = Hasher.twox128(pallet_name) + Hasher.twox128(item_name)
12
13
 
13
- if key && registry
14
+ if key && registry
14
15
 
15
- key_types, key_values, key_hashers =
16
- if key[:hashers].length == 1
17
- [
18
- [key[:type]],
19
- key[:value],
20
- key[:hashers]
21
- ]
22
- else
23
- [
24
- registry[key[:type]]._get(:def)._get(:tuple).first(key[:value].length),
25
- key[:value],
26
- key[:hashers].first(key[:value].length)
27
- ]
16
+ key_types, key_values, key_hashers =
17
+ if key[:hashers].length == 1
18
+ [
19
+ [key[:type]],
20
+ [key[:value]],
21
+ key[:hashers]
22
+ ]
23
+ else
24
+ [
25
+ registry[key[:type]]._get(:def)._get(:tuple).first(key[:value].length),
26
+ key[:value],
27
+ key[:hashers].first(key[:value].length)
28
+ ]
29
+ end
30
+
31
+ if key_types.class != key_values.class || key_types.length != key_values.length
32
+ raise "Key's value doesn't match key's type, key's value: #{key_values.inspect}, but key's type: #{key_types.inspect}. Please check your key's value."
28
33
  end
29
34
 
30
- if key_types.class != key_values.class || key_types.length != key_values.length
31
- raise "Key's value doesn't match key's type, key's value: #{key_values.inspect}, but key's type: #{key_types.inspect}. Please check your key's value."
35
+ storage_key + PortableCodec._encode_types_with_hashers(key_types, key_values, registry, key_hashers)
36
+ else
37
+ storage_key
32
38
  end
33
-
34
- storage_key + PortableCodec._encode_types_with_hashers(key_types, key_values, registry, key_hashers)
35
- else
36
- storage_key
37
39
  end
38
- end
39
40
 
40
- # data: hex string
41
- # type: portable type id
42
- # optional: boolean
43
- # fallback: hex string
44
- # returns nil or data
45
- def decode_storage(data, type, optional, fallback, registry)
46
- data ||= (optional ? nil : fallback)
47
- PortableCodec.decode(type, data.to_bytes, registry)[0] if data
48
- end
41
+ # data: hex string
42
+ # type: portable type id
43
+ # optional: boolean
44
+ # fallback: hex string
45
+ # returns nil or data
46
+ def decode_storage(data, type, optional, fallback, registry)
47
+ data ||= (optional ? nil : fallback)
48
+ PortableCodec.decode(type, data._to_bytes, registry)[0] if data
49
+ end
49
50
 
50
- # storage_item: the storage item from metadata
51
- def decode_storage2(data, storage_item, registry)
52
- modifier = storage_item._get(:modifier) # Default | Optional
53
- fallback = storage_item._get(:fallback)
54
- type = storage_item._get(:type)._get(:plain) || storage_item._get(:type)._get(:map)._get(:value)
55
- decode_storage(data, type, modifier == 'Optional', fallback, registry)
56
- end
51
+ # storage_item: the storage item from metadata
52
+ def decode_storage2(data, storage_item, registry)
53
+ modifier = storage_item._get(:modifier) # Default | Optional
54
+ fallback = storage_item._get(:fallback)
55
+ type = storage_item._get(:type)._get(:plain) || storage_item._get(:type)._get(:map)._get(:value)
56
+ decode_storage(data, type, modifier == 'Optional', fallback, registry)
57
+ end
57
58
 
58
- def decode_storage3(data, pallet_name, item_name, metadata)
59
- registry = Metadata.build_registry(metadata)
60
- storage_item = Metadata.get_storage_item(pallet_name, item_name, metadata)
61
- decode_storage2(data, storage_item, registry)
59
+ def decode_storage3(data, pallet_name, item_name, metadata)
60
+ registry = Metadata.build_registry(metadata)
61
+ storage_item = Metadata.get_storage_item(pallet_name, item_name, metadata)
62
+ decode_storage2(data, storage_item, registry)
63
+ end
62
64
  end
63
65
  end
64
66
  end
data/scale_rb.gemspec CHANGED
@@ -16,6 +16,11 @@ Gem::Specification.new do |spec|
16
16
 
17
17
  spec.metadata['homepage_uri'] = spec.homepage
18
18
 
19
+ spec.metadata = {
20
+ 'bug_tracker_uri' => 'https://github.com/wuminzhe/scale_rb/issues/',
21
+ 'source_code_uri' => 'https://github.com/wuminzhe/scale_rb.git'
22
+ }
23
+
19
24
  # Specify which files should be added to the gem when it is released.
20
25
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
21
26
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
@@ -26,7 +31,7 @@ Gem::Specification.new do |spec|
26
31
  spec.require_paths = ['lib']
27
32
 
28
33
  # for hashers
34
+ spec.add_dependency 'base58'
29
35
  spec.add_dependency 'blake2b_rs', '~> 0.1.4'
30
36
  spec.add_dependency 'xxhash'
31
- spec.add_dependency "base58"
32
37
  end
metadata CHANGED
@@ -1,45 +1,45 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scale_rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.15
4
+ version: 0.2.2
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-10-05 00:00:00.000000000 Z
11
+ date: 2024-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: blake2b_rs
14
+ name: base58
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.4
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.1.4
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: xxhash
28
+ name: blake2b_rs
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 0.1.4
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: 0.1.4
41
41
  - !ruby/object:Gem::Dependency
42
- name: base58
42
+ name: xxhash
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -99,8 +99,8 @@ homepage: https://github.com/wuminzhe/scale_rb
99
99
  licenses:
100
100
  - MIT
101
101
  metadata:
102
- allowed_push_host: https://rubygems.org
103
- homepage_uri: https://github.com/wuminzhe/scale_rb
102
+ bug_tracker_uri: https://github.com/wuminzhe/scale_rb/issues/
103
+ source_code_uri: https://github.com/wuminzhe/scale_rb.git
104
104
  post_install_message:
105
105
  rdoc_options: []
106
106
  require_paths: