org.apache.maven.doxia.module.xdoc
Class XdocParser

java.lang.Object
  extended by org.apache.maven.doxia.parser.AbstractParser
      extended by org.apache.maven.doxia.parser.AbstractXmlParser
          extended by org.apache.maven.doxia.parser.XhtmlBaseParser
              extended by org.apache.maven.doxia.module.xdoc.XdocParser
All Implemented Interfaces:
LogEnabled, HtmlMarkup, Markup, XmlMarkup, XdocMarkup, Parser

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 1185529 2011-10-18 08:27:44Z ltheussl $
Author:
Jason van Zyl
Plexus component:
role:
"org.apache.maven.doxia.parser.Parser"
role-hint:
"xdoc"

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.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.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.XmlMarkup
BANG, CDATA, DOCTYPE_START, ENTITY_START, XML_NAMESPACE
 
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
 
Constructor Summary
XdocParser()
           
 
Method Summary
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. Just calls XhtmlBaseParser.baseEndTag(XmlPullParser,Sink), this should be overridden by implementing parsers to include additional tags.
protected  void handleStartTag(org.codehaus.plexus.util.xml.pull.XmlPullParser parser, Sink sink)
          Goes through the possible start tags. Just calls XhtmlBaseParser.baseStartTag(XmlPullParser,Sink), this should be overridden by implementing parsers to include additional tags.
protected  void init()
          Initialize the parser. This is called first by 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.
 void parse(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, 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, isSecondParsing, setSecondParsing
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

XdocParser

public XdocParser()
Method Detail

parse

public void parse(Reader source,
                  Sink sink)
           throws ParseException
Parses the given source model and emits Doxia events into the given sink.

Specified by:
parse in interface Parser
Overrides:
parse in class XhtmlBaseParser
Parameters:
source - not null reader that provides the source document. You could use newReader methods from ReaderFactory.
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 calls XhtmlBaseParser.baseStartTag(XmlPullParser,Sink), this should be overridden by implementing parsers to include additional tags.

Overrides:
handleStartTag in class XhtmlBaseParser
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 model
MacroExecutionException - 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 calls XhtmlBaseParser.baseEndTag(XmlPullParser,Sink), this should be overridden by implementing parsers to include additional tags.

Overrides:
handleEndTag in class XhtmlBaseParser
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 model
MacroExecutionException - 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 class XhtmlBaseParser
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 by 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.

Overrides:
init in class XhtmlBaseParser


Copyright © 2005-2012 The Apache Software Foundation. All Rights Reserved.