Package org.python.util
Class ConsoleOutputStream
java.lang.Object
java.io.OutputStream
java.io.FilterOutputStream
org.python.util.ConsoleOutputStream
- All Implemented Interfaces:
Closeable,Flushable,AutoCloseable
This class may be used to wrap and replace
System.out so that the console handling
library (JLine or Java Readline) can treat an incomplete line (one without a newline) as a prompt
string, and so know the true position of the cursor. It achieves this by keeping a copy of bytes
that pass through from from upstream to the true System.out, until either a newline
arrives, or a defined capacity (typically the console width) is reached. If client code requests
the partial line as a prompt, that action also empties the buffer. In that case, the client
(which is the console object) is responsible for making the prompt emerge on the real console.-
Constructor Summary
ConstructorsConstructorDescriptionConsoleOutputStream(OutputStream out, int promptCapacity) Create a wrapper on anOutputStreamthat holds a copy of the last incomplete line written to it (as bytes), in case it is needed as a console prompt. -
Method Summary
Methods inherited from class java.io.FilterOutputStream
write, writeMethods inherited from class java.io.OutputStream
nullOutputStream
-
Constructor Details
-
ConsoleOutputStream
Create a wrapper on anOutputStreamthat holds a copy of the last incomplete line written to it (as bytes), in case it is needed as a console prompt.- Parameters:
out- the stream wrapped (normallySystem.out)promptCapacity- maximum number of bytes to buffer
-
-
Method Details
-
write
This write method steals a copy of each byte in a buffer while passing it on to the wrapped stream. The buffer is reset by each newline, when it overflows, or by the client when it is taken as a console prompt ingetPrompt(Charset).- Overrides:
writein classFilterOutputStream- Throws:
IOException
-
flush
- Specified by:
flushin interfaceFlushable- Overrides:
flushin classFilterOutputStream- Throws:
IOException
-
close
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Overrides:
closein classFilterOutputStream- Throws:
IOException
-