Class AutoIndentWriter

  • All Implemented Interfaces:
    java.io.Closeable, java.io.Flushable, java.lang.Appendable, java.lang.AutoCloseable

    public class AutoIndentWriter
    extends java.io.FilterWriter
    A FilterWriter that automatically indents lines by looking at trailing opening braces ('{') and leading closing braces ('}').
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static char CLEAR_TABULATORS
      Special character indicating to clear all tabluar layout that was configured through TABULATOR.
      static char INDENT
      Special character that inserts a line break and indents the following text by one position.
      private int indentation  
      private java.lang.StringBuilder lineBuffer  
      static char TABULATOR
      Special character indicating a tabular layout of the following text.
      private java.util.List<java.lang.StringBuilder> tabulatorBuffer  
      private int tabulatorIndentation  
      static char UNINDENT
      Special character that inserts a line break and unindents the following text by one position.
      • Fields inherited from class java.io.FilterWriter

        out
      • Fields inherited from class java.io.Writer

        lock
    • 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
      void close()  
      void flush()  
      private void flushTabulatorBuffer()  
      private void line​(java.lang.String line)  
      private static void resolveTabs​(java.util.List<java.lang.StringBuilder> lineGroup)
      Expands all TABULATORs in the given List of StringBuilders with spaces, so that the characters immediately following the TABULATORs are vertically aligned, like this:
      private static java.lang.String spaces​(int n)  
      void write​(char[] cbuf, int off, int len)  
      void write​(int c)  
      void write​(java.lang.String str, int off, int len)  
      • Methods inherited from class java.io.Writer

        append, append, append, nullWriter, write, write
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • TABULATOR

        public static final char TABULATOR
        Special character indicating a tabular layout of the following text.
        See Also:
        Constant Field Values
      • CLEAR_TABULATORS

        public static final char CLEAR_TABULATORS
        Special character indicating to clear all tabluar layout that was configured through TABULATOR.
        See Also:
        Constant Field Values
      • INDENT

        public static final char INDENT
        Special character that inserts a line break and indents the following text by one position.
        See Also:
        Constant Field Values
      • UNINDENT

        public static final char UNINDENT
        Special character that inserts a line break and unindents the following text by one position.
        See Also:
        Constant Field Values
      • lineBuffer

        private final java.lang.StringBuilder lineBuffer
      • indentation

        private int indentation
      • tabulatorBuffer

        @Nullable
        private java.util.List<java.lang.StringBuilder> tabulatorBuffer
      • tabulatorIndentation

        private int tabulatorIndentation
    • Constructor Detail

      • AutoIndentWriter

        public AutoIndentWriter​(java.io.Writer out)
    • Method Detail

      • write

        public void write​(@Nullable
                          char[] cbuf,
                          int off,
                          int len)
                   throws java.io.IOException
        Overrides:
        write in class java.io.FilterWriter
        Throws:
        java.io.IOException
      • write

        public void write​(@Nullable
                          java.lang.String str,
                          int off,
                          int len)
                   throws java.io.IOException
        Overrides:
        write in class java.io.FilterWriter
        Throws:
        java.io.IOException
      • write

        public void write​(int c)
                   throws java.io.IOException
        Overrides:
        write in class java.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)
        Expands all TABULATORs in the given List of StringBuilders with spaces, so that the characters immediately following the TABULATORs are vertically aligned, like this:

        Input:

           a @b @c\r\n
           aa @bb @cc\r\n
           aaa @bbb @ccc\r\n
         

        Output:

           a   b   c\r\n
           aa  bb  cc\r\n
           aaa bbb ccc\r\n
         
      • spaces

        private static java.lang.String spaces​(int n)
        Returns:
        a String of n spaces
      • close

        public void close()
                   throws java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Overrides:
        close in class java.io.FilterWriter
        Throws:
        java.io.IOException
      • flush

        public void flush()
                   throws java.io.IOException
        Specified by:
        flush in interface java.io.Flushable
        Overrides:
        flush in class java.io.FilterWriter
        Throws:
        java.io.IOException