Class XdocParser

    • Field Detail

      • sourceContent

        private java.lang.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 java.lang.String macroName
        A macro name.
      • macroParameters

        private java.util.Map<java.lang.String,​java.lang.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 Detail

      • XdocParser

        public XdocParser()
    • 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 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.
      • closeOpenSections

        private void closeOpenSections​(int newLevel,
                                       Sink sink)
        Close open h4, h5, h6 sections.
      • handleMetaStart

        private void handleMetaStart​(org.codehaus.plexus.util.xml.pull.XmlPullParser parser,
                                     Sink sink,
                                     SinkEventAttributeSet attribs)
      • 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 h4, h5, h6 sections.