Sha256: 578bac0467c0df625a24f9415a55fc6d845d18e9872a2983dc490cbd0905f8c6
Contents?: true
Size: 919 Bytes
Versions: 1
Compression:
Stored size: 919 Bytes
Contents
require "readline" require "tmpdir" require "open3" require "irust/template_renderer" module IRust module_function def read Readline.readline("irust> ", true) end def rust_program(line, history) IRust::TemplateRenderer.new(line, history).render end def compile(tmpdir) Dir.chdir(tmpdir) do stdin, stderr, status = Open3.capture3("rustc irust.rs") if status.success? true else STDERR.puts stderr false end end end def eval(line, history = nil) exit 0 if line.nil? Dir.mktmpdir do |tmpdir| input_src = File.join(tmpdir, "irust.rs") File.write input_src, rust_program(line, history) if compile(tmpdir) system input_src.sub(/\.rs$/, '') history + ";\n" + line else history end end end def run history = "" loop { history = eval read, history } end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
irust-1.1.0 | lib/irust.rb |