Class FmlParser

    • Field Detail

      • faqs

        private Faqs faqs
        Collect a faqs model.
      • currentPart

        private Part currentPart
        Collect a part.
      • currentFaq

        private Faq currentFaq
        Collect a single faq.
      • buffer

        private java.lang.StringBuilder buffer
        Used to collect text events.
      • warnMessages

        private java.util.Map<java.lang.String,​java.util.Set<java.lang.String>> warnMessages
        Map of warn messages with a String as key to describe the error type and a Set as value. Using to reduce warn messages.
      • sourceContent

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

        private java.lang.String macroName
        A macro name.
      • macroParameters

        private java.util.Map<java.lang.String,​java.lang.Object> macroParameters
        The macro parameters.
    • Constructor Detail

      • FmlParser

        public FmlParser()
    • 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 AbstractXmlParser
        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.
        Specified by:
        handleStartTag in class AbstractXmlParser
        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.
        Specified by:
        handleEndTag in class AbstractXmlParser
        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
      • handleText

        protected void handleText​(org.codehaus.plexus.util.xml.pull.XmlPullParser parser,
                                  Sink sink)
                           throws org.codehaus.plexus.util.xml.pull.XmlPullParserException
        Handles text events.

        This is a default implementation, if the parser points to a non-empty text element, it is emitted as a text event into the specified sink.

        Overrides:
        handleText in class AbstractXmlParser
        Parameters:
        parser - A parser, not null.
        sink - the sink to receive the events. Not null.
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException - if there's a problem parsing the model
      • handleCdsect

        protected void handleCdsect​(org.codehaus.plexus.util.xml.pull.XmlPullParser parser,
                                    Sink sink)
                             throws org.codehaus.plexus.util.xml.pull.XmlPullParserException
        Handles CDATA sections.

        This is a default implementation, all data are emitted as text events into the specified sink.

        Overrides:
        handleCdsect in class AbstractXmlParser
        Parameters:
        parser - A parser, not null.
        sink - the sink to receive the events. Not null.
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException - if there's a problem parsing the model
      • handleComment

        protected void handleComment​(org.codehaus.plexus.util.xml.pull.XmlPullParser parser,
                                     Sink sink)
                              throws org.codehaus.plexus.util.xml.pull.XmlPullParserException
        Handles comments.

        This is a default implementation, all data are emitted as comment events into the specified sink.

        Overrides:
        handleComment in class AbstractXmlParser
        Parameters:
        parser - A parser, not null.
        sink - the sink to receive the events. Not null.
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException - if there's a problem parsing the model
      • handleEntity

        protected void handleEntity​(org.codehaus.plexus.util.xml.pull.XmlPullParser parser,
                                    Sink sink)
                             throws org.codehaus.plexus.util.xml.pull.XmlPullParserException
        Handles entities.

        This is a default implementation, all entities are resolved and emitted as text events into the specified sink, except:

        • the entities with names #160, nbsp and #x00A0 are emitted as nonBreakingSpace() events.
        Overrides:
        handleEntity in class AbstractXmlParser
        Parameters:
        parser - A parser, not null.
        sink - the sink to receive the events. Not null.
        Throws:
        org.codehaus.plexus.util.xml.pull.XmlPullParserException - if there's a problem parsing the model
      • handleMacroStart

        private void handleMacroStart​(org.codehaus.plexus.util.xml.pull.XmlPullParser parser)
                               throws MacroExecutionException
        TODO import from XdocParser, probably need to be generic.
        Parameters:
        parser - not null
        Throws:
        MacroExecutionException - if any
      • handleMacroEnd

        private void handleMacroEnd​(java.lang.StringBuilder buffer)
                             throws MacroExecutionException
        TODO import from XdocParser, probably need to be generic.
        Parameters:
        buffer - not null
        Throws:
        MacroExecutionException - if any
      • handleParamStart

        private void handleParamStart​(org.codehaus.plexus.util.xml.pull.XmlPullParser parser,
                                      Sink sink)
                               throws MacroExecutionException
        TODO import from XdocParser, probably need to be generic.
        Parameters:
        parser - not null
        sink - not null
        Throws:
        MacroExecutionException - if any
      • writeFaqs

        private void writeFaqs​(Sink sink)
                        throws ParseException
        Writes the faqs to the specified sink.
        Parameters:
        sink - The sink to consume the event.
        Throws:
        ParseException - if something goes wrong.
      • writeTopLink

        private void writeTopLink​(Sink sink)
        Writes a toplink element.
        Parameters:
        sink - The sink to consume the event.
      • logMessage

        private void logMessage​(java.lang.String key,
                                java.lang.String msg)
        If debug mode is enabled, log the msg as is, otherwise add unique msg in warnMessages.
        Parameters:
        key - not null
        msg - not null
        Since:
        1.1.1
        See Also:
        parse(Reader, Sink)
      • logWarnings

        private void logWarnings()
        Since:
        1.1.1