class Scale::Types::MetadataV4ModuleStorage
Public Class Methods
decode(scale_bytes)
click to toggle source
# File lib/metadata/metadata_v4.rb, line 86 def self.decode(scale_bytes) name = String.decode(scale_bytes).value modifier_enum = { "type" => "enum", "value_list" => ["Optional", "Default"] } modifier = Scale::Types.get(modifier_enum).decode(scale_bytes).value result = { name: name, modifier: modifier } storage_function_type_enum = { "type" => "enum", "value_list" => %w[Plain Map DoubleMap] } storage_function_type = Scale::Types.get(storage_function_type_enum).decode(scale_bytes).value if storage_function_type == "Plain" result[:type] = { Plain: String.decode(scale_bytes).value } elsif storage_function_type == "Map" result[:type] = { Map: { hasher: StorageHasher.decode(scale_bytes).value, key: String.decode(scale_bytes).value, value: String.decode(scale_bytes).value, linked: Bool.decode(scale_bytes).value } } elsif storage_function_type == "DoubleMap" result[:type] = { DoubleMap: { hasher: StorageHasher.decode(scale_bytes).value, key1: String.decode(scale_bytes).value, key2: String.decode(scale_bytes).value, value: String.decode(scale_bytes).value, key2Hasher: StorageHasher.decode(scale_bytes).value } } end result[:fallback] = Hex.decode(scale_bytes).value result[:documentation] = Scale::Types.get("Vec<String>").decode(scale_bytes).value.map(&:value) MetadataV4ModuleStorage.new(result) end