class Platon::Function
Attributes
constant[RW]
function_string[RW]
inputs[RW]
name[RW]
outputs[RW]
signature[RW]
Public Class Methods
calc_id(signature)
click to toggle source
# File lib/platon/function.rb, line 31 def self.calc_id(signature) Digest::SHA3.hexdigest(signature, 256)[0..7] end
calc_signature(name, inputs)
click to toggle source
# File lib/platon/function.rb, line 27 def self.calc_signature(name, inputs) "#{name}(#{inputs.collect {|x| self.to_canonical_type(x.type) }.join(",")})" end
new(data)
click to toggle source
# File lib/platon/function.rb, line 6 def initialize(data) @name = data["name"] @constant = data["constant"] @inputs = data["inputs"].map do |input| Platon::FunctionInput.new(input) end @outputs = data["outputs"].collect do |output| Platon::FunctionOutput.new(output) end @function_string = self.class.calc_signature(@name, @inputs) @signature = self.class.calc_id(@function_string) end
to_canonical_type(type)
click to toggle source
# File lib/platon/function.rb, line 19 def self.to_canonical_type(type) type .gsub(/(int)(\z|\D)/, '\1256\2') .gsub(/(uint)(\z|\D)/, '\1256\2') .gsub(/(fixed)(\z|\D)/, '\1128x128\2') .gsub(/(ufixed)(\z|\D)/, '\1128x128\2') end