Class: AbiCoderRb::AbiParser

Inherits:
Object
  • Object
show all
Defined in:
lib/abi_coder_rb/parser/abi_parser.rb

Instance Method Summary collapse

Constructor Details

#initialize(abi) ⇒ AbiParser

Returns a new instance of AbiParser.



5
6
7
8
# File 'lib/abi_coder_rb/parser/abi_parser.rb', line 5

def initialize(abi)
  @tokenizer = AbiTokenizer.new(abi)
  @current_token = @tokenizer.next_token
end

Instance Method Details

#parseObject



10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/abi_coder_rb/parser/abi_parser.rb', line 10

def parse
  element =
    case @current_token
    when "string", "address", "bool" then parse_simple_type
    when "uint", "int" then parse_numeric_type
    when "bytes" then parse_bytes
    when "(" then parse_tuple
    else
      raise ParseError, "Unexpected token: #{@current_token}"
    end

  @current_token == "[" ? parse_array(element) : element
end