Package groovy.util

Class IndentPrinter

java.lang.Object
groovy.util.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 Summary

    Constructors
    Constructor
    Description
    Creates an IndentPrinter backed by a PrintWriter pointing to System.out, with an indent of two spaces.
    Creates an IndentPrinter backed by the supplied Writer, with an indent of two spaces.
    IndentPrinter(Writer out, String indent)
    Creates an IndentPrinter backed by the supplied Writer, with a user-supplied String to be used for indenting.
    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.
    IndentPrinter(Writer out, String indent, boolean addNewlines, boolean autoIndent)
    Create an IndentPrinter to the given PrintWriter
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Decreases the indentation level by one.
    void
    Flushes the underlying writer.
    boolean
    Indicates whether println(String) should emit indentation automatically.
    int
    Returns the current indentation level.
    void
    Increases the indentation level by one.
    void
    print(char c)
    Prints a character.
    void
    print(String text)
    Prints a string.
    void
    Prints the current indent level.
    void
    Prints an end-of-line character (if enabled via addNewLines property).
    void
    Prints a string followed by an end of line character.
    void
    setAutoIndent(boolean autoIndent)
    Enables or disables automatic indentation for println(String).
    void
    setIndentLevel(int indentLevel)
    Sets the indentation level.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • IndentPrinter

      public IndentPrinter()
      Creates an IndentPrinter backed by a PrintWriter pointing to System.out, with an indent of two spaces.
      See Also:
    • 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

      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 Details

    • 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:
    • incrementIndent

      public void incrementIndent()
      Increases the indentation level by one.
    • decrementIndent

      public void decrementIndent()
      Decreases the indentation level by one.
    • getIndentLevel

      public int getIndentLevel()
      Returns the current indentation level.
      Returns:
      the indentation level
    • setIndentLevel

      public void setIndentLevel(int indentLevel)
      Sets the indentation level.
      Parameters:
      indentLevel - the new indentation level
    • getAutoIndent

      public boolean getAutoIndent()
      Indicates whether println(String) should emit indentation automatically.
      Returns:
      true if automatic indentation is enabled
    • setAutoIndent

      public void setAutoIndent(boolean autoIndent)
      Enables or disables automatic indentation for println(String).
      Parameters:
      autoIndent - true to enable automatic indentation
    • flush

      public void flush()
      Flushes the underlying writer.