/**
* Copyright (c) 2012-2016 André Bargull
* Alle Rechte vorbehalten / All Rights Reserved. Use is subject to license terms.
*
* <https://github.com/anba/es6draft>
*/
package com.github.anba.es6draft.scripting;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.UncheckedIOException;
import java.io.Writer;
import javax.script.ScriptContext;
import com.github.anba.es6draft.runtime.internal.Console;
/**
*
*/
final class ScriptingConsole implements Console {
private final BufferedReader reader;
private final PrintWriter writer;
private final PrintWriter errorWriter;
ScriptingConsole(ScriptContext context) {
this.reader = new BufferedReader(context.getReader());
this.writer = printWriter(context.getWriter());
this.errorWriter = printWriter(context.getErrorWriter());
}
private static PrintWriter printWriter(Writer writer) {
if (writer instanceof PrintWriter) {
return (PrintWriter) writer;
}
return new PrintWriter(writer, true);
}
@Override
public void printf(String format, Object... args) {
writer.format(format, args).flush();
}
@Override
public void flush() {
writer.flush();
errorWriter.flush();
}
@Override
public String readLine() {
try {
return reader.readLine();
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
@Override
public String readLine(String prompt) {
if (!prompt.isEmpty()) {
writer.append(prompt).flush();
}
return readLine();
}
@Override
public Reader reader() {
return reader;
}
@Override
public PrintWriter writer() {
return writer;
}
@Override
public PrintWriter errorWriter() {
return errorWriter;
}
}