2016-02-12 122 views
0

我所要做的是創建一個程序來充當REPL之間的中保(可以說斯卡拉REPL)和用戶。換句話說,用戶應該輸入命令,而不是直接進入REPL執行,而是將它們傳遞給程序,然後程序在做一些編輯後將其返回給REPL執行,顯示答案等等上。一個REPL和程序之間的相互作用

我迄今爲止得到的使用scala.tools.jline.console.ConsoleReader顯示一個提示,一個簡單的界面,讓用戶輸入並調用get_edited_data

後顯示的結果我也知道,叫「斯卡拉」! <自己完成這項工作相當好。 我無法將自己的想法包裹起來,就是如何連接它們。我已經嘗試使用ProcessIO沒有運氣。

import java.io.PrintWriter 
import scala.sys.process._ 
import scala.tools.jline.console.ConsoleReader 

object Interfere { 

    def main(args: Array[String]) { 

    val repl = "scala" 
    val console = new ConsoleReader 
    val prompt = "prompt> " 
    console.setPrompt(prompt) 
    val out = new PrintWriter(
     console.getTerminal.wrapOutIfNeeded(System.out) 
    ) 
    var line = console.readLine 
    while (!line.equals("bye")) { 
     val res = get_edited_data(line) 
     out.println(s"The answer: $res") 
     out.flush() 
     line = console.readLine 
    } 
    } 
} 

我所做的與ProcessIO是像下面。但它沒有意義,因爲不可能將當前行作爲輸入,並且通常可以訪問賦予它的內容。

Process(repl).run(
     new ProcessIO(
     stdin => line, 
     stdout => out, 
     stderr => out 
    ) 
    ) 

回答

相關問題