Package org.codehaus.janino.util
Class AutoIndentWriter
- java.lang.Object
-
- java.io.Writer
-
- java.io.FilterWriter
-
- org.codehaus.janino.util.AutoIndentWriter
-
- All Implemented Interfaces:
java.io.Closeable,java.io.Flushable,java.lang.Appendable,java.lang.AutoCloseable
public class AutoIndentWriter extends java.io.FilterWriterAFilterWriterthat indents lines by processing some control characters in the character stream.INDENTorUNINDENTmay precede lines and indicate that the line and all following lines should be (un)indented by one position.TABULATORs may appear anywhere in lines and dictate that portions of all following lines should be vertically aligned (seeresolveTabs(List)).
-
-
Field Summary
Fields Modifier and Type Field Description static charCLEAR_TABULATORSSpecial character at the beginning of a line that flushes a tabular layout.static charINDENTSpecial character at the beginning of a line that indents the following text by one position.private intindentationprivate java.lang.StringBuilderlineBufferBuffer for the "current line", including the trailing line break (CR, LF or CRLF).static charTABULATORSpecial character indicating a tabular layout of all following lines untilUNINDENT.private java.util.List<java.lang.StringBuilder>tabulatorBufferIff non-null, then we are in "tab mode".private inttabulatorIndentationTheindentationwhen tab mode started.static charUNINDENTSpecial character at the beginning of a line that unindents the following text by one position.
-
Constructor Summary
Constructors Constructor Description AutoIndentWriter(java.io.Writer out)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()voidflush()private voidflushTabulatorBuffer()private voidline(java.lang.String line)private static voidresolveTabs(java.util.List<java.lang.StringBuilder> lineGroup)private static java.lang.Stringspaces(int n)voidwrite(char[] cbuf, int off, int len)voidwrite(int c)voidwrite(java.lang.String str, int off, int len)
-
-
-
Field Detail
-
TABULATOR
public static final char TABULATOR
Special character indicating a tabular layout of all following lines untilUNINDENT.- See Also:
- Constant Field Values
-
CLEAR_TABULATORS
public static final char CLEAR_TABULATORS
Special character at the beginning of a line that flushes a tabular layout.- See Also:
- Constant Field Values
-
INDENT
public static final char INDENT
Special character at the beginning of a line that indents the following text by one position.- See Also:
- Constant Field Values
-
UNINDENT
public static final char UNINDENT
Special character at the beginning of a line that unindents the following text by one position.- See Also:
- Constant Field Values
-
lineBuffer
private final java.lang.StringBuilder lineBuffer
Buffer for the "current line", including the trailing line break (CR, LF or CRLF).
-
indentation
private int indentation
-
tabulatorBuffer
@Nullable private java.util.List<java.lang.StringBuilder> tabulatorBuffer
Iff non-null, then we are in "tab mode". While in tab mode, lines are not printed immediately, but stored in this buffer. Tab mode starts when a line contains aTABULATOR. Tab mode ends when output is unindented beyond the level when tab mode started, or when this writer is closed.When tab mode ends, all buffered lines are vertically aligned at the
TABULATORs and printed.
-
tabulatorIndentation
private int tabulatorIndentation
Theindentationwhen tab mode started.
-
-
Method Detail
-
write
public void write(@Nullable char[] cbuf, int off, int len) throws java.io.IOException
- Overrides:
writein classjava.io.FilterWriter- Throws:
java.io.IOException
-
write
public void write(@Nullable java.lang.String str, int off, int len) throws java.io.IOException
- Overrides:
writein classjava.io.FilterWriter- Throws:
java.io.IOException
-
write
public void write(int c) throws java.io.IOException- Overrides:
writein classjava.io.FilterWriter- Throws:
java.io.IOException
-
line
private void line(java.lang.String line) throws java.io.IOException- Throws:
java.io.IOException
-
flushTabulatorBuffer
private void flushTabulatorBuffer() throws java.io.IOException- Throws:
java.io.IOException
-
resolveTabs
private static void resolveTabs(java.util.List<java.lang.StringBuilder> lineGroup)
-
spaces
private static java.lang.String spaces(int n)
- Returns:
- a
Stringofnspaces
-
close
public void close() throws java.io.IOException- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Overrides:
closein classjava.io.FilterWriter- Throws:
java.io.IOException
-
flush
public void flush() throws java.io.IOException- Specified by:
flushin interfacejava.io.Flushable- Overrides:
flushin classjava.io.FilterWriter- Throws:
java.io.IOException
-
-