class EthereumEx::ContractInitializer

Attributes

abi[RW]
binary[RW]
contract[RW]
libraries[RW]
name[RW]
needs_linking[RW]
project_initializer[RW]

Public Class Methods

new(contract_name, contract, project_initializer) click to toggle source
# File lib/ethereumex/contract_initializer.rb, line 7
def initialize(contract_name, contract, project_initializer)
  @abi = JSON.parse(contract["abi"]) unless contract.nil?
  @binary = contract["bin"] unless contract.nil?
  @name = contract_name
  @project_initializer = project_initializer
  matchdata = @binary.scan(/_+[a-zA-Z]+_+/).uniq
  @needs_linking = matchdata.present?
  if @needs_linking
    @libraries = matchdata.collect do |libname|
      {name: libname.gsub(/_+/,''), sigil: libname}
    end
  end
end

Public Instance Methods

build(connection) click to toggle source
# File lib/ethereumex/contract_initializer.rb, line 42
def build(connection)
  @contract = Ethereum::Contract.new(@name, @binary, @abi) 
  @contract.build(connection)
end
generate_javascripts(path) click to toggle source
# File lib/ethereumex/contract_initializer.rb, line 47
def generate_javascripts(path)
  data = {name: @name, abi: @abi, binary: @binary}
  File.open(File.join(path, "#{@name}.json"), 'w') {|f| f.puts data.to_json}
end