Class: Etherlite::Contract::Function
- Inherits:
-
Object
- Object
- Etherlite::Contract::Function
- Defined in:
- lib/etherlite/contract/function.rb
Instance Attribute Summary collapse
-
#inputs ⇒ Object
readonly
Returns the value of attribute inputs.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#outputs ⇒ Object
readonly
Returns the value of attribute outputs.
Instance Method Summary collapse
- #constant? ⇒ Boolean
- #decode(_connection, _data) ⇒ Object
- #encode(_values) ⇒ Object
-
#initialize(_name, _inputs, _outputs, _payable, _constant) ⇒ Function
constructor
A new instance of Function.
- #payable? ⇒ Boolean
- #signature ⇒ Object
Constructor Details
#initialize(_name, _inputs, _outputs, _payable, _constant) ⇒ Function
Returns a new instance of Function.
5 6 7 8 9 10 11 12 |
# File 'lib/etherlite/contract/function.rb', line 5 def initialize(_name, _inputs, _outputs, _payable, _constant) @name = _name @inputs = _inputs @outputs = _outputs @payable = _payable @constant = _constant end |
Instance Attribute Details
#inputs ⇒ Object (readonly)
Returns the value of attribute inputs.
3 4 5 |
# File 'lib/etherlite/contract/function.rb', line 3 def inputs @inputs end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
3 4 5 |
# File 'lib/etherlite/contract/function.rb', line 3 def name @name end |
#outputs ⇒ Object (readonly)
Returns the value of attribute outputs.
3 4 5 |
# File 'lib/etherlite/contract/function.rb', line 3 def outputs @outputs end |
Instance Method Details
#constant? ⇒ Boolean
14 15 16 |
# File 'lib/etherlite/contract/function.rb', line 14 def constant? @constant end |
#decode(_connection, _data) ⇒ Object
44 45 46 47 48 49 |
# File 'lib/etherlite/contract/function.rb', line 44 def decode(_connection, _data) return nil if @outputs.empty? result = Etherlite::Support::Array.decode(_connection, @outputs, _data[2..-1]) result.length > 1 ? result : result[0] end |
#encode(_values) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/etherlite/contract/function.rb', line 29 def encode(_values) if _values.length != @inputs.count raise ArgumentError, "Expected #{@inputs.count} arguments, got #{_values.length} " end encoded_inputs = Etherlite::Support::Array.encode(@inputs.map(&:type), _values) if @name signature_hash = Etherlite::Utils.sha3 signature '0x' + signature_hash[0..7] + encoded_inputs else encoded_inputs # if no name is provided, just render arguments end end |
#payable? ⇒ Boolean
18 19 20 |
# File 'lib/etherlite/contract/function.rb', line 18 def payable? @payable end |
#signature ⇒ Object
22 23 24 25 26 27 |
# File 'lib/etherlite/contract/function.rb', line 22 def signature @signature ||= begin arg_signatures = @inputs.map &:signature "#{@name}(#{arg_signatures.join(',')})" end end |