Sha256: a460ff6556d0a2946e0d5c46f48bf38d9cc06113c3e17318527ffc6056ac663b
Contents?: true
Size: 835 Bytes
Versions: 18
Compression:
Stored size: 835 Bytes
Contents
module Etherlite::Abi class LoadFunction < PowerTypes::Command.new(:signature) MATCHER = /^(payable|onchain|\w[\w\d]*) (\w[\w\d]*)\((.*?)\)$/ def perform parts = MATCHER.match @signature raise ArgumentError, 'invalid method signature' if parts.nil? inputs = parts[3].split(',').map do |a| Etherlite::Contract::FunctionInput.new nil, LoadType.for(signature: a.strip) end case parts[1] when 'payable' build parts[2], inputs, [], true, false when 'onchain' build parts[2], inputs, [], false, false else ouputs = parts[1] == 'void' ? [] : [LoadType.for(signature: parts[1])] build parts[2], inputs, ouputs, false, true end end private def build(*_args) Etherlite::Contract::Function.new *_args end end end
Version data entries
18 entries across 18 versions & 1 rubygems