Skip to content

Commit f8e88f9

Browse files
committed
Script engine : implement eval(reader)
1 parent 38272aa commit f8e88f9

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

compiler/src/dotty/tools/repl/ScriptEngine.scala

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package dotty.tools
22
package repl
33

4-
import java.io.Reader
4+
import java.io.{Reader, StringWriter}
55
import javax.script.{AbstractScriptEngine, Bindings, ScriptContext, ScriptEngine => JScriptEngine, ScriptEngineFactory, ScriptException, SimpleBindings}
66
import dotc.core.StdNames.str
77

@@ -44,7 +44,20 @@ class ScriptEngine extends AbstractScriptEngine {
4444
}
4545

4646
@throws[ScriptException]
47-
def eval(reader: Reader, context: ScriptContext): Object = throw new UnsupportedOperationException
47+
def eval(reader: Reader, context: ScriptContext): Object = eval(stringFromReader(reader), context)
48+
49+
private val buffer = new Array[Char](8192)
50+
51+
def stringFromReader(in: Reader) = {
52+
val out = new StringWriter
53+
var n = in.read(buffer)
54+
while (n > -1) {
55+
out.write(buffer, 0, n)
56+
n = in.read(buffer)
57+
}
58+
in.close
59+
out.toString
60+
}
4861
}
4962

5063
object ScriptEngine {

0 commit comments

Comments
 (0)