Class FmlParser

All Implemented Interfaces:
LogEnabled, HtmlMarkup, Markup, XmlMarkup, FmlMarkup, Parser

@Component(role=Parser.class, hint="fml") public class FmlParser extends AbstractXmlParser implements FmlMarkup
Parse a fml model and emit events into the specified doxia Sink.
Since:
1.0
  • Field Details

    • 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 StringBuilder buffer
      Used to collect text events.
    • warnMessages

      private Map<String,Set<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 String sourceContent
      The source content of the input reader. Used to pass into macros.
    • macroName

      private String macroName
      A macro name.
    • macroParameters

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

    • FmlParser

      public FmlParser()
  • 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 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.
      reference - the reference
      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
    • 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 AbstractParser
    • 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(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(String key, 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:
    • logWarnings

      private void logWarnings()
      Since:
      1.1.1