@Component(role=Parser.class, hint="fml") public class FmlParser extends AbstractXmlParser implements FmlMarkup
AbstractXmlParser.CachedFileEntityResolver
Modifier and Type | Field and Description |
---|---|
private java.lang.StringBuilder |
buffer
Used to collect text events.
|
private Faq |
currentFaq
Collect a single faq.
|
private Part |
currentPart
Collect a part.
|
private Faqs |
faqs
Collect a faqs model.
|
private java.lang.String |
macroName
A macro name.
|
private java.util.Map<java.lang.String,java.lang.Object> |
macroParameters
The macro parameters.
|
private java.lang.String |
sourceContent
The source content of the input reader.
|
private java.util.Map<java.lang.String,java.util.Set<java.lang.String>> |
warnMessages
Map of warn messages with a String as key to describe the error type and a Set as value.
|
ANSWER_TAG, FAQ_TAG, FAQS_TAG, FML_NAMESPACE, FML_SYSTEM_ID, MACRO_TAG, PART_TAG, QUESTION_TAG, SOURCE_TAG
A, ABBR, ACRONYM, ADDRESS, APPLET, AREA, ARTICLE, ASIDE, AUDIO, B, BASE, BASEFONT, BDI, BDO, BIG, BLOCKQUOTE, BODY, BR, BUTTON, CANVAS, CAPTION, CDATA_TYPE, CENTER, CITE, CODE, COL, COLGROUP, COMMAND, DATA, DATALIST, DD, DEL, DETAILS, DFN, DIALOG, DIR, DIV, DL, DT, EM, EMBED, ENTITY_TYPE, FIELDSET, FIGCAPTION, FIGURE, FONT, FOOTER, FORM, FRAME, FRAMESET, H1, H2, H3, H4, H5, H6, HEAD, HEADER, HGROUP, HR, HTML, I, IFRAME, IMG, INPUT, INS, ISINDEX, KBD, LABEL, LEGEND, LI, LINK, MAIN, MAP, MARK, MENU, META, METER, NAV, NOFRAMES, NOSCRIPT, OBJECT, OL, OPTGROUP, OPTION, OUTPUT, P, PARAM, PICTURE, PRE, PROGRESS, Q, RB, RP, RT, RTC, RUBY, S, SAMP, SCRIPT, SECTION, SELECT, SMALL, SOURCE, SPAN, STRIKE, STRONG, STYLE, SUB, SUMMARY, SUP, TABLE, TAG_TYPE_END, TAG_TYPE_SIMPLE, TAG_TYPE_START, TBODY, TD, TEMPLATE, TEXTAREA, TFOOT, TH, THEAD, TIME, TITLE, TR, TRACK, TT, U, UL, VAR, VIDEO, WBR
BANG, CDATA, DOCTYPE_START, ENTITY_START, XML_NAMESPACE
COLON, EOL, EQUAL, GREATER_THAN, LEFT_CURLY_BRACKET, LEFT_SQUARE_BRACKET, LESS_THAN, MINUS, PLUS, QUOTE, RIGHT_CURLY_BRACKET, RIGHT_SQUARE_BRACKET, SEMICOLON, SLASH, SPACE, STAR
ROLE, TXT_TYPE, UNKNOWN_TYPE, XML_TYPE
Constructor and Description |
---|
FmlParser() |
Modifier and Type | Method and Description |
---|---|
protected void |
handleCdsect(org.codehaus.plexus.util.xml.pull.XmlPullParser parser,
Sink sink)
Handles CDATA sections.
|
protected void |
handleComment(org.codehaus.plexus.util.xml.pull.XmlPullParser parser,
Sink sink)
Handles comments.
|
protected void |
handleEndTag(org.codehaus.plexus.util.xml.pull.XmlPullParser parser,
Sink sink)
Goes through the possible end tags.
|
protected void |
handleEntity(org.codehaus.plexus.util.xml.pull.XmlPullParser parser,
Sink sink)
Handles entities.
|
private void |
handleMacroEnd(java.lang.StringBuilder buffer)
TODO import from XdocParser, probably need to be generic.
|
private void |
handleMacroStart(org.codehaus.plexus.util.xml.pull.XmlPullParser parser)
TODO import from XdocParser, probably need to be generic.
|
private void |
handleParamStart(org.codehaus.plexus.util.xml.pull.XmlPullParser parser,
Sink sink)
TODO import from XdocParser, probably need to be generic.
|
protected void |
handleStartTag(org.codehaus.plexus.util.xml.pull.XmlPullParser parser,
Sink sink)
Goes through the possible start tags.
|
protected void |
handleText(org.codehaus.plexus.util.xml.pull.XmlPullParser parser,
Sink sink)
Handles text events.
|
protected void |
init()
Initialize the parser.
|
private void |
logMessage(java.lang.String key,
java.lang.String msg)
If debug mode is enabled, log the
msg as is, otherwise add unique msg in warnMessages . |
private void |
logWarnings() |
void |
parse(java.io.Reader source,
Sink sink)
Parses the given source model and emits Doxia events into the given sink.
|
private void |
writeFaqs(Sink sink)
Writes the faqs to the specified sink.
|
private void |
writeTopLink(Sink sink)
Writes a toplink element.
|
getAttributesFromParser, getLocalEntities, getText, getType, handleUnknown, initXmlParser, isCollapsibleWhitespace, isIgnorableWhitespace, isTrimmableWhitespace, isValidate, parse, setCollapsibleWhitespace, setIgnorableWhitespace, setTrimmableWhitespace, setValidate
doxiaVersion, enableLogging, executeMacro, getBasedir, getLog, getMacroManager, isEmitComments, isSecondParsing, parse, setEmitComments, setSecondParsing
private Faqs faqs
private Part currentPart
private Faq currentFaq
private java.lang.StringBuilder buffer
private java.util.Map<java.lang.String,java.util.Set<java.lang.String>> warnMessages
private java.lang.String sourceContent
private java.lang.String macroName
private java.util.Map<java.lang.String,java.lang.Object> macroParameters
public void parse(java.io.Reader source, Sink sink) throws ParseException
parse
in interface Parser
parse
in class AbstractXmlParser
source
- not null reader that provides the source document.
You could use newReader
methods from ReaderFactory
.sink
- A sink that consumes the Doxia events.ParseException
- if the model could not be parsed.protected void handleStartTag(org.codehaus.plexus.util.xml.pull.XmlPullParser parser, Sink sink) throws org.codehaus.plexus.util.xml.pull.XmlPullParserException, MacroExecutionException
handleStartTag
in class AbstractXmlParser
parser
- A parser, not null.sink
- the sink to receive the events.org.codehaus.plexus.util.xml.pull.XmlPullParserException
- if there's a problem parsing the modelMacroExecutionException
- if there's a problem executing a macroprotected void handleEndTag(org.codehaus.plexus.util.xml.pull.XmlPullParser parser, Sink sink) throws org.codehaus.plexus.util.xml.pull.XmlPullParserException, MacroExecutionException
handleEndTag
in class AbstractXmlParser
parser
- A parser, not null.sink
- the sink to receive the events.org.codehaus.plexus.util.xml.pull.XmlPullParserException
- if there's a problem parsing the modelMacroExecutionException
- if there's a problem executing a macroprotected void handleText(org.codehaus.plexus.util.xml.pull.XmlPullParser parser, Sink sink) throws org.codehaus.plexus.util.xml.pull.XmlPullParserException
This is a default implementation, if the parser points to a non-empty text element, it is emitted as a text event into the specified sink.
handleText
in class AbstractXmlParser
parser
- A parser, not null.sink
- the sink to receive the events. Not null.org.codehaus.plexus.util.xml.pull.XmlPullParserException
- if there's a problem parsing the modelprotected void handleCdsect(org.codehaus.plexus.util.xml.pull.XmlPullParser parser, Sink sink) throws org.codehaus.plexus.util.xml.pull.XmlPullParserException
This is a default implementation, all data are emitted as text events into the specified sink.
handleCdsect
in class AbstractXmlParser
parser
- A parser, not null.sink
- the sink to receive the events. Not null.org.codehaus.plexus.util.xml.pull.XmlPullParserException
- if there's a problem parsing the modelprotected void handleComment(org.codehaus.plexus.util.xml.pull.XmlPullParser parser, Sink sink) throws org.codehaus.plexus.util.xml.pull.XmlPullParserException
This is a default implementation, all data are emitted as comment events into the specified sink.
handleComment
in class AbstractXmlParser
parser
- A parser, not null.sink
- the sink to receive the events. Not null.org.codehaus.plexus.util.xml.pull.XmlPullParserException
- if there's a problem parsing the modelprotected void handleEntity(org.codehaus.plexus.util.xml.pull.XmlPullParser parser, Sink sink) throws org.codehaus.plexus.util.xml.pull.XmlPullParserException
This is a default implementation, all entities are resolved and emitted as text events into the specified sink, except:
#160
, nbsp
and #x00A0
are emitted as nonBreakingSpace()
events.handleEntity
in class AbstractXmlParser
parser
- A parser, not null.sink
- the sink to receive the events. Not null.org.codehaus.plexus.util.xml.pull.XmlPullParserException
- if there's a problem parsing the modelprotected void init()
Parser.parse(java.io.Reader, org.apache.maven.doxia.sink.Sink)
and can be used
to set the parser into a clear state so it can be re-used.init
in class AbstractParser
private void handleMacroStart(org.codehaus.plexus.util.xml.pull.XmlPullParser parser) throws MacroExecutionException
parser
- not nullMacroExecutionException
- if anyprivate void handleMacroEnd(java.lang.StringBuilder buffer) throws MacroExecutionException
buffer
- not nullMacroExecutionException
- if anyprivate void handleParamStart(org.codehaus.plexus.util.xml.pull.XmlPullParser parser, Sink sink) throws MacroExecutionException
parser
- not nullsink
- not nullMacroExecutionException
- if anyprivate void writeFaqs(Sink sink) throws ParseException
sink
- The sink to consume the event.ParseException
- if something goes wrong.private void writeTopLink(Sink sink)
sink
- The sink to consume the event.private void logMessage(java.lang.String key, java.lang.String msg)
msg
as is, otherwise add unique msg in warnMessages
.key
- not nullmsg
- not nullparse(Reader, Sink)
private void logWarnings()