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
  `IndentPrinter()`
  Creates an IndentPrinter backed by a PrintWriter pointing to System.out, with an indent of two spaces.
  `IndentPrinter(Writer out)`
  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`
  `decrementIndent()`
  Decreases the indentation level by one.
  `void`
  `flush()`
  Flushes the underlying writer.
  `boolean`
  `getAutoIndent()`
  Indicates whether `println(String)` should emit indentation automatically.
  `int`
  `getIndentLevel()`
  Returns the current indentation level.
  `void`
  `incrementIndent()`
  Increases the indentation level by one.
  `void`
  `print(char c)`
  Prints a character.
  `void`
  `print(String text)`
  Prints a string.
  `void`
  `printIndent()`
  Prints the current indent level.
  `void`
  `println()`
  Prints an end-of-line character (if enabled via addNewLines property).
  `void`
  `println(String text)`
  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(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 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:
      - `IndentPrinter(Writer, String, boolean)`

  - ### 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.