Package groovy.util

Class IndentPrinter


  • public class IndentPrinter
    extends Object
    A helper class for printing indented text. This can be used stand-alone or, more commonly, from Builders.

    By default, a PrintWriter to System.out is used as the Writer, but it is possible to change the Writer by passing a new one as a constructor argument.

    Indention by default is 2 characters but can be changed by passing a different value as a constructor argument.

    The following is an example usage. Note that within a "with" block you need to specify a parameter name so that this.println is not called instead of IndentPrinter.println:

     new IndentPrinter(new PrintWriter(out)).with { p ->
         p.printIndent()
         p.println('parent1')
         p.incrementIndent()
         p.printIndent()
         p.println('child 1')
         p.printIndent()
         p.println('child 2')
         p.decrementIndent()
         p.printIndent()
         p.println('parent2')
         p.flush()
     }
     
    The above example prints this to standard output:
     parent1
       child 1
       child 2
     parent2
     
    • Constructor Detail

      • IndentPrinter

        public IndentPrinter()
        Creates an IndentPrinter backed by a PrintWriter pointing to System.out, with an indent of two spaces.
        See Also:
        IndentPrinter(Writer, String)
      • IndentPrinter

        public IndentPrinter​(Writer out)
        Creates an IndentPrinter backed by the supplied Writer, with an indent of two spaces.
        Parameters:
        out - Writer to output to
        See Also:
        IndentPrinter(Writer, String)
      • IndentPrinter

        public IndentPrinter​(Writer out,
                             String indent)
        Creates an IndentPrinter backed by the supplied Writer, with a user-supplied String to be used for indenting.
        Parameters:
        out - Writer to output to
        indent - character(s) used to indent each line
      • IndentPrinter

        public IndentPrinter​(Writer out,
                             String indent,
                             boolean addNewlines)
        Creates an IndentPrinter backed by the supplied Writer, with a user-supplied String to be used for indenting and the ability to override newline handling.
        Parameters:
        out - Writer to output to
        indent - character(s) used to indent each line
        addNewlines - set to false to gobble all new lines (default true)
      • IndentPrinter

        public IndentPrinter​(Writer out,
                             String indent,
                             boolean addNewlines,
                             boolean autoIndent)
        Create an IndentPrinter to the given PrintWriter
        Parameters:
        out - Writer to output to
        indent - character(s) used to indent each line
        addNewlines - set to false to gobble all new lines (default true)
        autoIndent - set to true to make println() prepend the indent automatically (default false)
    • Method Detail

      • println

        public void println​(String text)
        Prints a string followed by an end of line character.
        Parameters:
        text - String to be written
      • print

        public void print​(String text)
        Prints a string.
        Parameters:
        text - String to be written
      • print

        public void print​(char c)
        Prints a character.
        Parameters:
        c - char to be written
      • printIndent

        public void printIndent()
        Prints the current indent level.
      • println

        public void println()
        Prints an end-of-line character (if enabled via addNewLines property). Defaults to outputting a single '\n' character but by using a custom Writer, e.g. PlatformLineWriter, you can get platform-specific end-of-line characters.
        See Also:
        IndentPrinter(Writer, String, boolean)
      • incrementIndent

        public void incrementIndent()
      • decrementIndent

        public void decrementIndent()
      • getIndentLevel

        public int getIndentLevel()
      • setIndentLevel

        public void setIndentLevel​(int indentLevel)
      • getAutoIndent

        public boolean getAutoIndent()
      • setAutoIndent

        public void setAutoIndent​(boolean autoIndent)
      • flush

        public void flush()