Sha256: 1986fcdf5748cfc74d69c7eb0f63337785801f3861c6bd45eee41b5926796393
Contents?: true
Size: 1.29 KB
Versions: 1
Compression:
Stored size: 1.29 KB
Contents
require_relative '../parser/abi_parser' module AbiCoderRb class Type class << self def parse(str) abi_type_element = AbiCoderRb::AbiParser.new(str).parse create_type(abi_type_element) end private def create_type(element) case element[:type] when 'string' then String.new when 'address' then Address.new when 'bool' then Bool.new when 'uint', 'int' then create_numeric_type(element) when 'bytes' then create_bytes_type(element) when 'tuple' then create_tuple_type(element) when 'array' then create_array_type(element) else raise ParseError, "Unknown type: #{element}" end end def create_tuple_type(abi_type) Tuple.new(abi_type[:inner_types].map { |t| create_type(t) }) end def create_numeric_type(abi_type) abi_type[:type] == 'uint' ? Uint.new(abi_type[:bits]) : Int.new(abi_type[:bits]) end def create_bytes_type(abi_type) abi_type[:length] ? FixedBytes.new(abi_type[:length]) : Bytes.new end def create_array_type(abi_type) inner_type = create_type(abi_type[:inner_type]) abi_type[:length] ? FixedArray.new(inner_type, abi_type[:length]) : Array.new(inner_type) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
abi_coder_rb-0.2.9 | lib/abi_coder_rb/type/parse.rb |