class Platon::Solidity

Constants

OUTPUT_REGEXP

Public Class Methods

new(bin_path = "solc") click to toggle source
# File lib/platon/solidity.rb, line 15
def initialize(bin_path = "solc")
  @bin_path = bin_path
  @args = "--bin --abi --optimize"
end

Public Instance Methods

compile(filename) click to toggle source
# File lib/platon/solidity.rb, line 20
def compile(filename)
  result = {}
  execute_solc(filename).scan(OUTPUT_REGEXP).each do |match|
    _file, name, bin, abi = match
    result[name] = {}
    result[name]["abi"] = abi
    result[name]["bin"] = bin
  end
  result
end

Private Instance Methods

execute_solc(filename) click to toggle source
# File lib/platon/solidity.rb, line 32
def execute_solc(filename)
  p cmd = "#{@bin_path} #{@args} '#{filename}'"
  out, stderr, status = Open3.capture3(cmd)
  raise SystemCallError, "Unanable to run solc compliers" if status.exitstatus == 127
  raise CompilationError, stderr unless status.exitstatus == 0
  out
end