blob: 39626cade70153d7cfd8213006c1a09b3f11fbe2 [file] [log] [blame]
package org.apache.maven.doxia.sink.impl;
import org.apache.maven.doxia.sink.Sink;
import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/**
* Static methods to generate standard Doxia sink events.
*
* @version $Id$
*/
public class SinkTestDocument
{
/** Private constructor. */
private SinkTestDocument()
{
// do not instantiate
}
/**
* Dumps a full model that mimics aptconvert's test.apt,
* into the specified sink. The sink is flushed but not closed.
*
* @param sink The sink to receive the events.
*/
public static void generate( Sink sink )
{
generateHead( sink );
sink.body();
// TODO: what is this supposed to do?
//sink.sectionTitle();
//sink.text( "Section Title" );
//sink.sectionTitle_();
sink.paragraph();
sink.text( "Paragraph 1, line 1. Paragraph 1, line 2." );
sink.paragraph_();
sink.paragraph();
sink.text( "Paragraph 2, line 1. Paragraph 2, line 2." );
sink.paragraph_();
sink.section1();
sink.sectionTitle1();
sink.text( "Section title" );
sink.sectionTitle1_();
sink.section2();
sink.sectionTitle2();
sink.text( "Sub-section title" );
sink.sectionTitle2_();
sink.section3();
sink.sectionTitle3();
sink.text( "Sub-sub-section title" );
sink.sectionTitle3_();
sink.section4();
sink.sectionTitle4();
sink.text( "Sub-sub-sub-section title" );
sink.sectionTitle4_();
sink.section5();
sink.sectionTitle5();
sink.text( "Sub-sub-sub-sub-section title" );
sink.sectionTitle5_();
generateList( sink );
sink.verbatim( SinkEventAttributeSet.BOXED );
sink.text( "Verbatim text not contained in list item 3" );
sink.verbatim_();
generateNumberedList( sink );
sink.paragraph();
sink.text( "List numbering schemes: [[1]], [[a]], [[A]], [[i]], [[I]]." );
sink.paragraph_();
generateDefinitionList( sink );
sink.paragraph();
sink.text( "--- instead of +-- suppresses the box around verbatim text." );
sink.paragraph_();
generateFigure( sink );
generateTable( sink );
sink.paragraph();
sink.text( "No grid, no caption:" );
sink.paragraph_();
generateNoGridTable( sink );
generateHeaderTable( sink );
generateHorizontalRule( sink );
generatePageBreak( sink );
generateFonts( sink );
generateAnchors( sink );
generateLineBreak( sink );
generateNonBreakingSpace( sink );
generateSpecialCharacters( sink );
sink.comment( "A comment!" );
sink.section5_();
sink.section4_();
sink.section3_();
sink.section2_();
sink.section1_();
sink.body_();
sink.flush();
}
/**
* Dumps a header with title, author and date elements
* into the specified sink. The sink is not flushed or closed.
*
* @param sink The sink to receive the events.
*/
public static void generateHead( Sink sink )
{
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_();
}
/**
* Dumps a list into the specified sink. The sink is not flushed or closed.
*
* @param sink The sink to receive the events.
*/
public static void generateList( Sink sink )
{
sink.list();
sink.listItem();
sink.text( "List item 1." );
sink.listItem_();
sink.listItem();
sink.text( "List item 2." );
sink.paragraph();
sink.text( "Paragraph contained in list item 2." );
sink.paragraph_();
sink.list();
sink.listItem();
sink.text( "Sub-list item 1." );
sink.listItem_();
sink.listItem();
sink.text( "Sub-list item 2." );
sink.listItem_();
sink.list_();
sink.listItem_();
sink.listItem();
sink.text( "List item 3. Force end of list:" );
sink.listItem_();
sink.list_();
}
/**
* Dumps a numbered list into the specified sink.
* The sink is not flushed or closed.
*
* @param sink The sink to receive the events.
*/
public static void generateNumberedList( Sink sink )
{
sink.numberedList( Sink.NUMBERING_DECIMAL );
sink.numberedListItem();
sink.text( "Numbered item 1." );
sink.numberedList( Sink.NUMBERING_UPPER_ALPHA );
sink.numberedListItem();
sink.text( "Numbered item A." );
sink.numberedListItem_();
sink.numberedListItem();
sink.text( "Numbered item B." );
sink.numberedListItem_();
sink.numberedList_();
sink.numberedListItem_();
sink.numberedListItem();
sink.text( "Numbered item 2." );
sink.numberedListItem_();
sink.numberedList_();
}
/**
* Dumps a definition list into the specified sink.
* The sink is not flushed or closed.
*
* @param sink The sink to receive the events.
*/
public static void generateDefinitionList( Sink sink )
{
String eol = System.getProperty( "line.separator" );
sink.definitionList();
sink.definitionListItem();
sink.definedTerm();
sink.text( "Defined term 1" );
sink.definedTerm_();
sink.definition();
sink.text( "of definition list." );
sink.definition_();
sink.definitionListItem_();
sink.definitionListItem();
sink.definedTerm();
sink.text( "Defined term 2" );
sink.definedTerm_();
sink.definition();
sink.text( "of definition list." );
sink.verbatim( SinkEventAttributeSet.BOXED );
sink.text( "Verbatim text" + eol + " in a box " );
sink.verbatim_();
sink.definition_();
sink.definitionListItem_();
sink.definitionList_();
}
/**
* Dumps a figure with figure caption into the specified sink.
* The sink is not flushed or closed.
*
* @param sink The sink to receive the events.
*/
public static void generateFigure( Sink sink )
{
sink.figure( null );
sink.figureGraphics( "figure.png", null );
sink.figureCaption( null );
sink.text( "Figure caption", null );
sink.figureCaption_();
sink.figure_();
}
/**
* Dumps a table with grid and caption into the specified sink.
* The sink is not flushed or closed.
*
* @param sink The sink to receive the events.
*/
public static void generateTable( Sink sink )
{
int[] justify =
{
Sink.JUSTIFY_CENTER, Sink.JUSTIFY_LEFT, Sink.JUSTIFY_RIGHT
};
sink.table();
sink.tableRows( justify, true );
sink.tableRow();
sink.tableCell();
sink.text( "Centered" );
sink.lineBreak();
sink.text( "cell 1,1" );
sink.tableCell_();
sink.tableCell();
sink.text( "Left-aligned" );
sink.lineBreak();
sink.text( "cell 1,2" );
sink.tableCell_();
sink.tableCell();
sink.text( "Right-aligned" );
sink.lineBreak();
sink.text( "cell 1,3" );
sink.tableCell_();
sink.tableRow_();
sink.tableRow();
sink.tableCell();
sink.text( "cell 2,1" );
sink.tableCell_();
sink.tableCell();
sink.text( "cell 2,2" );
sink.tableCell_();
sink.tableCell();
sink.text( "cell 2,3" );
sink.tableCell_();
sink.tableRow_();
sink.tableRows_();
sink.tableCaption();
sink.text( "Table caption" );
sink.tableCaption_();
sink.table_();
}
/**
* Dumps a table without grid into the specified sink.
* The sink is not flushed or closed.
*
* @param sink The sink to receive the events.
*/
public static void generateNoGridTable( Sink sink )
{
int[] justify =
{
Sink.JUSTIFY_CENTER, Sink.JUSTIFY_CENTER
};
sink.table();
sink.tableRows( justify, false );
sink.tableRow();
sink.tableCell();
sink.text( "cell" );
sink.tableCell_();
sink.tableCell();
sink.text( "cell" );
sink.tableCell_();
sink.tableRow_();
sink.tableRow();
sink.tableCell();
sink.text( "cell" );
sink.tableCell_();
sink.tableCell();
sink.text( "cell" );
sink.tableCell_();
sink.tableRow_();
sink.tableRows_();
sink.table_();
}
/**
* Dumps a table with a header row into the specified sink.
* The sink is not flushed or closed.
*
* @param sink The sink to receive the events.
*/
public static void generateHeaderTable( Sink sink )
{
int[] justify =
{
Sink.JUSTIFY_CENTER, Sink.JUSTIFY_CENTER
};
sink.table();
sink.tableRows( justify, true );
sink.tableRow();
sink.tableHeaderCell();
sink.text( "header" );
sink.tableHeaderCell_();
sink.tableHeaderCell();
sink.text( "header" );
sink.tableHeaderCell_();
sink.tableRow_();
sink.tableRow();
sink.tableCell();
sink.text( "cell" );
sink.tableCell_();
sink.tableCell();
sink.text( "cell" );
sink.tableCell_();
sink.tableRow_();
sink.tableRows_();
sink.table_();
}
/**
* Dumps a paragraph with italic, bold and monospaced text
* into the specified sink. The sink is not flushed or closed.
*
* @param sink The sink to receive the events.
*/
public static void generateFonts( Sink sink )
{
sink.paragraph();
sink.inline( SinkEventAttributeSet.Semantics.ITALIC );
sink.text( "Italic" );
sink.inline_();
sink.text( " font. " );
sink.inline( SinkEventAttributeSet.Semantics.BOLD );
sink.text( "Bold" );
sink.inline_();
sink.text( " font. " );
sink.inline( SinkEventAttributeSet.Semantics.CODE );
sink.text( "Monospaced (code)" );
sink.inline_();
sink.text( " font." );
sink.paragraph_();
}
/**
* Dumps a paragraph with anchor and link elements
* into the specified sink. The sink is not flushed or closed.
*
* @param sink The sink to receive the events.
*/
public static void generateAnchors( Sink sink )
{
sink.paragraph();
sink.anchor( "Anchor" );
sink.text( "Anchor" );
sink.anchor_();
sink.text( ". Link to " );
sink.link( "#Anchor" );
sink.text( "Anchor" );
sink.link_();
sink.text( ". Link to " );
sink.link( "http://www.pixware.fr" );
sink.text( "http://www.pixware.fr" );
sink.link_();
sink.text( ". Link to " );
sink.link( "#Anchor" );
sink.text( "showing alternate text" );
sink.link_();
sink.text( ". Link to " );
sink.link( "http://www.pixware.fr" );
sink.text( "Pixware home page" );
sink.link_();
sink.text( "." );
sink.paragraph_();
}
/**
* Dumps a horizontal rule block into the specified sink.
* The sink is not flushed or closed.
*
* @param sink The sink to receive the events.
*/
public static void generateHorizontalRule( Sink sink )
{
sink.paragraph();
sink.text( "Horizontal line:" );
sink.paragraph_();
sink.horizontalRule();
}
/**
* Dumps a pageBreak block into the specified sink.
* The sink is not flushed or closed.
*
* @param sink The sink to receive the events.
*/
public static void generatePageBreak( Sink sink )
{
sink.pageBreak();
sink.paragraph();
sink.text( "New page." );
sink.paragraph_();
}
/**
* Dumps a lineBreak block into the specified sink.
* The sink is not flushed or closed.
*
* @param sink The sink to receive the events.
*/
public static void generateLineBreak( Sink sink )
{
sink.paragraph();
sink.text( "Force line" );
sink.lineBreak();
sink.text( "break." );
sink.paragraph_();
}
/**
* Dumps a nonBreakingSpace block into the specified sink.
* The sink is not flushed or closed.
*
* @param sink The sink to receive the events.
*/
public static void generateNonBreakingSpace( Sink sink )
{
sink.paragraph();
sink.text( "Non" );
sink.nonBreakingSpace();
sink.text( "breaking" );
sink.nonBreakingSpace();
sink.text( "space." );
sink.paragraph_();
}
/**
* Dumps a special character block into the specified sink.
* The sink is not flushed or closed.
*
* @param sink The sink to receive the events.
*/
public static void generateSpecialCharacters( Sink sink )
{
sink.paragraph();
sink.text( "Escaped special characters:" );
sink.lineBreak();
sink.text( "~" );
sink.lineBreak();
sink.text( "=" );
sink.lineBreak();
sink.text( "-" );
sink.lineBreak();
sink.text( "+" );
sink.lineBreak();
sink.text( "*" );
sink.lineBreak();
sink.text( "[" );
sink.lineBreak();
sink.text( "]" );
sink.lineBreak();
sink.text( "<" );
sink.lineBreak();
sink.text( ">" );
sink.lineBreak();
sink.text( "{" );
sink.lineBreak();
sink.text( "}" );
sink.lineBreak();
sink.text( "\\" );
sink.paragraph_();
sink.paragraph();
sink.text( "Copyright symbol:" );
sink.lineBreak();
sink.text( "\u00a9" );
sink.paragraph_();
}
}