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

Version Path
etherlite-0.6.0 lib/etherlite/commands/abi/load_function.rb
etherlite-0.5.3 lib/etherlite/commands/abi/load_function.rb
etherlite-0.5.2 lib/etherlite/commands/abi/load_function.rb
etherlite-0.5.1 lib/etherlite/commands/abi/load_function.rb
etherlite-0.5.0 lib/etherlite/commands/abi/load_function.rb
etherlite-0.4.2 lib/etherlite/commands/abi/load_function.rb
etherlite-0.4.1 lib/etherlite/commands/abi/load_function.rb
etherlite-0.4.0 lib/etherlite/commands/abi/load_function.rb
etherlite-0.3.0 lib/etherlite/commands/abi/load_function.rb
etherlite-0.2.6 lib/etherlite/commands/abi/load_function.rb
etherlite-0.2.5 lib/etherlite/commands/abi/load_function.rb
etherlite-0.2.4 lib/etherlite/commands/abi/load_function.rb
etherlite-0.2.3 lib/etherlite/commands/abi/load_function.rb
etherlite-0.2.2 lib/etherlite/commands/abi/load_function.rb
etherlite-0.2.1 lib/etherlite/commands/abi/load_function.rb
etherlite-0.2.0 lib/etherlite/commands/abi/load_function.rb
etherlite-0.1.8 lib/etherlite/commands/abi/load_function.rb
etherlite-0.1.7 lib/etherlite/commands/abi/load_function.rb