Package groovy.util
Class IndentPrinter
java.lang.Object
groovy.util.IndentPrinter
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
ConstructorsConstructorDescriptionCreates 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 TypeMethodDescriptionvoidDecreases the indentation level by one.voidflush()Flushes the underlying writer.booleanIndicates whetherprintln(String)should emit indentation automatically.intReturns the current indentation level.voidIncreases the indentation level by one.voidprint(char c) Prints a character.voidPrints a string.voidPrints the current indent level.voidprintln()Prints an end-of-line character (if enabled via addNewLines property).voidPrints a string followed by an end of line character.voidsetAutoIndent(boolean autoIndent) Enables or disables automatic indentation forprintln(String).voidsetIndentLevel(int indentLevel) Sets the indentation level.
-
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
Creates an IndentPrinter backed by the supplied Writer, with an indent of two spaces.- Parameters:
out- Writer to output to- See Also:
-
IndentPrinter
Creates an IndentPrinter backed by the supplied Writer, with a user-supplied String to be used for indenting.- Parameters:
out- Writer to output toindent- character(s) used to indent each line
-
IndentPrinter
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 toindent- character(s) used to indent each lineaddNewlines- set to false to gobble all new lines (default true)
-
IndentPrinter
Create an IndentPrinter to the given PrintWriter- Parameters:
out- Writer to output toindent- character(s) used to indent each lineaddNewlines- 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
Prints a string followed by an end of line character.- Parameters:
text- String to be written
-
print
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 whetherprintln(String)should emit indentation automatically.- Returns:
trueif automatic indentation is enabled
-
setAutoIndent
public void setAutoIndent(boolean autoIndent) Enables or disables automatic indentation forprintln(String).- Parameters:
autoIndent-trueto enable automatic indentation
-
flush
public void flush()Flushes the underlying writer.
-