gnu.text

Class PrettyWriter


public class PrettyWriter
extends java.io.Writer

A pretty printer. This code is transcribed from pprint.lisp in Steel Bank Common Lisp, which is again based on the code in CMU Common Lisp.

Field Summary

static int
NEWLINE_FILL
static int
NEWLINE_LINEAR
static int
NEWLINE_LITERAL
static int
NEWLINE_MANDATORY
static int
NEWLINE_MISER
static int
NEWLINE_SPACE
A non-nested ' ' gets an implicit NEWLINE_SPACE.
char[]
buffer
Holds all the text that has been output but not yet printed.
int
bufferFillPointer
The index into BUFFER where more text should be put.
static ThreadLocation
indentLoc
static int
initialBufferSize
static ThreadLocation
lineLengthLoc
static ThreadLocation
miserWidthLoc
protected Writer
out
int
pendingBlocksCount
Number of startLogicalBlock - number of endLogicalBlock.

Constructor Summary

PrettyWriter(java.io.Writer out)
PrettyWriter(java.io.Writer out, boolean prettyPrintingMode)
PrettyWriter(java.io.Writer out, int lineLength)

Method Summary

void
addIndentation(int amount, boolean current)
void
clearBuffer()
void
clearWordEnd()
void
close()
void
endLogicalBlock()
void
endLogicalBlock(String suffix)
int
enqueue(int kind, int size)
int
enqueueIndent(char kind, int amount)
void
enqueueNewline(int kind)
void
flush()
void
forcePrettyOutput()
int
getColumnNumber()
Not meaningful if prettyPrintingMode > 0.
protected int
getMiserWidth()
int
getPrettyPrintingMode()
Return pretty-printing mode.
boolean
isPrettyPrinting()
Is pretty printing enabled?
void
lineAbbreviationHappened()
void
setColumnNumber(int column)
void
setIndentation(int column)
void
setPrettyPrinting(boolean mode)
Turn pretty printing on or off.
void
setPrettyPrintingMode(int mode)
Control pretty-printing mode.
void
startLogicalBlock(String prefix, boolean perLine, String suffix)
void
write(String str)
void
write(String str, int start, int count)
void
write(char[] str)
void
write(char[] str, int start, int count)
void
write(int ch)
void
writeBreak(int kind)
void
writeWordEnd()
Note the end of a "word".
void
writeWordStart()
Maybe write a word-separating space.

Field Details

NEWLINE_FILL

public static final int NEWLINE_FILL
Field Value:
70

NEWLINE_LINEAR

public static final int NEWLINE_LINEAR
Field Value:
78

NEWLINE_LITERAL

public static final int NEWLINE_LITERAL
Field Value:
76

NEWLINE_MANDATORY

public static final int NEWLINE_MANDATORY
Field Value:
82

NEWLINE_MISER

public static final int NEWLINE_MISER
Field Value:
77

NEWLINE_SPACE

public static final int NEWLINE_SPACE
A non-nested ' ' gets an implicit NEWLINE_SPACE. This is treated similarly to NEWLINE_FILL, but not quite.
Field Value:
83

buffer

public char[] buffer
Holds all the text that has been output but not yet printed.

bufferFillPointer

public int bufferFillPointer
The index into BUFFER where more text should be put.

indentLoc

public static ThreadLocation indentLoc

initialBufferSize

public static int initialBufferSize

lineLengthLoc

public static ThreadLocation lineLengthLoc

miserWidthLoc

public static ThreadLocation miserWidthLoc

out

protected Writer out

pendingBlocksCount

public int pendingBlocksCount
Number of startLogicalBlock - number of endLogicalBlock.

Constructor Details

PrettyWriter

public PrettyWriter(java.io.Writer out)

PrettyWriter

public PrettyWriter(java.io.Writer out,
                    boolean prettyPrintingMode)

PrettyWriter

public PrettyWriter(java.io.Writer out,
                    int lineLength)

Method Details

addIndentation

public void addIndentation(int amount,
                           boolean current)

clearBuffer

public void clearBuffer()

clearWordEnd

public void clearWordEnd()

close

public void close()
            throws IOException

endLogicalBlock

public void endLogicalBlock()

endLogicalBlock

public void endLogicalBlock(String suffix)

enqueue

public int enqueue(int kind,
                   int size)

enqueueIndent

public int enqueueIndent(char kind,
                         int amount)

enqueueNewline

public void enqueueNewline(int kind)

flush

public void flush()

forcePrettyOutput

public void forcePrettyOutput()
            throws IOException

getColumnNumber

public int getColumnNumber()
Not meaningful if prettyPrintingMode > 0.

getMiserWidth

protected int getMiserWidth()

getPrettyPrintingMode

public int getPrettyPrintingMode()
Return pretty-printing mode.

isPrettyPrinting

public boolean isPrettyPrinting()
Is pretty printing enabled?

lineAbbreviationHappened

public void lineAbbreviationHappened()

setColumnNumber

public void setColumnNumber(int column)

setIndentation

public void setIndentation(int column)

setPrettyPrinting

public void setPrettyPrinting(boolean mode)
Turn pretty printing on or off. Equivalent to setPrettyPrintingMode(mode?1:0).

setPrettyPrintingMode

public void setPrettyPrintingMode(int mode)
Control pretty-printing mode.
Parameters:
mode - the value 0 disables pretty-printing; the value 1 enables ecplicit pretty-printing; the value 2 enables pretty-printing with auto-fill, which means that spaces are treated like enqueing NEWLINE_SPACE (essentiall a 'fill').

startLogicalBlock

public void startLogicalBlock(String prefix,
                              boolean perLine,
                              String suffix)

write

public void write(String str)

write

public void write(String str,
                  int start,
                  int count)

write

public void write(char[] str)

write

public void write(char[] str,
                  int start,
                  int count)

write

public void write(int ch)

writeBreak

public final void writeBreak(int kind)

writeWordEnd

public void writeWordEnd()

writeWordStart

public void writeWordStart()