Class XdocParser
java.lang.Object
org.apache.maven.doxia.parser.AbstractParser
org.apache.maven.doxia.parser.AbstractXmlParser
org.apache.maven.doxia.parser.XhtmlBaseParser
org.apache.maven.doxia.module.xdoc.XdocParser
- All Implemented Interfaces:
LogEnabled
,HtmlMarkup
,Markup
,XmlMarkup
,XdocMarkup
,Parser
@Component(role=Parser.class,
hint="xdoc")
public class XdocParser
extends XhtmlBaseParser
implements XdocMarkup
Parse an xdoc model and emit events into the specified doxia Sink.
- Since:
- 1.0
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.maven.doxia.parser.AbstractXmlParser
AbstractXmlParser.CachedFileEntityResolver
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate boolean
Indicates that <title> was called from <properties> or <head>.private boolean
Indicates that we're inside <properties> or <head>.private boolean
Empty elements don't write a closing tag.private String
A macro name.The macro parameters.private String
The source content of the input reader.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, KEYGEN, 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.module.xdoc.XdocMarkup
AUTHOR_TAG, DATE_TAG, DOCUMENT_TAG, MACRO_TAG, PROPERTIES_TAG, SECTION_TAG, SOURCE_TAG, SUBSECTION_TAG, XDOC_NAMESPACE, XDOC_SYSTEM_ID
Fields inherited from interface org.apache.maven.doxia.markup.XmlMarkup
BANG, CDATA, DOCTYPE_START, ENTITY_START, XML_NAMESPACE
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate void
closeOpenSections
(int newLevel, Sink sink) Close open h4, h5, h6 sections.protected void
consecutiveSections
(int newLevel, Sink sink) Make sure sections are nested consecutively.protected void
handleEndTag
(org.codehaus.plexus.util.xml.pull.XmlPullParser parser, Sink sink) Goes through the possible end tags.private void
handleMacroEnd
(Sink sink) private void
handleMacroStart
(org.codehaus.plexus.util.xml.pull.XmlPullParser parser) private void
handleMetaStart
(org.codehaus.plexus.util.xml.pull.XmlPullParser parser, Sink sink, SinkEventAttributeSet attribs) private void
handleParamStart
(org.codehaus.plexus.util.xml.pull.XmlPullParser parser, Sink sink) private void
handleSectionStart
(int level, Sink sink, SinkEventAttributeSet attribs, org.codehaus.plexus.util.xml.pull.XmlPullParser parser) protected void
handleStartTag
(org.codehaus.plexus.util.xml.pull.XmlPullParser parser, Sink sink) Goes through the possible start tags.protected void
init()
Initialize the parser.private void
openMissingSections
(int newLevel, Sink sink) Open missing h4, h5, h6 sections.void
Parses the given source model and emits Doxia events into the given sink.Methods inherited from class org.apache.maven.doxia.parser.XhtmlBaseParser
baseEndTag, baseStartTag, getSectionLevel, handleCdsect, handleComment, handleText, initXmlParser, isScriptBlock, isVerbatim, setSectionLevel, validAnchor, verbatim, verbatim_
Methods inherited from class org.apache.maven.doxia.parser.AbstractXmlParser
getAttributesFromParser, getLocalEntities, getText, getType, handleEntity, handleUnknown, isCollapsibleWhitespace, isIgnorableWhitespace, isTrimmableWhitespace, isValidate, setCollapsibleWhitespace, setIgnorableWhitespace, setTrimmableWhitespace, setValidate
Methods inherited from class org.apache.maven.doxia.parser.AbstractParser
doxiaVersion, enableLogging, executeMacro, getBasedir, getLog, getMacroManager, isEmitComments, isSecondParsing, parse, parse, parse, setEmitComments, setSecondParsing
-
Field Details
-
sourceContent
The source content of the input reader. Used to pass into macros. -
isEmptyElement
private boolean isEmptyElementEmpty elements don't write a closing tag. -
macroName
A macro name. -
macroParameters
The macro parameters. -
inHead
private boolean inHeadIndicates that we're inside <properties> or <head>. -
hasTitle
private boolean hasTitleIndicates that <title> was called from <properties> or <head>.
-
-
Constructor Details
-
XdocParser
public XdocParser()
-
-
Method Details
-
parse
Parses the given source model and emits Doxia events into the given sink.- Specified by:
parse
in interfaceParser
- Overrides:
parse
in classXhtmlBaseParser
- Parameters:
source
- not null reader that provides the source document. You could usenewReader
methods fromReaderFactory
.sink
- A sink that consumes the Doxia events.reference
- the reference- 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. Just callsXhtmlBaseParser.baseStartTag(XmlPullParser,Sink)
, this should be overridden by implementing parsers to include additional tags.- Overrides:
handleStartTag
in classXhtmlBaseParser
- 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. Just callsXhtmlBaseParser.baseEndTag(XmlPullParser,Sink)
, this should be overridden by implementing parsers to include additional tags.- Overrides:
handleEndTag
in classXhtmlBaseParser
- 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
-
consecutiveSections
Make sure sections are nested consecutively.HTML doesn't have any sections, only sectionTitles (<h2> etc), that means we have to open close any sections that are missing in between.
For instance, if the following sequence is parsed:
<h3></h3> <h6></h6>
we have to insert two section starts before we open the
<h6>
. In the following sequence<h6></h6> <h3></h3>
we have to close two sections before we open the
<h3>
.The current level is set to newLevel afterwards.
- Overrides:
consecutiveSections
in classXhtmlBaseParser
- Parameters:
newLevel
- the new section level, all upper levels have to be closed.sink
- the sink to receive the events.
-
init
protected void init()Initialize the parser. This is called first byAbstractParser.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 classXhtmlBaseParser
-
closeOpenSections
Close open h4, h5, h6 sections. -
handleMacroEnd
- Throws:
MacroExecutionException
-
handleMacroStart
private void handleMacroStart(org.codehaus.plexus.util.xml.pull.XmlPullParser parser) throws MacroExecutionException - Throws:
MacroExecutionException
-
handleMetaStart
private void handleMetaStart(org.codehaus.plexus.util.xml.pull.XmlPullParser parser, Sink sink, SinkEventAttributeSet attribs) -
handleParamStart
private void handleParamStart(org.codehaus.plexus.util.xml.pull.XmlPullParser parser, Sink sink) throws MacroExecutionException - Throws:
MacroExecutionException
-
handleSectionStart
private void handleSectionStart(int level, Sink sink, SinkEventAttributeSet attribs, org.codehaus.plexus.util.xml.pull.XmlPullParser parser) -
openMissingSections
Open missing h4, h5, h6 sections.
-