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

Author:
  James Strachan

## 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()`
`void`
`flush()`
`boolean`
`getAutoIndent()`
`int`
`getIndentLevel()`
`void`
`incrementIndent()`
`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)`
`void`
`setIndentLevel(int indentLevel)`

### 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()

### 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()