groovy.util
Class IndentPrinter

java.lang.Object
  extended by 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
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.
 
Method Summary
 void decrementIndent()
           
 void flush()
           
 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 setIndentLevel(int indentLevel)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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

flush

public void flush()

Copyright © 2003-2012 The Codehaus. All rights reserved.