Class FmlParser
- java.lang.Object
-
- org.apache.maven.doxia.parser.AbstractParser
-
- org.apache.maven.doxia.parser.AbstractXmlParser
-
- org.apache.maven.doxia.module.fml.FmlParser
-
- All Implemented Interfaces:
LogEnabled
,HtmlMarkup
,Markup
,XmlMarkup
,FmlMarkup
,Parser
@Component(role=Parser.class, hint="fml") public class FmlParser extends AbstractXmlParser implements FmlMarkup
Parse a fml model and emit events into the specified doxia Sink.- Since:
- 1.0
- Version:
- $Id$
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.maven.doxia.parser.AbstractXmlParser
AbstractXmlParser.CachedFileEntityResolver
-
-
Field Summary
Fields Modifier and Type Field 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.-
Fields inherited from interface org.apache.maven.doxia.module.fml.FmlMarkup
ANSWER_TAG, FAQ_TAG, FAQS_TAG, FML_NAMESPACE, FML_SYSTEM_ID, MACRO_TAG, PART_TAG, QUESTION_TAG, SOURCE_TAG
-
Fields inherited from interface org.apache.maven.doxia.markup.HtmlMarkup
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
-
Fields inherited from interface org.apache.maven.doxia.markup.Markup
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
-
Fields inherited from interface org.apache.maven.doxia.parser.Parser
ROLE, TXT_TYPE, UNKNOWN_TYPE, XML_TYPE
-
Fields inherited from interface org.apache.maven.doxia.markup.XmlMarkup
BANG, CDATA, DOCTYPE_START, ENTITY_START, XML_NAMESPACE
-
-
Constructor Summary
Constructors Constructor Description FmlParser()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method 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 themsg
as is, otherwise add unique msg inwarnMessages
.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.-
Methods inherited from class org.apache.maven.doxia.parser.AbstractXmlParser
getAttributesFromParser, getLocalEntities, getText, getType, handleUnknown, initXmlParser, isCollapsibleWhitespace, isIgnorableWhitespace, isTrimmableWhitespace, isValidate, parse, setCollapsibleWhitespace, setIgnorableWhitespace, setTrimmableWhitespace, setValidate
-
Methods inherited from class org.apache.maven.doxia.parser.AbstractParser
doxiaVersion, enableLogging, executeMacro, getBasedir, getLog, getMacroManager, isEmitComments, isSecondParsing, parse, setEmitComments, setSecondParsing
-
-
-
-
Field Detail
-
faqs
private Faqs faqs
Collect a faqs model.
-
currentPart
private Part currentPart
Collect a part.
-
currentFaq
private Faq currentFaq
Collect a single faq.
-
buffer
private java.lang.StringBuilder buffer
Used to collect text events.
-
warnMessages
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. Using to reduce warn messages.
-
sourceContent
private java.lang.String sourceContent
The source content of the input reader. Used to pass into macros.
-
macroName
private java.lang.String macroName
A macro name.
-
macroParameters
private java.util.Map<java.lang.String,java.lang.Object> macroParameters
The macro parameters.
-
-
Method Detail
-
parse
public void parse(java.io.Reader source, Sink sink) throws ParseException
Parses the given source model and emits Doxia events into the given sink.- Specified by:
parse
in interfaceParser
- Overrides:
parse
in classAbstractXmlParser
- Parameters:
source
- not null reader that provides the source document. You could usenewReader
methods fromReaderFactory
.sink
- A sink that consumes the Doxia events.- Throws:
ParseException
- if the model could not be parsed.
-
handleStartTag
protected void handleStartTag(org.codehaus.plexus.util.xml.pull.XmlPullParser parser, Sink sink) throws org.codehaus.plexus.util.xml.pull.XmlPullParserException, MacroExecutionException
Goes through the possible start tags.- Specified by:
handleStartTag
in classAbstractXmlParser
- Parameters:
parser
- A parser, not null.sink
- the sink to receive the events.- Throws:
org.codehaus.plexus.util.xml.pull.XmlPullParserException
- if there's a problem parsing the modelMacroExecutionException
- if there's a problem executing a macro
-
handleEndTag
protected void handleEndTag(org.codehaus.plexus.util.xml.pull.XmlPullParser parser, Sink sink) throws org.codehaus.plexus.util.xml.pull.XmlPullParserException, MacroExecutionException
Goes through the possible end tags.- Specified by:
handleEndTag
in classAbstractXmlParser
- Parameters:
parser
- A parser, not null.sink
- the sink to receive the events.- Throws:
org.codehaus.plexus.util.xml.pull.XmlPullParserException
- if there's a problem parsing the modelMacroExecutionException
- if there's a problem executing a macro
-
handleText
protected void handleText(org.codehaus.plexus.util.xml.pull.XmlPullParser parser, Sink sink) throws org.codehaus.plexus.util.xml.pull.XmlPullParserException
Handles text events.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.
- Overrides:
handleText
in classAbstractXmlParser
- Parameters:
parser
- A parser, not null.sink
- the sink to receive the events. Not null.- Throws:
org.codehaus.plexus.util.xml.pull.XmlPullParserException
- if there's a problem parsing the model
-
handleCdsect
protected void handleCdsect(org.codehaus.plexus.util.xml.pull.XmlPullParser parser, Sink sink) throws org.codehaus.plexus.util.xml.pull.XmlPullParserException
Handles CDATA sections.This is a default implementation, all data are emitted as text events into the specified sink.
- Overrides:
handleCdsect
in classAbstractXmlParser
- Parameters:
parser
- A parser, not null.sink
- the sink to receive the events. Not null.- Throws:
org.codehaus.plexus.util.xml.pull.XmlPullParserException
- if there's a problem parsing the model
-
handleComment
protected void handleComment(org.codehaus.plexus.util.xml.pull.XmlPullParser parser, Sink sink) throws org.codehaus.plexus.util.xml.pull.XmlPullParserException
Handles comments.This is a default implementation, all data are emitted as comment events into the specified sink.
- Overrides:
handleComment
in classAbstractXmlParser
- Parameters:
parser
- A parser, not null.sink
- the sink to receive the events. Not null.- Throws:
org.codehaus.plexus.util.xml.pull.XmlPullParserException
- if there's a problem parsing the model
-
handleEntity
protected void handleEntity(org.codehaus.plexus.util.xml.pull.XmlPullParser parser, Sink sink) throws org.codehaus.plexus.util.xml.pull.XmlPullParserException
Handles entities.This is a default implementation, all entities are resolved and emitted as text events into the specified sink, except:
- the entities with names
#160
,nbsp
and#x00A0
are emitted asnonBreakingSpace()
events.
- Overrides:
handleEntity
in classAbstractXmlParser
- Parameters:
parser
- A parser, not null.sink
- the sink to receive the events. Not null.- Throws:
org.codehaus.plexus.util.xml.pull.XmlPullParserException
- if there's a problem parsing the model
- the entities with names
-
init
protected void init()
Initialize the parser. This is called first byParser.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.- Overrides:
init
in classAbstractParser
-
handleMacroStart
private void handleMacroStart(org.codehaus.plexus.util.xml.pull.XmlPullParser parser) throws MacroExecutionException
TODO import from XdocParser, probably need to be generic.- Parameters:
parser
- not null- Throws:
MacroExecutionException
- if any
-
handleMacroEnd
private void handleMacroEnd(java.lang.StringBuilder buffer) throws MacroExecutionException
TODO import from XdocParser, probably need to be generic.- Parameters:
buffer
- not null- Throws:
MacroExecutionException
- if any
-
handleParamStart
private void handleParamStart(org.codehaus.plexus.util.xml.pull.XmlPullParser parser, Sink sink) throws MacroExecutionException
TODO import from XdocParser, probably need to be generic.- Parameters:
parser
- not nullsink
- not null- Throws:
MacroExecutionException
- if any
-
writeFaqs
private void writeFaqs(Sink sink) throws ParseException
Writes the faqs to the specified sink.- Parameters:
sink
- The sink to consume the event.- Throws:
ParseException
- if something goes wrong.
-
writeTopLink
private void writeTopLink(Sink sink)
Writes a toplink element.- Parameters:
sink
- The sink to consume the event.
-
logMessage
private void logMessage(java.lang.String key, java.lang.String msg)
If debug mode is enabled, log themsg
as is, otherwise add unique msg inwarnMessages
.- Parameters:
key
- not nullmsg
- not null- Since:
- 1.1.1
- See Also:
parse(Reader, Sink)
-
logWarnings
private void logWarnings()
- Since:
- 1.1.1
-
-