/** * 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.repl.console; import java.io.Console; import java.io.PrintWriter; import java.io.Reader; /** * {@link ShellConsole} implementation for native consoles. */ public final class NativeConsole implements ShellConsole { private final Console console; private final PrintWriter errorWriter; public NativeConsole() { this.console = System.console(); this.errorWriter = new PrintWriter(System.err, true); } @Override public void printf(String format, Object... args) { console.printf(format, args); console.flush(); } @Override public void flush() { console.flush(); errorWriter.flush(); } @Override public String readLine() { return console.readLine(); } @Override public String readLine(String prompt) { if (!prompt.isEmpty()) { console.writer().append(prompt).flush(); } return readLine(); } @Override public Reader reader() { return console.reader(); } @Override public PrintWriter writer() { return console.writer(); } @Override public PrintWriter errorWriter() { return errorWriter; } }