Class XdocParser

All Implemented Interfaces:
HtmlMarkup, Markup, XmlMarkup, XdocMarkup, Parser

@Singleton @Named("xdoc") public class XdocParser extends Xhtml1BaseParser implements XdocMarkup
Parse an xdoc model and emit events into the specified doxia Sink.
Since:
1.0
  • Field Details

    • LOGGER

      private static final org.slf4j.Logger LOGGER
    • sourceContent

      private String sourceContent
      The source content of the input reader. Used to pass into macros.
    • isEmptyElement

      private boolean isEmptyElement
      Empty elements don't write a closing tag.
    • macroName

      private String macroName
      A macro name.
    • macroParameters

      private Map<String,Object> macroParameters
      The macro parameters.
    • inHead

      private boolean inHead
      Indicates that we're inside <properties> or <head>.
    • hasTitle

      private boolean hasTitle
      Indicates that <title> was called from <properties> or <head>.
  • Constructor Details

    • XdocParser

      public XdocParser()
  • Method Details

    • parse

      public void parse(Reader source, Sink sink, String reference) 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 Xhtml5BaseParser
      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.
      reference - a string identifying the source (for file based documents the source file path)
      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 Xhtml5BaseParser.baseStartTag(XmlPullParser,Sink), this should be overridden by implementing parsers to include additional tags.
      Overrides:
      handleStartTag in class Xhtml5BaseParser
      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 Xhtml5BaseParser.baseEndTag(XmlPullParser,Sink), this should be overridden by implementing parsers to include additional tags.
      Overrides:
      handleEndTag in class Xhtml5BaseParser
      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)
    • init

      protected void init()
      Initialize the parser. This is called first by AbstractParser.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 Xhtml5BaseParser
    • closeOpenSections

      private void closeOpenSections(int newLevel, Sink sink)
      Close open h2, h3, h4, h5 sections.
    • handleMacroEnd

      private void handleMacroEnd(Sink sink) throws MacroExecutionException
      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

      private void openMissingSections(int newLevel, Sink sink)
      Open missing h2, h3, h4, h5 sections.