Class: Etherlite::Abi::LoadFunction

Inherits:
Object
  • Object
show all
Defined in:
lib/etherlite/commands/abi/load_function.rb

Constant Summary collapse

MATCHER =
/^(payable|onchain|\w[\w\d]*) (\w[\w\d]*)\((.*?)\)$/

Instance Method Summary collapse

Instance Method Details

#performObject

Raises:

  • (ArgumentError)


5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/etherlite/commands/abi/load_function.rb', line 5

def perform
  parts = MATCHER.match @signature
  raise ArgumentError, 'invalid method signature' if parts.nil?

  args = parts[3].split(',').map { |a| LoadType.for(signature: a.strip) }

  case parts[1]
  when 'payable'
    build parts[2], args, payable: true
  when 'onchain'
    build parts[2], args
  else
    return_type = parts[1] == 'void' ? nil : LoadType.for(signature: parts[1])
    build parts[2], args, constant: true, returns: return_type
  end
end