Class SimpleMarkupParser

  • All Implemented Interfaces:
    ISimpleMarkupParser

    public final class SimpleMarkupParser
    extends java.lang.Object
    implements ISimpleMarkupParser

    Default implementation of ISimpleMarkupParser.

    AttoParser simple markup parsers work as SAX-style parsers that need a markup handler object for handling parsing events. These handlers implement the ISimpleMarkupHandler interface, and are normally developed by users in order to perform the operations they require for their applications.

    See the documentation of the ISimpleMarkupHandler interface for more information on the event handler methods.

    Note that this parser class and its corresponding handlers are actually a simplified version of the full-blown IMarkupParser infrastructure.

    Sample usage:

    
       // Obtain a java.io.Reader on the document to be parsed
       final Reader documentReader = ...;
    
       // Create the handler instance. Extending the no-op AbstractSimpleMarkupHandler is a good start
       final ISimpleMarkupHandler handler = new AbstractSimpleMarkupHandler() {
           ... // some events implemented
       };
    
       // Create or obtain the parser instance (can be reused). Example uses the default configuration for HTML
       final ISimpleMarkupParser parser = new SimpleMarkupParser(ParseConfiguration.htmlConfiguration());
    
       // Parse it!
       parser.parse(documentReader, handler);
     

    This parser class uses an instance of the MarkupParser class underneath (configured with the default values for its buffer pool), and applies to it an instance of the SimplifierMarkupHandler handler class in order to make it able to report handling events by means of an ISimpleMarkupHandler implementation instead of using the default IMarkupHandler interface.

    In fact, using the SimpleMarkupParser class as shown above is completely equivalent to:

    
       // Obtain a java.io.Reader on the document to be parsed
       final Reader documentReader = ...;
    
       // Create the handler instance. Extending the no-op AbstractSimpleMarkupHandler is a good start
       final ISimpleMarkupHandler simpleHandler = new AbstractSimpleMarkupHandler() {
           ... // some events implemented
       };
    
       // Create a handler chain with the 'simplifier' handler, which will convert events from 'normal' to 'simple'.
       final IMarkupHandler handler = new SimplifierMarkupHandler(simpleHandler);
    
       // Create or obtain the parser instance (note this is not the 'simple' one!)
       final IMarkupParser parser = new MarkupParser(ParseConfiguration.htmlConfiguration());
    
       // Parse it!
       parser.parse(documentReader, handler);
     

    This parser class is thread-safe. However, take into account that, normally, ISimpleMarkupHandler implementations are not. So, even if parsers can be reused, handler objects usually cannot.

    Since:
    2.0.0