/******************************************************************************
* Copyright (c) 2016 Oracle
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Konstantin Komissarchik - initial implementation and ongoing maintenance
******************************************************************************/
package org.eclipse.sapphire.modeling.docsys;
/**
* @author <a href="mailto:konstantin.komissarchik@oracle.com">Konstantin Komissarchik</a>
*/
public final class HtmlFormatter
{
public static String format( final DocumentationContent content )
{
final StringBuilder buf = new StringBuilder();
format( buf, content );
return buf.toString();
}
private static void format( final StringBuilder buf,
final DocumentationPart part )
{
if( part instanceof TextPart )
{
buf.append( ( (TextPart) part ).getText() );
}
else if( part instanceof LineBreakPart )
{
buf.append( "<br/>" );
}
else if( part instanceof ParagraphBreakPart )
{
buf.append( "<br/><br/>" );
}
else if( part instanceof BoldPart )
{
if ( ((BoldPart)part).isOpen() )
{
buf.append( "<b>" );
}
else
{
buf.append( "</b>" );
}
}
else if( part instanceof OrderedListPart )
{
buf.append( "<ol>" );
for( ListItem item : ( (ListPart) part ).getItems() )
{
format( buf, item );
}
buf.append( "</ol>" );
}
else if( part instanceof UnorderedListPart )
{
buf.append( "<ul>" );
for( ListItem item : ( (ListPart) part ).getItems() )
{
format( buf, item );
}
buf.append( "</ul>" );
}
else if( part instanceof ListItem )
{
buf.append( "<li>" );
for( DocumentationPart child : ( (ListItem) part ).getChildren() )
{
format( buf, child );
}
buf.append( "</li>" );
}
else if( part instanceof DocumentationContent )
{
for( DocumentationPart child : ( (DocumentationContent) part ).getChildren() )
{
format( buf, child );
}
}
}
}