blob: e41855cae48202c9bfa52925d6934690f8fcfa4e [file] [log] [blame]
package org.apache.maven.doxia.module.apt;
/*
* 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.
*/
import java.io.Writer;
import org.apache.maven.doxia.markup.Markup;
import org.apache.maven.doxia.sink.Sink;
import org.apache.maven.doxia.sink.impl.AbstractSinkTest;
import org.codehaus.plexus.util.StringUtils;
/**
* Test the <code>AptSink</code> class
*
* @see AptSink
*/
public class AptSinkTest extends AbstractSinkTest
{
/** {@inheritDoc} */
protected String outputExtension()
{
return "apt";
}
/** {@inheritDoc} */
protected Sink createSink( Writer writer )
{
return new AptSink( writer );
}
/** {@inheritDoc} */
protected boolean isXmlSink()
{
return false;
}
/** {@inheritDoc} */
protected String getTitleBlock( String title )
{
return title;
}
/** {@inheritDoc} */
protected String getAuthorBlock( String author )
{
return author;
}
/** {@inheritDoc} */
protected String getDateBlock( String date )
{
return date;
}
/** {@inheritDoc} */
protected String getHeadBlock()
{
return AptMarkup.HEADER_START_MARKUP + EOL + AptMarkup.HEADER_START_MARKUP + EOL + AptMarkup.HEADER_START_MARKUP
+ EOL + AptMarkup.HEADER_START_MARKUP + EOL;
}
/** {@inheritDoc} */
protected String getBodyBlock()
{
return "";
}
/** {@inheritDoc} */
protected String getArticleBlock()
{
return "";
}
/** {@inheritDoc} */
protected String getNavigationBlock()
{
return "";
}
/** {@inheritDoc} */
protected String getSidebarBlock()
{
return "";
}
/** {@inheritDoc} */
protected String getSectionTitleBlock( String title )
{
return title;
}
/** {@inheritDoc} */
protected String getSection1Block( String title )
{
return EOL + title + EOL + EOL + EOL;
}
/** {@inheritDoc} */
protected String getSection2Block( String title )
{
return EOL + AptMarkup.SECTION_TITLE_START_MARKUP + title + EOL + EOL + EOL;
}
/** {@inheritDoc} */
protected String getSection3Block( String title )
{
return EOL + StringUtils.repeat( AptMarkup.SECTION_TITLE_START_MARKUP, 2 ) + title + EOL + EOL + EOL;
}
/** {@inheritDoc} */
protected String getSection4Block( String title )
{
return EOL + StringUtils.repeat( AptMarkup.SECTION_TITLE_START_MARKUP, 3 ) + title + EOL + EOL + EOL;
}
/** {@inheritDoc} */
protected String getSection5Block( String title )
{
return EOL + StringUtils.repeat( AptMarkup.SECTION_TITLE_START_MARKUP, 4 ) + title + EOL + EOL + EOL;
}
/** {@inheritDoc} */
protected String getHeaderBlock()
{
return "";
}
/** {@inheritDoc} */
protected String getContentBlock()
{
return "";
}
/** {@inheritDoc} */
protected String getFooterBlock()
{
return "";
}
/** {@inheritDoc} */
protected String getListBlock( String item )
{
return EOL + EOL + Markup.SPACE + "" + AptMarkup.LIST_START_MARKUP + "" + Markup.SPACE + item + EOL + EOL
+ Markup.SPACE + "" + AptMarkup.LIST_END_MARKUP + EOL;
}
/** {@inheritDoc} */
protected String getNumberedListBlock( String item )
{
return EOL + EOL + Markup.SPACE + "" + Markup.LEFT_SQUARE_BRACKET + ""
+ Markup.LEFT_SQUARE_BRACKET + AptMarkup.NUMBERING_LOWER_ROMAN_CHAR + ""
+ Markup.RIGHT_SQUARE_BRACKET + "" + Markup.RIGHT_SQUARE_BRACKET
+ Markup.SPACE + item + EOL + EOL + Markup.SPACE + "" + AptMarkup.LIST_END_MARKUP + EOL;
}
/** {@inheritDoc} */
protected String getDefinitionListBlock( String definum, String definition )
{
return EOL + EOL + Markup.SPACE + "" + Markup.LEFT_SQUARE_BRACKET + definum
+ Markup.RIGHT_SQUARE_BRACKET + "" + Markup.SPACE + definition + EOL + EOL
+ Markup.SPACE + "" + AptMarkup.LIST_END_MARKUP + EOL;
}
/** {@inheritDoc} */
protected String getFigureBlock( String source, String caption )
{
String figureBlock = EOL + Markup.LEFT_SQUARE_BRACKET + source + Markup.RIGHT_SQUARE_BRACKET + Markup.SPACE;
if( caption != null )
{
figureBlock += caption + EOL;
}
return figureBlock;
}
/** {@inheritDoc} */
protected String getTableBlock( String cell, String caption )
{
return EOL + AptMarkup.TABLE_ROW_START_MARKUP + AptMarkup.TABLE_COL_CENTERED_ALIGNED_MARKUP + EOL + cell
+ AptMarkup.TABLE_ROW_SEPARATOR_MARKUP + EOL + AptMarkup.TABLE_ROW_START_MARKUP
+ AptMarkup.TABLE_COL_CENTERED_ALIGNED_MARKUP + EOL + caption + EOL;
}
/** {@inheritDoc} */
protected String getParagraphBlock( String text )
{
return EOL + Markup.SPACE + text + EOL + EOL;
}
/** {@inheritDoc} */
protected String getDataBlock( String value, String text )
{
return text;
}
/** {@inheritDoc} */
protected String getTimeBlock( String datetime, String text )
{
return text;
}
/** {@inheritDoc} */
protected String getAddressBlock( String text )
{
return text;
}
/** {@inheritDoc} */
protected String getBlockquoteBlock( String text )
{
return text;
}
/** {@inheritDoc} */
protected String getDivisionBlock( String text )
{
return text;
}
/** {@inheritDoc} */
protected String getVerbatimBlock( String text )
{
return EOL + EOL + AptMarkup.BOXED_VERBATIM_START_MARKUP + EOL + text + EOL
+ AptMarkup.BOXED_VERBATIM_START_MARKUP + EOL;
}
/** {@inheritDoc} */
protected String getHorizontalRuleBlock()
{
return EOL + AptMarkup.HORIZONTAL_RULE_MARKUP + EOL;
}
/** {@inheritDoc} */
protected String getPageBreakBlock()
{
return EOL + AptMarkup.PAGE_BREAK_MARKUP + EOL;
}
/** {@inheritDoc} */
protected String getAnchorBlock( String anchor )
{
return AptMarkup.ANCHOR_START_MARKUP + anchor + AptMarkup.ANCHOR_END_MARKUP;
}
/** {@inheritDoc} */
protected String getLinkBlock( String link, String text )
{
String lnk = link.startsWith( "#" ) ? link.substring( 1 ) : link;
return AptMarkup.LINK_START_1_MARKUP + lnk + AptMarkup.LINK_START_2_MARKUP + text + AptMarkup.LINK_END_MARKUP;
}
/** {@inheritDoc} */
protected String getInlineBlock( String text )
{
return text;
}
/** {@inheritDoc} */
protected String getInlineItalicBlock( String text )
{
return AptMarkup.ITALIC_START_MARKUP + text + AptMarkup.ITALIC_END_MARKUP;
}
/** {@inheritDoc} */
protected String getInlineBoldBlock( String text )
{
return AptMarkup.BOLD_START_MARKUP + text + AptMarkup.BOLD_END_MARKUP;
}
/** {@inheritDoc} */
protected String getInlineCodeBlock( String text )
{
return AptMarkup.MONOSPACED_START_MARKUP + text + AptMarkup.MONOSPACED_END_MARKUP;
}
/** {@inheritDoc} */
protected String getItalicBlock( String text )
{
return AptMarkup.ITALIC_START_MARKUP + text + AptMarkup.ITALIC_END_MARKUP;
}
/** {@inheritDoc} */
protected String getBoldBlock( String text )
{
return AptMarkup.BOLD_START_MARKUP + text + AptMarkup.BOLD_END_MARKUP;
}
/** {@inheritDoc} */
protected String getMonospacedBlock( String text )
{
return text;
}
/** {@inheritDoc} */
protected String getLineBreakBlock()
{
return AptMarkup.BACKSLASH + EOL;
}
/** {@inheritDoc} */
protected String getLineBreakOpportunityBlock()
{
return "";
}
/** {@inheritDoc} */
protected String getNonBreakingSpaceBlock()
{
return AptMarkup.NON_BREAKING_SPACE_MARKUP;
}
/** {@inheritDoc} */
protected String getTextBlock( String text )
{
// "\\~, \\=, \\-, \\+, \\*, \\[, \\], \\<, \\>, \\{, \\}, \\\\"
StringBuilder sb = new StringBuilder();
sb.append( getSpecialCharacters( AptMarkup.COMMENT ) ).append( ",_" );
sb.append( getSpecialCharacters( Markup.EQUAL ) ).append( ",_" );
sb.append( getSpecialCharacters( Markup.MINUS ) ).append( ",_" );
sb.append( getSpecialCharacters( Markup.PLUS ) ).append( ",_" );
sb.append( getSpecialCharacters( Markup.STAR ) ).append( ",_" );
sb.append( getSpecialCharacters( Markup.LEFT_SQUARE_BRACKET ) ).append( ",_" );
sb.append( getSpecialCharacters( Markup.RIGHT_SQUARE_BRACKET ) ).append( ",_" );
sb.append( getSpecialCharacters( Markup.LESS_THAN ) ).append( ",_" );
sb.append( getSpecialCharacters( Markup.GREATER_THAN ) ).append( ",_" );
sb.append( getSpecialCharacters( Markup.LEFT_CURLY_BRACKET ) ).append( ",_" );
sb.append( getSpecialCharacters( Markup.RIGHT_CURLY_BRACKET ) ).append( ",_" );
sb.append( getSpecialCharacters( AptMarkup.BACKSLASH ) );
return sb.toString();
}
/** {@inheritDoc} */
protected String getRawTextBlock( String text )
{
return text;
}
/**
* Add a backslash for a special markup character
*
* @param c
* @return the character with a backslash before
*/
private static String getSpecialCharacters( char c )
{
return AptMarkup.BACKSLASH + "" + c;
}
/** {@inheritDoc} */
protected String getCommentBlock( String text )
{
return "~~" + text;
}
/**
* test for DOXIA-497.
*/
public void testLinksAndParagraphsInTableCells()
{
final String linkTarget = "target";
final String linkText = "link";
final String paragraphText = "paragraph text";
final Sink sink = getSink();
sink.table();
sink.tableRow();
sink.tableCell();
sink.link( linkTarget );
sink.text( linkText );
sink.link_();
sink.tableCell_();
sink.tableCell();
sink.paragraph();
sink.text( paragraphText );
sink.paragraph_();
sink.tableCell_();
sink.tableRow_();
sink.table_();
sink.flush();
sink.close();
String expected = EOL + AptMarkup.TABLE_ROW_START_MARKUP +
AptMarkup.MINUS +
AptMarkup.MINUS +
AptMarkup.TABLE_ROW_START_MARKUP +
AptMarkup.STAR +
EOL +
AptMarkup.LEFT_CURLY_BRACKET +
AptMarkup.LEFT_CURLY_BRACKET +
AptMarkup.LEFT_CURLY_BRACKET +
linkTarget +
AptMarkup.RIGHT_CURLY_BRACKET +
linkText +
AptMarkup.RIGHT_CURLY_BRACKET +
AptMarkup.RIGHT_CURLY_BRACKET +
AptMarkup.TABLE_CELL_SEPARATOR_MARKUP +
paragraphText +
AptMarkup.TABLE_CELL_SEPARATOR_MARKUP +
EOL +
AptMarkup.TABLE_ROW_START_MARKUP +
AptMarkup.MINUS +
AptMarkup.MINUS +
AptMarkup.TABLE_ROW_START_MARKUP +
AptMarkup.STAR +
EOL;
assertEquals( "Wrong link or paragraph markup in table cell", expected, getSinkContent() );
}
}