Class: EthereumContractABI::Encoders::FunctionEncoder

Inherits:
Object
  • Object
show all
Defined in:
lib/ethereum-contract-abi/encoders/function_encoder.rb

Instance Method Summary collapse

Constructor Details

#initialize(function_inputs) ⇒ FunctionEncoder

Returns a new instance of FunctionEncoder.



7
8
9
# File 'lib/ethereum-contract-abi/encoders/function_encoder.rb', line 7

def initialize(function_inputs)
  @function_inputs = function_inputs
end

Instance Method Details

#encode_dynamic_input(input_values) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/ethereum-contract-abi/encoders/function_encoder.rb', line 11

def encode_dynamic_input(input_values)
  tail = encode_tail(input_values)
  tail_offsets = get_tail_offsets(input_values)
  head = @function_inputs.zip(input_values).map do |input, arg|
    if !input.type.is_dynamic
      input.encode_value(arg)
    else
      EthereumContractABI::Encoders::IntEncoder.encode(tail_offsets.shift)
    end
  end
  head.join('') + tail.join('')
end

#encode_static_input(input_values) ⇒ Object



24
25
26
27
28
# File 'lib/ethereum-contract-abi/encoders/function_encoder.rb', line 24

def encode_static_input(input_values)
  @function_inputs.zip(input_values).map do |input, arg|
    input.encode_value(arg)
  end.join('')
end