class EthereumContractABI::Encoders::BytesEncoder
Public Class Methods
encode(bytes_to_encode, num_bytes = nil)
click to toggle source
# File lib/ethereum-contract-abi/encoders/bytes_encoder.rb, line 9 def self.encode(bytes_to_encode, num_bytes = nil) if bytes_to_encode.methods.include?(:start_with?) && bytes_to_encode.start_with?("0x") bytes_to_encode = Util.toHexByteString(bytes_to_encode.slice(2, bytes_to_encode.length)) end unless num_bytes.nil? raise ArgumentError.new("Too many bytes to encode") unless bytes_to_encode.bytesize <= num_bytes return self.encode_bytes(bytes_to_encode) end num_bytes_encoded = IntEncoder.encode(bytes_to_encode.bytesize) num_bytes_encoded + self.encode_bytes(bytes_to_encode) end
Private Class Methods
encode_bytes(bytes_to_encode)
click to toggle source
# File lib/ethereum-contract-abi/encoders/bytes_encoder.rb, line 25 def self.encode_bytes(bytes_to_encode) final_length = (bytes_to_encode.bytesize / 32.to_f).ceil * 32 bytes_to_encode + Constants::BYTE_ZERO * (final_length - bytes_to_encode.bytesize) end