Interface Sink

  • All Superinterfaces:
    org.apache.maven.doxia.logging.LogEnabled
    All Known Subinterfaces:
    Sink

    public interface Sink
    extends org.apache.maven.doxia.logging.LogEnabled
    A Sink consumes Doxia events to produce a resultant output format (eg Docbook, PDF, XHTML...).

    Doxia allows you to transform any supported input document format (ie for which a Parser exists) into any supported output document format (ie for which a Sink exists).

    A parser is responsible for reading an input document and emitting a sequence of Doxia events which can then be consumed by a Doxia Sink. Thus, you can parse any front- end format (eg APT, FML, Xdoc, ...) and have them all contribute to a final XHTML version of a web site. All documents being parsed result in a stream of Doxia events (eg paragraph, bold, italic, text,...), which are then fed into a XHTML Sink to produce a set of XHTML pages.

    A Sink is ultimately responsible for the final format and structure of the output document. For example, you can take a collection of APT documents, let a Parser emit a series of Doxia events and have that be fed into a Sink to produce a single PDF, a book, a site, or a Word document. The Sink is fully responsible for the final output.

    You can easily integrate any custom (XML, Wiki,...) format by creating a Doxia Parser which reads your input document and produces a proper sequence of Doxia events. Those can then be fed into an arbitrary Sink to produce any desired final output.

    Note: All implemented sink should use UTF-8 as encoding.

    Since:
    1.0-alpha-6
    Author:
    Jason van Zyl, Vincent Siveton, ltheussl
    • Method Detail

      • head

        void head​(SinkEventAttributes attributes)
        Starts the head element.

        This contains information about the current document, (eg its title) that is not considered document content. The head element is optional but if it exists, it has to be unique within a sequence of Sink events that produces one output document, and it has to come before the body(SinkEventAttributes) element.

        The canonical sequence of events for the head element is:

           sink.head();
        
           sink.title();
           sink.text( "Title" );
           sink.title_();
        
           sink.author();
           sink.text( "Author" );
           sink.author_();
        
           sink.date();
           sink.text( "Date" );
           sink.date_();
        
           sink.head_();
         

        but none of the enclosed events is required. However, if they exist they have to occur in the order shown, and the title() and date() events have to be unique (author() events may occur any number of times).

        Supported attributes are:

        PROFILE, LANG.
        Parameters:
        attributes - A set of SinkEventAttributes, may be null.
        Since:
        1.1
      • head_

        void head_()
        Ends the head element.
      • title_

        void title_()
        Ends the title element.
      • author_

        void author_()
        Ends an author element.
      • date

        void date​(SinkEventAttributes attributes)
        Starts the date element. This is used to identify the date of the document: there is no strict definition if it is creation date or last modification date, which are the 2 classical semantics. There is no formal formatting requirements either.
        The date is recommended (but it is not a requirement) to be aligned to the ISO-8601 standard, i.e.:
        YYYY-MM-DD
        where
        • YYYY is the year in the Gregorian calendar,
        • MM is the month of the year between 01 (January) and 12 (December),
        • and DD is the day of the month between 01 and 31.

        Supported attributes are: none.

        Parameters:
        attributes - A set of SinkEventAttributes, may be null.
        Since:
        1.1
        See Also:
        head(SinkEventAttributes)
      • date_

        void date_()
        Ends the date element.
      • body_

        void body_()
        Ends the body element.
      • article_

        void article_()
        Ends the article element.
      • navigation_

        void navigation_()
        Ends the navigation element.
      • sidebar_

        void sidebar_()
        Ends the sidebar element.
      • sectionTitle

        void sectionTitle()
        Starts a title heading element.
      • sectionTitle_

        void sectionTitle_()
        Ends a title heading element.
      • section1_

        void section1_()
        Ends a first heading element.
      • sectionTitle1

        void sectionTitle1()
        Starts a first title heading element. This element is optional, but if it exists, it has to be contained, and be the first element, within a section1() element.
        See Also:
        sectionTitle(int,SinkEventAttributes)
      • sectionTitle1_

        void sectionTitle1_()
        Ends a first title heading element.
      • section2_

        void section2_()
        Ends a second heading element.
      • sectionTitle2

        void sectionTitle2()
        Starts a second title heading element. This element is optional, but if it exists, it has to be contained, and be the first element, within a section2() element.
        See Also:
        sectionTitle(int,SinkEventAttributes)
      • sectionTitle2_

        void sectionTitle2_()
        Ends a second title heading element.
      • section3_

        void section3_()
        Ends a third heading element.
      • sectionTitle3

        void sectionTitle3()
        Starts a third title heading element. This element is optional, but if it exists, it has to be contained, and be the first element, within a section3() element.
        See Also:
        sectionTitle(int,SinkEventAttributes)
      • sectionTitle3_

        void sectionTitle3_()
        Ends a third title heading element.
      • section4_

        void section4_()
        Ends a 4th heading element.
      • sectionTitle4

        void sectionTitle4()
        Starts a 4th title heading element. This element is optional, but if it exists, it has to be contained, and be the first element, within a section4() element.
        See Also:
        sectionTitle(int,SinkEventAttributes)
      • sectionTitle4_

        void sectionTitle4_()
        Ends a 4th title heading element.
      • section5_

        void section5_()
        Ends a 5th heading element.
      • sectionTitle5

        void sectionTitle5()
        Starts a 5th title heading element. This element is optional, but if it exists, it has to be contained, and be the first element, within a section5() element.
        See Also:
        sectionTitle(int,SinkEventAttributes)
      • sectionTitle5_

        void sectionTitle5_()
        Ends a 5th title heading element.
      • section6_

        void section6_()
        Ends a 6th heading element.
        Since:
        1.7
      • sectionTitle6

        void sectionTitle6()
        Starts a 6th title heading element. This element is optional, but if it exists, it has to be contained, and be the first element, within a section6() element.
        Since:
        1.7
        See Also:
        sectionTitle(int,SinkEventAttributes)
      • sectionTitle6_

        void sectionTitle6_()
        Ends a 6th title heading element.
        Since:
        1.7
      • section

        void section​(int level,
                     SinkEventAttributes attributes)
        Start a new section at the given level.

        Sections with higher level have to be entirely contained within sections of lower level.

        Supported attributes are the base attributes.

        Parameters:
        level - the section level.
        attributes - A set of SinkEventAttributes, may be null.
        Since:
        1.1
      • section_

        void section_​(int level)
        Ends a section at the given level.
        Parameters:
        level - the section level.
        Since:
        1.1
      • sectionTitle

        void sectionTitle​(int level,
                          SinkEventAttributes attributes)
        Start a new section title at the given level.

        This element is optional, but if it exists, it has to be contained, and be the first element, within a corresponding section element of the same level.

        NOTE: It is strongly recommended not to make section titles implicit anchors. Neither Parsers nor Sinks should insert any content that is not explicitly present in the original source document, as this would lead to undefined behaviour for multi-format processing chains. However, while Parsers must never emit anchors for section titles, some specialized Sinks may implement such a feature if the resulting output documents are not going to be further processed (and this is properly documented).

        Supported attributes are the base attributes plus ALIGN.

        Parameters:
        level - the section title level.
        attributes - A set of SinkEventAttributes, may be null.
        Since:
        1.1
      • sectionTitle_

        void sectionTitle_​(int level)
        Ends a section title at the given level.
        Parameters:
        level - the section title level.
        Since:
        1.1
      • header

        void header()
        Start a new header within the section or body.
      • header_

        void header_()
        Ends a header element.
      • content

        void content()
        Start the main content section between the header and the footer within the sections and/or body.
      • content

        void content​(SinkEventAttributes attributes)
        Start the main content section between the header and the footer within the sections and/or body.

        Supported attributes are the base attributes.

        Parameters:
        attributes - A set of SinkEventAttributes, may be null.
        Since:
        2.0
      • content_

        void content_()
        Ends a main content section.
      • footer

        void footer()
        Start a new footer within the section or body.
      • footer_

        void footer_()
        Ends a footer element.
      • list_

        void list_()
        Ends an unordered list element.
      • listItem_

        void listItem_()
        Ends a list item element within an unordered list.
      • numberedList_

        void numberedList_()
        Ends an ordered list element.
      • numberedListItem_

        void numberedListItem_()
        Ends a list item element within an ordered list.
      • definitionList_

        void definitionList_()
        Ends a definition list element.
      • definitionListItem_

        void definitionListItem_()
        Ends a list item element within a definition list.
      • definition_

        void definition_()
        Ends a definition element within a definition list.
      • definedTerm_

        void definedTerm_()
        Ends a definition term element within a definition list.
      • figure

        void figure​(SinkEventAttributes attributes)
        Starts a basic image embedding element.

        The canonical sequence of events for the figure element is:

           sink.figure();
        
           sink.figureGraphics( "figure.png" );
        
           sink.figureCaption();
           sink.text( "Figure caption",);
           sink.figureCaption_();
        
           sink.figure_();
         

        where the figureCaption element is optional.

        However, NOTE that the order of figureCaption and figureGraphics events is arbitrary, ie a parser may emit the figureCaption before or after the figureGraphics. Implementing sinks should be prepared to handle both possibilities.

        NOTE also that the figureGraphics() event does not have to be embedded inside figure(), in particular for in-line images the figureGraphics() should be used stand-alone (in HTML language, figureGraphics() produces a <img> tag, while figure() opens a paragraph- or <div>- like environment).

        Supported attributes are the base attributes.

        Parameters:
        attributes - A set of SinkEventAttributes, may be null.
        Since:
        1.1
      • figure_

        void figure_()
        Ends a basic image embedding element.
      • figureCaption_

        void figureCaption_()
        Ends a caption of an image.
      • figureGraphics

        void figureGraphics​(java.lang.String name)
        Adding a source of a graphic.
        Parameters:
        name - the source
      • table

        void table()
        Starts a table element for marking up tabular information in a document.
        See Also:
        table(SinkEventAttributes)
      • table

        void table​(SinkEventAttributes attributes)
        Starts a table.

        The canonical sequence of events for the table element is:

           sink.table();
        
           sink.tableRows( justify, true );
        
           sink.tableRow();
           sink.tableCell();
           sink.text( "cell 1,1" );
           sink.tableCell_();
           sink.tableCell();
           sink.text( "cell 1,2" );
           sink.tableCell_();
           sink.tableRow_();
        
           sink.tableRows_();
        
           sink.tableCaption();
           sink.text( "Table caption" );
           sink.tableCaption_();
        
           sink.table_();
        
         

        where the tableCaption element is optional.

        However, NOTE that the order of tableCaption and tableRows(int[],boolean) events is arbitrary, ie a parser may emit the tableCaption before or after the tableRows. Implementing sinks should be prepared to handle both possibilities.

        Supported attributes are the base attributes plus:

        ALIGN, BGCOLOR, BORDER, CELLPADDING, CELLSPACING, FRAME, RULES, SUMMARY, WIDTH.
        Parameters:
        attributes - A set of SinkEventAttributes, may be null.
        Since:
        1.1
      • table_

        void table_()
        Ends a table element.
      • tableRows

        void tableRows​(int[] justification,
                       boolean grid)
        Starts an element that contains rows of table data.
        Parameters:
        justification - the default justification of columns. This can be overridden by individual table rows or table cells. If null a left alignment is assumed by default. If this array has less elements than there are columns in the table then the value of the last array element will be taken as default for the remaining table cells.
        grid - true to provide a grid, false otherwise.
        See Also:
        table(SinkEventAttributes), JUSTIFY_CENTER, JUSTIFY_LEFT, JUSTIFY_RIGHT
      • tableRows_

        void tableRows_()
        Ends an element that contains rows of table data.
      • tableRow_

        void tableRow_()
        Ends a row element.
      • tableCell

        void tableCell​(java.lang.String width)
        Deprecated.
        Use #tableCell(SinkEventAttributes) instead.
        Starts a cell element which defines a cell that contains data.
        Parameters:
        width - the size of the cell.
      • tableCell_

        void tableCell_()
        Ends a cell element.
      • tableHeaderCell

        void tableHeaderCell​(java.lang.String width)
        Deprecated.
        Use #tableHeaderCell(SinkEventAttributes) instead.
        Starts a cell element which defines a cell that contains header information.
        Parameters:
        width - the size of the header cell.
      • tableHeaderCell_

        void tableHeaderCell_()
        Ends a cell header element.
      • tableCaption_

        void tableCaption_()
        Ends a caption element of a table.
      • paragraph_

        void paragraph_()
        Ends a paragraph element.
      • data

        void data​(java.lang.String value)
        Starts a data element which groups together other elements representing microformats.
        Parameters:
        value - a String object.
        See Also:
        data(String, SinkEventAttributes)
      • data

        void data​(java.lang.String value,
                  SinkEventAttributes attributes)
        Starts a data element which groups together other elements representing microformats.

        Supported attributes are the base attributes plus VALUE.

        Parameters:
        value - the machine readable value of the data, may be null.
        attributes - A set of SinkEventAttributes, may be null.
        Since:
        2.0
      • data_

        void data_()
        Ends an data element.
      • time

        void time​(java.lang.String datetime)
        Starts a time element which groups together other elements representing a time.
        See Also:
        time(String, SinkEventAttributes)
      • time

        void time​(java.lang.String datetime,
                  SinkEventAttributes attributes)
        Starts a time element which groups together other elements representing a time.

        Supported attributes are the base attributes plus DATETIME.

        Parameters:
        datetime - the machine readable value of the time, may be null.
        attributes - A set of SinkEventAttributes, may be null.
        Since:
        2.0
      • time_

        void time_()
        Ends a time element.
      • address_

        void address_()
        Ends an address element.
      • blockquote_

        void blockquote_()
        Ends an blockquote element.
      • division_

        void division_()
        Ends a division element.
      • verbatim

        void verbatim​(boolean boxed)
        Deprecated.
        Use #verbatim(SinkEventAttributes) instead.
        Starts an element which indicates that whitespace in the enclosed text has semantic relevance.
        Parameters:
        boxed - true to add a box, false otherwise
      • verbatim

        void verbatim​(SinkEventAttributes attributes)
        Starts a verbatim block, ie a block where whitespace has semantic relevance.

        Text in a verbatim block must only be wrapped at the linebreaks in the source, and spaces should not be collapsed. It should be displayed in a fixed-width font to retain the formatting but the overall size may be chosen by the implementation.

        Most Sink events may be emitted within a verbatim block, the only elements explicitly forbidden are font-changing events and figures. Also, verbatim blocks may not be nested.

        Supported attributes are the base attributes plus:

        DECORATION (value: "boxed"), ALIGN, WIDTH.
        Parameters:
        attributes - A set of SinkEventAttributes, may be null.
        Since:
        1.1
      • verbatim_

        void verbatim_()
        Ends a verbatim element.
      • pageBreak

        void pageBreak()
        Adding a new page separator.
      • anchor

        void anchor​(java.lang.String name)
        Starts an element which defines an anchor.
        Parameters:
        name - the name of the anchor.
        See Also:
        anchor(String,SinkEventAttributes)
      • anchor

        void anchor​(java.lang.String name,
                    SinkEventAttributes attributes)
        Starts an element which defines an anchor.

        The name parameter has to be a valid SGML NAME token. According to the HTML 4.01 specification section 6.2 SGML basic types:

        ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").

        Supported attributes are the base attributes. If NAME is specified in the SinkEventAttributes, it will be overwritten by the name parameter.

        Parameters:
        name - the name of the anchor. This has to be a valid SGML NAME token.
        attributes - A set of SinkEventAttributes, may be null.
        Since:
        1.1
      • anchor_

        void anchor_()
        Ends an anchor element.
      • link

        void link​(java.lang.String name)
        Starts an element which defines a link.
        Parameters:
        name - the name of the link.
        See Also:
        link(String,SinkEventAttributes)
      • link

        void link​(java.lang.String name,
                  SinkEventAttributes attributes)
        Starts a link.

        The name parameter has to be a valid html href parameter, ie for internal links (links to an anchor within the same source document), name should start with the character "#".

        Supported attributes are the base attributes plus:

        CHARSET, COORDS, HREF, HREFLANG, REL, REV, SHAPE, TARGET, TYPE.

        If HREF is specified in the SinkEventAttributes, it will be overwritten by the name parameter.

        Parameters:
        name - the name of the link.
        attributes - A set of SinkEventAttributes, may be null.
        Since:
        1.1
      • link_

        void link_()
        Ends a link element.
      • inline

        void inline​(SinkEventAttributes attributes)
        Starts an inline element.

        The inline method is similar to text(String,SinkEventAttributes), but allows you to wrap arbitrary elements in addition to text.

        Supported attributes are the base attributes plus

        SEMANTICS (values "emphasis", "strong", "small", "line-through", "citation", "quote", "definition", "abbreviation", "italic", "bold", "monospaced", "variable", "sample", "keyboard", "superscript", "subscript", "annotation", "highlight", "ruby", "rubyBase", "rubyText", "rubyTextContainer", "rubyParentheses", "bidirectionalIsolation", "bidirectionalOverride", "phrase", "insert", "delete").
        Parameters:
        attributes - A set of SinkEventAttributes, may be null.
        Since:
        2.0
      • inline_

        void inline_()
        Ends an inline element.
      • nonBreakingSpace

        void nonBreakingSpace()
        Adding a non breaking space, ie a space without any special formatting operations.
      • text

        void text​(java.lang.String text,
                  SinkEventAttributes attributes)
        Adds a text.

        The text parameter should contain only real content, ie any ignorable/collapsable whitespace/EOLs or other pretty-printing should be removed/normalized by a parser.

        If text contains any variants of line terminators, they should be normalized to the System EOL by an implementing Sink.

        Supported attributes are the base attributes plus

        SEMANTICS (values "emphasis", "strong", "small", "line-through", "citation", "quote", "definition", "abbreviation", "italic", "bold", "monospaced", "variable", "sample", "keyboard", "superscript", "subscript", "annotation", "highlight", "ruby", "rubyBase", "rubyText", "rubyTextContainer", "rubyParentheses", "bidirectionalIsolation", "bidirectionalOverride", "phrase", "insert", "delete").

        The following attributes are deprecated:

        VALIGN (values "sub", "sup"), DECORATION (values "underline", "overline", "line-through"), STYLE (values "italic", "bold", "monospaced").
        Parameters:
        text - The text to write.
        attributes - A set of SinkEventAttributes, may be null.
        Since:
        1.1
      • rawText

        void rawText​(java.lang.String text)
        Adding a raw text, ie a text without any special formatting operations.
        Parameters:
        text - The text to write.
      • comment

        void comment​(java.lang.String comment)
        Add a comment.
        Parameters:
        comment - The comment to write.
        Since:
        1.1
      • unknown

        void unknown​(java.lang.String name,
                     java.lang.Object[] requiredParams,
                     SinkEventAttributes attributes)
        Add an unknown event. This may be used by parsers to notify a general Sink about an event that doesn't fit into any event defined by the Sink API. Depending on the parameters, a Sink may decide whether or not to process the event, emit it as raw text, as a comment, log it, etc.
        Parameters:
        name - The name of the event.
        requiredParams - An optional array of required parameters to the event. May be null.
        attributes - A set of SinkEventAttributes, may be null.
        Since:
        1.1
      • flush

        void flush()
        Flush the writer or the stream, if needed. Flushing a previously-flushed Sink has no effect.
      • close

        void close()
        Close the writer or the stream, if needed. Closing a previously-closed Sink has no effect.