Class AbstractFormattedWalker
- All Implemented Interfaces:
Walker
- Direct Known Subclasses:
WalkerNORMALIZE
,WalkerTRIM
,WalkerTRIM_FULL_WHITE
The JDOM content can be loosely categorised in to 'Text-like' content (consisting of Text, CDATA, and EntityRef), and everything else. This distinction is significant for for this class and its sub-classes.
There will be text manipulation, and some (but not necessarily all) Text-like content will be returned as text() instead of next().
The trick in this class is that it deals with the regular content, and delegates the Text-like content to the sub-classes.
Subclasses are tasked with analysing chunks of Text-like content in the
analyzeMultiText(MultiText, int, int)
method. The subclasses are
responsible for adding the relevant text content to the suppliedMultiText
instance in such a way as to result in the correct format.
The Subclass needs to concern itself with only the text portion because this abstract class will ensure the Text-like content is appropriately indented.
- Author:
- Rolf Lear
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected final class
Collect together the items that constitute formatted Text-like content.protected static enum
Indicate how text content should be added -
Constructor Summary
ConstructorsConstructorDescriptionAbstractFormattedWalker
(List<? extends Content> xx, FormatStack fstack, boolean doescape) Create a Walker that preserves all content in its raw state. -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract void
analyzeMultiText
(AbstractFormattedWalker.MultiText mtext, int offset, int len) Add the content at the specified indices to the provided MultiText.protected final Content
get
(int index) Get the content at a position in the input content.final boolean
hasNext()
Behaves similarly to to a regular Iteratorfinal boolean
If all the content in this walker is empty, or if whatever content is available is Text-like.final boolean
If all the content is Text-like (Walker.isAllText()
returns true), and additionally that any content is either Text or CDATA, and that the values of these Text/CDATA members are all XML Whitespace.final boolean
isCDATA()
If the previous next() method returned null, then this will indicate whether the current text() value is CDATA or regular Text.final Content
next()
Similar to an Iterator, but null return values need special treatment.final String
text()
If the previous call to next() returned null, then this will return the required text to be processed.
-
Constructor Details
-
AbstractFormattedWalker
Create a Walker that preserves all content in its raw state.- Parameters:
xx
- the content to walk.fstack
- the current FormatStackdoescape
- Whether Text values should be escaped.
-
-
Method Details
-
next
Description copied from interface:Walker
Similar to an Iterator, but null return values need special treatment. -
analyzeMultiText
protected abstract void analyzeMultiText(AbstractFormattedWalker.MultiText mtext, int offset, int len) Add the content at the specified indices to the provided MultiText.- Parameters:
mtext
- the MultiText to append to.offset
- The first Text-like content to add to the MultiTextlen
- The number of Text-like content items to add.
-
get
Get the content at a position in the input content. Useful for subclasses in theiranalyzeMultiText(MultiText, int, int)
calls.- Parameters:
index
- the index to get the content at.- Returns:
- the content at the index.
-
isAllText
public final boolean isAllText()Description copied from interface:Walker
-
hasNext
public final boolean hasNext()Description copied from interface:Walker
Behaves similarly to to a regular Iterator -
text
Description copied from interface:Walker
If the previous call to next() returned null, then this will return the required text to be processed. Check to see whether this text is CDATA by calling the isCDATA() method. -
isCDATA
public final boolean isCDATA()Description copied from interface:Walker
If the previous next() method returned null, then this will indicate whether the current text() value is CDATA or regular Text. -
isAllWhitespace
public final boolean isAllWhitespace()Description copied from interface:Walker
If all the content is Text-like (Walker.isAllText()
returns true), and additionally that any content is either Text or CDATA, and that the values of these Text/CDATA members are all XML Whitespace.- Specified by:
isAllWhitespace
in interfaceWalker
- Returns:
- true
-