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
- Version:
- $Id: XdocParser.java 1726411 2016-01-23 16:34:09Z hboutemy $
- Author:
- Jason van Zyl
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.maven.doxia.parser.AbstractXmlParser
AbstractXmlParser.CachedFileEntityResolver
-
-
Field Summary
-
Fields inherited from interface org.apache.maven.doxia.markup.HtmlMarkup
A, ABBR, ACRONYM, ADDRESS, APPLET, AREA, B, BASE, BASEFONT, BDO, BIG, BLOCKQUOTE, BODY, BR, BUTTON, CAPTION, CDATA_TYPE, CENTER, CITE, CODE, COL, COLGROUP, DD, DEL, DFN, DIR, DIV, DL, DT, EM, ENTITY_TYPE, FIELDSET, FONT, FORM, FRAME, FRAMESET, H1, H2, H3, H4, H5, H6, HEAD, HR, HTML, I, IFRAME, IMG, INPUT, INS, ISINDEX, KBD, LABEL, LEGEND, LI, LINK, MAP, MENU, META, NOFRAMES, NOSCRIPT, OBJECT, OL, OPTGROUP, OPTION, P, PARAM, PRE, Q, S, SAMP, SCRIPT, SELECT, SMALL, SPAN, STRIKE, STRONG, STYLE, SUB, SUP, TABLE, TAG_TYPE_END, TAG_TYPE_SIMPLE, TAG_TYPE_START, TBODY, TD, TEXTAREA, TFOOT, TH, THEAD, TITLE, TR, TT, U, UL, VAR
-
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 Constructor Description XdocParser()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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.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.void
parse(java.io.Reader source, Sink sink)
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, 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
-
-
-
-
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 classXhtmlBaseParser
- 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. 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
protected void consecutiveSections(int newLevel, Sink sink)
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 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 classXhtmlBaseParser
-
-