You are viewing a plain text version of this content. The canonical link for it is here.
Posted to doxia-commits@maven.apache.org by lt...@apache.org on 2007/11/03 21:59:15 UTC
svn commit: r591687 [1/2] - in /maven/doxia/doxia/trunk/doxia-modules:
doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/
doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/
doxia-module-xhtml/src/test/java/org/apache...
Author: ltheussl
Date: Sat Nov 3 13:59:15 2007
New Revision: 591687
URL: http://svn.apache.org/viewvc?rev=591687&view=rev
Log:
Extend new base classes
Modified:
maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java
maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSink.java
maven/doxia/doxia/trunk/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParser.java
maven/doxia/doxia/trunk/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlSink.java
maven/doxia/doxia/trunk/doxia-modules/doxia-module-xhtml/src/test/java/org/apache/maven/doxia/module/xhtml/XhtmlSinkTest.java
Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java?rev=591687&r1=591686&r2=591687&view=diff
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java Sat Nov 3 13:59:15 2007
@@ -32,10 +32,9 @@
import org.apache.maven.doxia.macro.MacroExecutionException;
import org.apache.maven.doxia.macro.manager.MacroNotFoundException;
import org.apache.maven.doxia.macro.MacroRequest;
-import org.apache.maven.doxia.parser.AbstractXmlParser;
import org.apache.maven.doxia.parser.ParseException;
+import org.apache.maven.doxia.parser.XhtmlBaseParser;
import org.apache.maven.doxia.sink.Sink;
-import org.apache.maven.doxia.util.HtmlTools;
import org.codehaus.plexus.util.IOUtil;
import org.codehaus.plexus.util.StringUtils;
@@ -51,38 +50,24 @@
* @plexus.component role="org.apache.maven.doxia.parser.Parser" role-hint="xdoc"
*/
public class XdocParser
- extends AbstractXmlParser
+ extends XhtmlBaseParser
implements XdocMarkup
{
/** The source content of the input reader. Used to pass into macros. */
private String sourceContent;
- /** Used to distinguish <a href=""> from <a name="">. */
- private boolean isLink;
-
- /** Used to distinguish <a href=""> from <a name="">. */
- private boolean isAnchor;
-
- /** True if a <script></script> block is read. CDATA sections within are handles as rawText. */
+ /** True if a <script></script> block is read. CDATA sections within are handled as rawText. */
private boolean scriptBlock;
/** Empty elements don't write a closing tag. */
private boolean isEmptyElement;
- /** Used for nested lists. */
- private int orderedListDepth = 0;
-
/** A macro name. */
private String macroName;
/** The macro parameters. */
private Map macroParameters = new HashMap();
- /** For tables. */
- private boolean hasCaption;
-
- /** Counts section level. */
- private int sectionLevel;
/** {@inheritDoc} */
public void parse( Reader source, Sink sink )
@@ -119,6 +104,10 @@
//Do nothing
return;
}
+ else if ( parser.getName().equals( Tag.HEAD.toString() ) )
+ {
+ sink.head();
+ }
else if ( parser.getName().equals( Tag.TITLE.toString() ) )
{
sink.title();
@@ -159,171 +148,14 @@
sink.sectionTitle2_();
}
- else if ( parser.getName().equals( Tag.H4.toString() ) )
- {
- closeOpenSections( Sink.SECTION_LEVEL_3, sink );
-
- sink.section3();
-
- sink.sectionTitle3();
- }
- else if ( parser.getName().equals( Tag.H5.toString() ) )
- {
- closeOpenSections( Sink.SECTION_LEVEL_4, sink );
-
- sink.section4();
-
- sink.sectionTitle4();
- }
- else if ( parser.getName().equals( Tag.H6.toString() ) )
- {
- closeOpenSections( Sink.SECTION_LEVEL_5, sink );
-
- sink.section5();
-
- sink.sectionTitle5();
- }
- else if ( parser.getName().equals( Tag.P.toString() ) )
- {
- sink.paragraph();
- }
else if ( parser.getName().equals( SOURCE_TAG.toString() ) )
{
sink.verbatim( true );
}
- /*
- * The PRE element tells visual user agents that the enclosed text is
- * "preformatted". When handling preformatted text, visual user agents:
- * - May leave white space intact.
- * - May render text with a fixed-pitch font.
- * - May disable automatic word wrap.
- * - Must not disable bidirectional processing.
- * Non-visual user agents are not required to respect extra white space
- * in the content of a PRE element.
- */
- else if ( parser.getName().equals( Tag.PRE.toString() ) )
- {
- sink.verbatim( false );
- }
- else if ( parser.getName().equals( Tag.UL.toString() ) )
- {
- sink.list();
- }
- else if ( parser.getName().equals( Tag.OL.toString() ) )
- {
- int numbering = Sink.NUMBERING_DECIMAL;
-
- // this will have to be generalized if we handle styles
- String style = parser.getAttributeValue( null, Attribute.STYLE.toString() );
-
- if ( style != null )
- {
- if ( "list-style-type: upper-alpha".equals( style ) )
- {
- numbering = Sink.NUMBERING_UPPER_ALPHA;
- }
- else if ( "list-style-type: lower-alpha".equals( style ) )
- {
- numbering = Sink.NUMBERING_LOWER_ALPHA;
- }
- else if ( "list-style-type: upper-roman".equals( style ) )
- {
- numbering = Sink.NUMBERING_UPPER_ROMAN;
- }
- else if ( "list-style-type: lower-roman".equals( style ) )
- {
- numbering = Sink.NUMBERING_LOWER_ROMAN;
- }
- else if ( "list-style-type: decimal".equals( style ) )
- {
- numbering = Sink.NUMBERING_DECIMAL;
- }
- }
-
- sink.numberedList( numbering );
- orderedListDepth++;
- }
- else if ( parser.getName().equals( Tag.LI.toString() ) )
- {
- if ( orderedListDepth == 0 )
- {
- sink.listItem();
- }
- else
- {
- sink.numberedListItem();
- }
- }
- else if ( parser.getName().equals( Tag.DL.toString() ) )
- {
- sink.definitionList();
- }
- else if ( parser.getName().equals( Tag.DT.toString() ) )
- {
- sink.definitionListItem();
- sink.definedTerm();
- }
- else if ( parser.getName().equals( Tag.DD.toString() ) )
- {
- sink.definition();
- }
else if ( parser.getName().equals( PROPERTIES_TAG.toString() ) )
{
sink.head();
}
- else if ( ( parser.getName().equals( Tag.B.toString() ) ) || ( parser.getName().equals( Tag.STRONG.toString() ) ) )
- {
- sink.bold();
- }
- else if ( ( parser.getName().equals( Tag.I.toString() ) ) || ( parser.getName().equals( Tag.EM.toString() ) ) )
- {
- sink.italic();
- }
- else if ( ( parser.getName().equals( Tag.CODE.toString() ) ) || ( parser.getName().equals( Tag.SAMP.toString() ) ) ||
- ( parser.getName().equals( Tag.TT.toString() ) ) )
- {
- sink.monospaced();
- }
- else if ( parser.getName().equals( Tag.A.toString() ) )
- {
- String href = parser.getAttributeValue( null, Attribute.HREF.toString() );
-
- if ( href != null )
- {
- String link = href;
-
- if ( link.startsWith( "#" ) )
- {
- link = link.substring( 1 );
- }
-
- sink.link( link );
-
- isLink = true;
- }
- else
- {
- String name = parser.getAttributeValue( null, Attribute.NAME.toString() );
-
- if ( name != null )
- {
- sink.anchor( name );
-
- isAnchor = true;
- }
- else
- {
- String id = parser.getAttributeValue( null, Attribute.ID.toString() );
-
- if ( id != null )
- {
- sink.anchor( id );
-
- isAnchor = true;
- }
- }
- }
- }
// ----------------------------------------------------------------------
// Macro
@@ -368,124 +200,16 @@
}
}
}
-
- // ----------------------------------------------------------------------
- // Tables
- // ----------------------------------------------------------------------
-
- else if ( parser.getName().equals( Tag.TABLE.toString() ) )
- {
- sink.table();
-
- String border = parser.getAttributeValue( null, Attribute.BORDER.toString() );
-
- boolean grid = true;
-
- if ( "0".equals( border ) )
- {
- grid = false;
- }
-
- String align = parser.getAttributeValue( null, Attribute.ALIGN.toString() );
-
- int[] justif = { JUSTIFY_CENTER };
-
- if ( "left".equals( align ) )
- {
- justif[0] = JUSTIFY_LEFT;
- }
- else if ( "right".equals( align ) )
- {
- justif[0] = JUSTIFY_RIGHT;
- }
-
- sink.tableRows( justif, grid );
- }
- else if ( parser.getName().equals( Tag.TR.toString() ) )
- {
- sink.tableRow();
- }
- else if ( parser.getName().equals( Tag.TH.toString() ) )
- {
- String width = parser.getAttributeValue( null, Attribute.WIDTH.toString() );
-
- if ( width == null )
- {
- sink.tableHeaderCell();
- }
- else
- {
- sink.tableHeaderCell( width );
- }
- }
- else if ( parser.getName().equals( Tag.TD.toString() ) )
- {
- String width = parser.getAttributeValue( null, Attribute.WIDTH.toString() );
-
- if ( width == null )
- {
- sink.tableCell();
- }
- else
- {
- sink.tableCell( width );
- }
- }
- else if ( parser.getName().equals( Tag.CAPTION.toString() ) )
- {
- sink.tableRows_();
- this.hasCaption = true;
- sink.tableCaption();
- }
-
- // ----------------------------------------------------------------------
- // Empty elements: <br/>, <hr/> and <img />
- // ----------------------------------------------------------------------
-
- else if ( parser.getName().equals( Tag.BR.toString() ) )
- {
- sink.lineBreak();
- }
- else if ( parser.getName().equals( Tag.HR.toString() ) )
- {
- sink.horizontalRule();
- }
- else if ( parser.getName().equals( Tag.IMG.toString() ) )
- {
- String src = parser.getAttributeValue( null, Attribute.SRC.toString() );
- String title = parser.getAttributeValue( null, Attribute.TITLE.toString() );
- String alt = parser.getAttributeValue( null, Attribute.ALT.toString() );
-
- sink.figure();
-
- if ( src != null )
- {
- sink.figureGraphics( src );
- }
-
- if ( title != null )
- {
- sink.figureCaption();
- sink.text( title );
- sink.figureCaption_();
- }
- else if ( alt != null )
- {
- sink.figureCaption();
- sink.text( alt );
- sink.figureCaption_();
- }
-
- sink.figure_();
- }
else if ( parser.getName().equals( Tag.SCRIPT.toString() ) )
{
handleRawText( sink, parser );
scriptBlock = true;
}
- else
+ else if ( !baseStartTag( parser, sink ) )
{
+ // TODO: remove
handleRawText( sink, parser );
+ // TODO: log( "Unrecognized tag!" );
}
}
@@ -498,17 +222,9 @@
//Do nothing
return;
}
- else if ( parser.getName().equals( Tag.TITLE.toString() ) )
- {
- sink.title_();
- }
- else if ( parser.getName().equals( AUTHOR_TAG.toString() ) )
+ else if ( parser.getName().equals( Tag.HEAD.toString() ) )
{
- sink.author_();
- }
- else if ( parser.getName().equals( DATE_TAG.toString() ) )
- {
- sink.date_();
+ sink.head_();
}
else if ( parser.getName().equals( Tag.BODY.toString() ) )
{
@@ -516,83 +232,26 @@
sink.body_();
}
- else if ( parser.getName().equals( Tag.P.toString() ) )
- {
- sink.paragraph_();
- }
- else if ( parser.getName().equals( SOURCE_TAG.toString() ) )
- {
- sink.verbatim_();
- }
- else if ( parser.getName().equals( Tag.PRE.toString() ) )
- {
- sink.verbatim_();
- }
- else if ( parser.getName().equals( Tag.UL.toString() ) )
- {
- sink.list_();
- }
- else if ( parser.getName().equals( Tag.OL.toString() ) )
- {
- sink.numberedList_();
- orderedListDepth--;
- }
- else if ( parser.getName().equals( Tag.LI.toString() ) )
+ else if ( parser.getName().equals( Tag.TITLE.toString() ) )
{
- if ( orderedListDepth == 0 )
- {
- sink.listItem_();
- }
- else
- {
- sink.numberedListItem_();
- }
+ sink.title_();
}
- else if ( parser.getName().equals( Tag.DL.toString() ) )
+ else if ( parser.getName().equals( AUTHOR_TAG.toString() ) )
{
- sink.definitionList_();
+ sink.author_();
}
- else if ( parser.getName().equals( Tag.DT.toString() ) )
+ else if ( parser.getName().equals( DATE_TAG.toString() ) )
{
- sink.definedTerm_();
+ sink.date_();
}
- else if ( parser.getName().equals( Tag.DD.toString() ) )
+ else if ( parser.getName().equals( SOURCE_TAG.toString() ) )
{
- sink.definition_();
- sink.definitionListItem_();
+ sink.verbatim_();
}
else if ( parser.getName().equals( PROPERTIES_TAG.toString() ) )
{
sink.head_();
}
- else if ( ( parser.getName().equals( Tag.B.toString() ) ) || ( parser.getName().equals( Tag.STRONG.toString() ) ) )
- {
- sink.bold_();
- }
- else if ( ( parser.getName().equals( Tag.I.toString() ) ) || ( parser.getName().equals( Tag.EM.toString() ) ) )
- {
- sink.italic_();
- }
- else if ( ( parser.getName().equals( Tag.CODE.toString() ) ) || ( parser.getName().equals( Tag.SAMP.toString() ) ) ||
- ( parser.getName().equals( Tag.TT.toString() ) ) )
- {
- sink.monospaced_();
- }
- else if ( parser.getName().equals( Tag.A.toString() ) )
- {
- if ( isLink )
- {
- sink.link_();
-
- isLink = false;
- }
- else if ( isAnchor )
- {
- sink.anchor_();
-
- isAnchor = false;
- }
- }
// ----------------------------------------------------------------------
// Macro
@@ -632,38 +291,6 @@
{
// do nothing
}
-
- // ----------------------------------------------------------------------
- // Tables
- // ----------------------------------------------------------------------
-
- else if ( parser.getName().equals( Tag.TABLE.toString() ) )
- {
- if ( !hasCaption )
- {
- sink.tableRows_();
- }
-
- this.hasCaption = false;
-
- sink.table_();
- }
- else if ( parser.getName().equals( Tag.TR.toString() ) )
- {
- sink.tableRow_();
- }
- else if ( parser.getName().equals( Tag.TH.toString() ) )
- {
- sink.tableHeaderCell_();
- }
- else if ( parser.getName().equals( Tag.TD.toString() ) )
- {
- sink.tableCell_();
- }
- else if ( parser.getName().equals( Tag.CAPTION.toString() ) )
- {
- sink.tableCaption_();
- }
else if ( parser.getName().equals( SECTION_TAG.toString() ) )
{
closeOpenSections( 0, sink );
@@ -676,18 +303,6 @@
sink.section2_();
}
- else if ( parser.getName().equals( Tag.H4.toString() ) )
- {
- sink.sectionTitle3_();
- }
- else if ( parser.getName().equals( Tag.H5.toString() ) )
- {
- sink.sectionTitle4_();
- }
- else if ( parser.getName().equals( Tag.H6.toString() ) )
- {
- sink.sectionTitle5_();
- }
else if ( parser.getName().equals( Tag.SCRIPT.toString() ) )
{
// TODO: this is HTML specific, factor out into a specialized parser
@@ -700,36 +315,21 @@
scriptBlock = false;
}
- else if ( !isEmptyElement )
- {
- // TODO: this is HTML specific, factor out into a specialized parser
-
- sink.rawText( String.valueOf( LESS_THAN ) + String.valueOf( SLASH ) );
-
- sink.rawText( parser.getName() );
-
- sink.rawText( String.valueOf( GREATER_THAN ) );
- }
- else
+ else if ( !baseEndTag( parser, sink ) )
{
- isEmptyElement = false;
- }
- }
+ if ( !isEmptyElement )
+ {
+ // TODO: this is HTML specific, factor out into a specialized parser
- /** {@inheritDoc} */
- protected void handleText( XmlPullParser parser, Sink sink )
- throws XmlPullParserException
- {
- String text = parser.getText();
+ sink.rawText( String.valueOf( LESS_THAN ) + String.valueOf( SLASH ) );
- if ( StringUtils.isNotEmpty( text.trim() ) )
- {
- // emit separate text events for different lines
- String[] lines = StringUtils.split( text, EOL );
+ sink.rawText( parser.getName() );
- for ( int i = 0; i < lines.length; i++ )
+ sink.rawText( String.valueOf( GREATER_THAN ) );
+ }
+ else
{
- sink.text( lines[i] );
+ isEmptyElement = false;
}
}
}
@@ -750,40 +350,33 @@
}
}
- /** {@inheritDoc} */
- protected void handleComment( XmlPullParser parser, Sink sink )
- throws XmlPullParserException
+ /**
+ * Close open h4, h5, h6 sections. The current level is set to newLevel afterwards.
+ *
+ * @param newLevel the new section level, all upper levels have to be closed.
+ * @param sink the sink to receive the events.
+ */
+ protected void closeOpenSections( int newLevel, Sink sink )
{
- String text = parser.getText();
-
- if ( "PB".equals( text.trim() ) )
- {
- sink.pageBreak();
- }
- else
+ while ( getSectionLevel() >= newLevel )
{
- sink.comment( text.trim() );
- }
- }
-
- /** {@inheritDoc} */
- protected void handleEntity( XmlPullParser parser, Sink sink )
- throws XmlPullParserException
- {
- String text = parser.getText();
-
- int[] holder = new int[] {0, 0};
- char[] chars = parser.getTextCharacters( holder );
- String textChars = String.valueOf( chars, holder[0], holder[1] );
+ if ( getSectionLevel() == Sink.SECTION_LEVEL_5)
+ {
+ sink.section5_();
+ }
+ else if ( getSectionLevel() == Sink.SECTION_LEVEL_4)
+ {
+ sink.section4_();
+ }
+ else if ( getSectionLevel() == Sink.SECTION_LEVEL_3)
+ {
+ sink.section3_();
+ }
- if ( "#160".equals( textChars ) )
- {
- sink.nonBreakingSpace();
- }
- else
- {
- sink.text( text );
+ setSectionLevel( getSectionLevel() - 1 );
}
+
+ setSectionLevel( newLevel );
}
// ----------------------------------------------------------------------
@@ -821,35 +414,6 @@
}
sink.rawText( String.valueOf( GREATER_THAN ) );
- }
-
- /**
- * Close open h4, h5, h6 sections. The current level is set to newLevel afterwards.
- *
- * @param newLevel the new section level, all upper levels have to be closed.
- * @param sink the sink to receive the events.
- */
- private void closeOpenSections( int newLevel, Sink sink )
- {
- while ( this.sectionLevel >= newLevel )
- {
- if ( sectionLevel == Sink.SECTION_LEVEL_5)
- {
- sink.section5_();
- }
- else if ( sectionLevel == Sink.SECTION_LEVEL_4)
- {
- sink.section4_();
- }
- else if ( sectionLevel == Sink.SECTION_LEVEL_3)
- {
- sink.section3_();
- }
-
- this.sectionLevel--;
- }
-
- this.sectionLevel = newLevel;
}
}
Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSink.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSink.java?rev=591687&r1=591686&r2=591687&view=diff
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSink.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSink.java Sat Nov 3 13:59:15 2007
@@ -19,7 +19,6 @@
* under the License.
*/
-import java.io.PrintWriter;
import java.io.Writer;
import javax.swing.text.MutableAttributeSet;
@@ -27,9 +26,8 @@
import javax.swing.text.html.HTML.Attribute;
import javax.swing.text.html.HTML.Tag;
-import org.apache.maven.doxia.parser.Parser;
-import org.apache.maven.doxia.sink.AbstractXmlSink;
import org.apache.maven.doxia.sink.StructureSink;
+import org.apache.maven.doxia.sink.XhtmlBaseSink;
import org.apache.maven.doxia.util.HtmlTools;
/**
@@ -41,46 +39,28 @@
* @plexus.component role="org.apache.maven.doxia.sink.Sink" role-hint="xdoc"
*/
public class XdocSink
- extends AbstractXmlSink
+ extends XhtmlBaseSink
implements XdocMarkup
{
// ----------------------------------------------------------------------
// Instance fields
// ----------------------------------------------------------------------
- /** The PrintWriter to write the result. */
- private PrintWriter writer;
-
- /** Used to collect text events. */
- private StringBuffer buffer = new StringBuffer();
-
- /** An indication on if we're inside a head. */
- private boolean headFlag;
-
/** An indication on if we're inside a box (verbatim). */
private boolean boxedFlag;
- /** An indication on if we're in verbatim mode. */
- private boolean verbatimFlag;
-
- /** Justification of table cells. */
- private int[] cellJustif;
-
- /** Number of cells in a table row. */
- private int cellCount;
-
// ----------------------------------------------------------------------
- //
+ // Constructors
// ----------------------------------------------------------------------
/**
- * Constructor, initialize the PrintWriter.
+ * Constructor, initialize the Writer.
*
* @param writer The writer to write the result.
*/
public XdocSink( Writer writer )
{
- this.writer = new PrintWriter( writer );
+ super( writer );
}
// ----------------------------------------------------------------------
@@ -88,40 +68,12 @@
// ----------------------------------------------------------------------
/**
- * @return the current buffer
- */
- protected StringBuffer getBuffer()
- {
- return buffer;
- }
-
- /**
- * @param headFlag an header flag
- */
- protected void setHeadFlag( boolean headFlag )
- {
- this.headFlag = headFlag;
- }
-
- /**
* Reset all variables.
*/
protected void resetState()
{
- headFlag = false;
- resetBuffer();
+ super.resetState();
boxedFlag = false;
- verbatimFlag = false;
- cellJustif = null;
- cellCount = 0;
- }
-
- /**
- * Reset the buffer.
- */
- protected void resetBuffer()
- {
- buffer = new StringBuffer();
}
/**
@@ -133,7 +85,7 @@
{
resetState();
- headFlag = true;
+ setHeadFlag( true );
write( "<?xml version=\"1.0\" ?>" + EOL );
@@ -149,7 +101,7 @@
*/
public void head_()
{
- headFlag = false;
+ setHeadFlag( false );
writeEndTag( PROPERTIES_TAG );
}
@@ -169,7 +121,7 @@
*/
public void title_()
{
- content( buffer.toString() );
+ content( getBuffer().toString() );
writeEndTag( Tag.TITLE );
@@ -182,10 +134,10 @@
*/
public void author_()
{
- if ( buffer.length() > 0 )
+ if ( getBuffer().length() > 0 )
{
writeStartTag( AUTHOR_TAG );
- content( buffer.toString() );
+ content( getBuffer().toString() );
writeEndTag( AUTHOR_TAG );
resetBuffer();
}
@@ -197,10 +149,10 @@
*/
public void date_()
{
- if ( buffer.length() > 0 )
+ if ( getBuffer().length() > 0 )
{
writeStartTag( DATE_TAG );
- content( buffer.toString() );
+ content( getBuffer().toString() );
writeEndTag( DATE_TAG );
resetBuffer();
}
@@ -235,126 +187,6 @@
// Sections
// ----------------------------------------------------------------------
- /** {@inheritDoc} */
- public void section1()
- {
- onSection( SECTION_LEVEL_1 );
- }
-
- /** {@inheritDoc} */
- public void sectionTitle1()
- {
- onSectionTitle( SECTION_LEVEL_1 );
- }
-
- /** {@inheritDoc} */
- public void sectionTitle1_()
- {
- onSectionTitle_( SECTION_LEVEL_1 );
- }
-
- /** {@inheritDoc} */
- public void section1_()
- {
- onSection_( SECTION_LEVEL_1 );
- }
-
- /** {@inheritDoc} */
- public void section2()
- {
- onSection( SECTION_LEVEL_2 );
- }
-
- /** {@inheritDoc} */
- public void sectionTitle2()
- {
- onSectionTitle( SECTION_LEVEL_2 );
- }
-
- /** {@inheritDoc} */
- public void sectionTitle2_()
- {
- onSectionTitle_( SECTION_LEVEL_2 );
- }
-
- /** {@inheritDoc} */
- public void section2_()
- {
- onSection_( SECTION_LEVEL_2 );
- }
-
- /** {@inheritDoc} */
- public void section3()
- {
- onSection( SECTION_LEVEL_3 );
- }
-
- /** {@inheritDoc} */
- public void sectionTitle3()
- {
- onSectionTitle( SECTION_LEVEL_3 );
- }
-
- /** {@inheritDoc} */
- public void sectionTitle3_()
- {
- onSectionTitle_( SECTION_LEVEL_3 );
- }
-
- /** {@inheritDoc} */
- public void section3_()
- {
- onSection_( SECTION_LEVEL_3 );
- }
-
- /** {@inheritDoc} */
- public void section4()
- {
- onSection( SECTION_LEVEL_4 );
- }
-
- /** {@inheritDoc} */
- public void sectionTitle4()
- {
- onSectionTitle( SECTION_LEVEL_4 );
- }
-
- /** {@inheritDoc} */
- public void sectionTitle4_()
- {
- onSectionTitle_( SECTION_LEVEL_4 );
- }
-
- /** {@inheritDoc} */
- public void section4_()
- {
- onSection_( SECTION_LEVEL_4 );
- }
-
- /** {@inheritDoc} */
- public void section5()
- {
- onSection( SECTION_LEVEL_5 );
- }
-
- /** {@inheritDoc} */
- public void sectionTitle5()
- {
- onSectionTitle( SECTION_LEVEL_5 );
- }
-
- /** {@inheritDoc} */
- public void sectionTitle5_()
- {
- onSectionTitle_( SECTION_LEVEL_5 );
- }
-
- /** {@inheritDoc} */
- public void section5_()
- {
- onSection_( SECTION_LEVEL_5 );
- }
-
/**
* Starts a section.
*
@@ -362,7 +194,7 @@
* @see XdocMarkup#SECTION_TAG
* @see XdocMarkup#SUBSECTION_TAG
*/
- private void onSection( int depth )
+ protected void onSection( int depth )
{
if ( depth == SECTION_LEVEL_1 )
{
@@ -383,7 +215,7 @@
* @see XdocMarkup#SECTION_TAG
* @see XdocMarkup#SUBSECTION_TAG
*/
- private void onSection_( int depth )
+ protected void onSection_( int depth )
{
if ( depth == SECTION_LEVEL_1 )
{
@@ -403,7 +235,7 @@
* @see javax.swing.text.html.HTML.Tag#H5
* @see javax.swing.text.html.HTML.Tag#H6
*/
- private void onSectionTitle( int depth )
+ protected void onSectionTitle( int depth )
{
if ( depth == SECTION_LEVEL_3 )
{
@@ -427,7 +259,7 @@
* @see javax.swing.text.html.HTML.Tag#H5
* @see javax.swing.text.html.HTML.Tag#H6
*/
- private void onSectionTitle_( int depth )
+ protected void onSectionTitle_( int depth )
{
if ( depth == SECTION_LEVEL_1 || depth == SECTION_LEVEL_2 )
{
@@ -453,215 +285,12 @@
/**
* {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#UL
- */
- public void list()
- {
- writeStartTag( Tag.UL );
- }
-
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#UL
- */
- public void list_()
- {
- writeEndTag( Tag.UL );
- }
-
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#LI
- */
- public void listItem()
- {
- writeStartTag( Tag.LI );
- }
-
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#LI
- */
- public void listItem_()
- {
- writeEndTag( Tag.LI );
- }
-
- /**
- * The default list style depends on the numbering.
- *
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#OL
- */
- public void numberedList( int numbering )
- {
- String style;
- switch ( numbering )
- {
- case NUMBERING_UPPER_ALPHA:
- style = "upper-alpha";
- break;
- case NUMBERING_LOWER_ALPHA:
- style = "lower-alpha";
- break;
- case NUMBERING_UPPER_ROMAN:
- style = "upper-roman";
- break;
- case NUMBERING_LOWER_ROMAN:
- style = "lower-roman";
- break;
- case NUMBERING_DECIMAL:
- default:
- style = "decimal";
- }
-
- MutableAttributeSet att = new SimpleAttributeSet();
- att.addAttribute( Attribute.STYLE, "list-style-type: " + style );
-
- writeStartTag( Tag.OL, att );
- }
-
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#OL
- */
- public void numberedList_()
- {
- writeEndTag( Tag.OL );
- }
-
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#LI
- */
- public void numberedListItem()
- {
- writeStartTag( Tag.LI );
- }
-
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#LI
- */
- public void numberedListItem_()
- {
- writeEndTag( Tag.LI );
- }
-
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#DL
- */
- public void definitionList()
- {
- writeStartTag( Tag.DL );
- }
-
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#DL
- */
- public void definitionList_()
- {
- writeEndTag( Tag.DL );
- }
-
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#DT
- */
- public void definedTerm()
- {
- writeStartTag( Tag.DT );
- }
-
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#DT
- */
- public void definedTerm_()
- {
- writeEndTag( Tag.DT );
- }
-
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#DD
- */
- public void definition()
- {
- writeStartTag( Tag.DD );
- }
-
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#DD
- */
- public void definition_()
- {
- writeEndTag( Tag.DD );
- }
-
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#IMG
- */
- public void figure()
- {
- write( String.valueOf( LESS_THAN ) + Tag.IMG );
- }
-
- /** {@inheritDoc} */
- public void figure_()
- {
- write( String.valueOf( SPACE ) + String.valueOf( SLASH ) + String.valueOf( GREATER_THAN ) );
- }
-
- /** {@inheritDoc} */
- public void figureGraphics( String name )
- {
- write( String.valueOf( SPACE ) + Attribute.SRC + String.valueOf( EQUAL ) + String.valueOf( QUOTE ) + name
- + String.valueOf( QUOTE ) );
- }
-
- /** {@inheritDoc} */
- public void figureCaption()
- {
- write( String.valueOf( SPACE ) + Attribute.ALT + String.valueOf( EQUAL ) + String.valueOf( QUOTE ) );
- }
-
- /** {@inheritDoc} */
- public void figureCaption_()
- {
- write( String.valueOf( QUOTE ) );
- }
-
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#P
- */
- public void paragraph()
- {
- writeStartTag( Tag.P );
- }
-
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#P
- */
- public void paragraph_()
- {
- writeEndTag( Tag.P );
- }
-
- /**
- * {@inheritDoc}
* @see XdocMarkup#SOURCE_TAG
* @see javax.swing.text.html.HTML.Tag#PRE
*/
public void verbatim( boolean boxed )
{
- verbatimFlag = true;
+ setVerbatimFlag( true );
boxedFlag = boxed;
@@ -691,41 +320,12 @@
writeEndTag( Tag.PRE );
}
- verbatimFlag = false;
+ setVerbatimFlag( false );
boxedFlag = false;
}
/**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#HR
- */
- public void horizontalRule()
- {
- writeSimpleTag( Tag.HR );
- }
-
- /**
- * The default align is <code>center</code>.
- *
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#TABLE
- */
- public void table()
- {
- // start table with tableRows
- }
-
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#TABLE
- */
- public void table_()
- {
- writeEndTag( Tag.TABLE );
- }
-
- /**
* The default align is <code>center</code>.
*
* {@inheritDoc}
@@ -733,7 +333,7 @@
*/
public void tableRows( int[] justification, boolean grid )
{
- this.cellJustif = justification;
+ setCellJustif( justification );
MutableAttributeSet att = new SimpleAttributeSet();
att.addAttribute( Attribute.ALIGN, "center" );
@@ -743,15 +343,6 @@
}
/**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#TABLE
- */
- public void tableRows_()
- {
- // nop
- }
-
- /**
* The default valign is <code>top</code>.
*
* {@inheritDoc}
@@ -763,194 +354,30 @@
att.addAttribute( Attribute.VALIGN, "top" );
writeStartTag( Tag.TR, att );
- cellCount = 0;
- }
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#TR
- */
- public void tableRow_()
- {
- writeEndTag( Tag.TR );
-
- cellCount = 0;
- }
-
- /** {@inheritDoc} */
- public void tableCell()
- {
- tableCell( false );
- }
-
- /** {@inheritDoc} */
- public void tableHeaderCell()
- {
- tableCell( true );
+ setCellCount( 0 );
}
/**
- * Starts a table cell.
+ * Adds a link with an optional target.
*
- * @param headerRow true if it is an header row
- * @see javax.swing.text.html.HTML.Tag#TH
- * @see javax.swing.text.html.HTML.Tag#TD
+ * @param name the link name.
+ * @param target the link target, may be null.
*/
- public void tableCell( boolean headerRow )
- {
- tableCell( headerRow, null );
- }
-
- /** {@inheritDoc} */
- public void tableCell( String width )
+ public void link( String name, String target )
{
- tableCell( false, width );
- }
-
- /** {@inheritDoc} */
- public void tableHeaderCell( String width )
- {
- tableCell( true, width );
- }
-
- /**
- * @param headerRow true if it is an header row
- * @param width the cell size
- * @see javax.swing.text.html.HTML.Tag#TH
- * @see javax.swing.text.html.HTML.Tag#TD
- */
- public void tableCell( boolean headerRow, String width )
- {
- String justif = null;
-
- if ( cellJustif != null )
- {
- switch ( cellJustif[cellCount] )
- {
- case Parser.JUSTIFY_LEFT:
- justif = "left";
- break;
- case Parser.JUSTIFY_RIGHT:
- justif = "right";
- break;
- case Parser.JUSTIFY_CENTER:
- default:
- justif = "center";
- break;
- }
- }
-
-
- Tag t = ( headerRow ? Tag.TH : Tag.TD );
-
- MutableAttributeSet att = new SimpleAttributeSet();
-
- if ( width != null )
- {
- att.addAttribute( Attribute.WIDTH, width );
- }
-
- if ( justif != null )
+ if ( isHeadFlag() )
{
- att.addAttribute( Attribute.ALIGN, justif );
- }
-
- writeStartTag( t, att );
- }
-
- /** {@inheritDoc} */
- public void tableCell_()
- {
- tableCell_( false );
- }
-
- /** {@inheritDoc} */
- public void tableHeaderCell_()
- {
- tableCell_( true );
- }
-
- /**
- * Ends a table cell.
- *
- * @param headerRow true if it is an header row
- * @see javax.swing.text.html.HTML.Tag#TH
- * @see javax.swing.text.html.HTML.Tag#TD
- */
- public void tableCell_( boolean headerRow )
- {
- Tag t = ( headerRow ? Tag.TH : Tag.TD );
-
- writeEndTag( t );
-
- ++cellCount;
- }
-
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#CAPTION
- */
- public void tableCaption()
- {
- // TODO: tableCaption should be written before tableRows
- writeStartTag( Tag.CAPTION );
- }
-
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#CAPTION
- */
- public void tableCaption_()
- {
- writeEndTag( Tag.CAPTION );
- }
-
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#A
- */
- public void anchor( String name )
- {
- if ( !headFlag )
- {
- String id = HtmlTools.encodeId( name );
-
- MutableAttributeSet att = new SimpleAttributeSet();
-
- if ( id != null )
- {
- att.addAttribute( Attribute.NAME, id );
- }
-
- writeStartTag( Tag.A, att );
+ return;
}
- }
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#A
- */
- public void anchor_()
- {
- if ( !headFlag )
- {
- writeEndTag( Tag.A );
- }
- }
+ MutableAttributeSet att = new SimpleAttributeSet();
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#A
- */
- public void link( String name )
- {
- if ( headFlag )
+ if ( target != null )
{
- return;
+ att.addAttribute( Attribute.TARGET, target );
}
- MutableAttributeSet att = new SimpleAttributeSet();
-
if ( StructureSink.isExternalLink( name ) || isExternalHtml( name ) )
{
att.addAttribute( Attribute.HREF, HtmlTools.escapeHTML( name ) );
@@ -976,174 +403,6 @@
|| !HtmlTools.isId( text ) );
}
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#A
- */
- public void link_()
- {
- if ( !headFlag )
- {
- writeEndTag( Tag.A );
- }
- }
-
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#I
- */
- public void italic()
- {
- if ( !headFlag )
- {
- writeStartTag( Tag.I );
- }
- }
-
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#I
- */
- public void italic_()
- {
- if ( !headFlag )
- {
- writeEndTag( Tag.I );
- }
- }
-
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#B
- */
- public void bold()
- {
- if ( !headFlag )
- {
- writeStartTag( Tag.B );
- }
- }
-
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#B
- */
- public void bold_()
- {
- if ( !headFlag )
- {
- writeEndTag( Tag.B );
- }
- }
-
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#TT
- */
- public void monospaced()
- {
- if ( !headFlag )
- {
- writeStartTag( Tag.TT );
- }
- }
-
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#TT
- */
- public void monospaced_()
- {
- if ( !headFlag )
- {
- writeEndTag( Tag.TT );
- }
- }
-
- /**
- * {@inheritDoc}
- * @see javax.swing.text.html.HTML.Tag#BR
- */
- public void lineBreak()
- {
- if ( headFlag )
- {
- buffer.append( EOL );
- }
- else
- {
- writeSimpleTag( Tag.BR );
- }
- }
-
- /** {@inheritDoc} */
- public void pageBreak()
- {
- comment( "PB" );
- }
-
- /** {@inheritDoc} */
- public void nonBreakingSpace()
- {
- if ( headFlag )
- {
- buffer.append( ' ' );
- }
- else
- {
- write( " " );
- }
- }
-
- /** {@inheritDoc} */
- public void text( String text )
- {
- if ( headFlag )
- {
- buffer.append( text );
- }
- else if ( verbatimFlag )
- {
- verbatimContent( text );
- }
- else
- {
- content( text );
- }
- }
-
- /** {@inheritDoc} */
- public void rawText( String text )
- {
- write( text );
- }
-
- /** {@inheritDoc} */
- public void comment( String comment )
- {
- StringBuffer buffer = new StringBuffer( comment.length() + 9 );
-
- buffer.append( LESS_THAN ).append( BANG ).append( MINUS ).append( MINUS ).append( SPACE );
-
- buffer.append( comment );
-
- buffer.append( SPACE ).append( MINUS ).append( MINUS ).append( GREATER_THAN );
-
- rawText( buffer.toString() );
- }
-
- /** {@inheritDoc} */
- public void flush()
- {
- writer.flush();
- }
-
- /** {@inheritDoc} */
- public void close()
- {
- writer.close();
- }
-
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
@@ -1157,55 +416,5 @@
protected void markup( String text )
{
write( text );
- }
-
- /**
- * Write HTML escaped text to output.
- *
- * @param text The text to write.
- */
- protected void content( String text )
- {
- write( escapeHTML( text ) );
- }
-
- /**
- * Write HTML escaped text to output.
- *
- * @param text The text to write.
- */
- protected void verbatimContent( String text )
- {
- write( escapeHTML( text ) );
- }
-
- /**
- * Forward to HtmlTools.escapeHTML( text ).
- *
- * @param text the String to escape, may be null
- * @return the text escaped, "" if null String input
- * @see org.apache.maven.doxia.util.HtmlTools#escapeHTML(String)
- */
- public static String escapeHTML( String text )
- {
- return HtmlTools.escapeHTML( text );
- }
-
- /**
- * Forward to HtmlTools.encodeURL( text ).
- *
- * @param text the String to encode, may be null.
- * @return the text encoded, null if null String input.
- * @see org.apache.maven.doxia.util.HtmlTools#encodeURL(String)
- */
- public static String encodeURL( String text )
- {
- return HtmlTools.encodeURL( text );
- }
-
- /** {@inheritDoc} */
- protected void write( String text )
- {
- writer.write( text );
}
}
Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParser.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParser.java?rev=591687&r1=591686&r2=591687&view=diff
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParser.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParser.java Sat Nov 3 13:59:15 2007
@@ -23,14 +23,14 @@
import javax.swing.text.html.HTML.Tag;
import org.apache.maven.doxia.macro.MacroExecutionException;
-import org.apache.maven.doxia.parser.AbstractXmlParser;
+import org.apache.maven.doxia.parser.XhtmlBaseParser;
import org.apache.maven.doxia.sink.Sink;
-import org.codehaus.plexus.util.StringUtils;
+
import org.codehaus.plexus.util.xml.pull.XmlPullParser;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
/**
- * Parse an xhtml model and emit events into the specified doxia Sink.
+ * Parse an xhtml model and emit events into a Doxia Sink.
*
* @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
* @version $Id$
@@ -38,24 +38,9 @@
* @plexus.component role="org.apache.maven.doxia.parser.Parser" role-hint="xhtml"
*/
public class XhtmlParser
- extends AbstractXmlParser
+ extends XhtmlBaseParser
implements XhtmlMarkup
{
- /** Used to distinguish <a href=""> from <a name="">. */
- private boolean isLink;
-
- /** Used to distinguish <a href=""> from <a name="">. */
- private boolean isAnchor;
-
- /** Used for nested lists. */
- private int orderedListDepth = 0;
-
- /** For tables. */
- private boolean hasCaption;
-
- /** Counts section level. */
- private int sectionLevel;
-
/** For boxed verbatim. */
private boolean boxed;
@@ -68,6 +53,10 @@
//Do nothing
return;
}
+ else if ( parser.getName().equals( Tag.HEAD.toString() ) )
+ {
+ sink.head();
+ }
else if ( parser.getName().equals( Tag.TITLE.toString() ) )
{
sink.title();
@@ -108,50 +97,6 @@
{
sink.body();
}
- else if ( parser.getName().equals( Tag.H2.toString() ) )
- {
- closeOpenSections( Sink.SECTION_LEVEL_1, sink );
-
- sink.section1();
-
- sink.sectionTitle1();
- }
- else if ( parser.getName().equals( Tag.H3.toString() ) )
- {
- closeOpenSections( Sink.SECTION_LEVEL_2, sink );
-
- sink.section2();
-
- sink.sectionTitle2();
- }
- else if ( parser.getName().equals( Tag.H4.toString() ) )
- {
- closeOpenSections( Sink.SECTION_LEVEL_3, sink );
-
- sink.section3();
-
- sink.sectionTitle3();
- }
- else if ( parser.getName().equals( Tag.H5.toString() ) )
- {
- closeOpenSections( Sink.SECTION_LEVEL_4, sink );
-
- sink.section4();
-
- sink.sectionTitle4();
- }
- else if ( parser.getName().equals( Tag.H6.toString() ) )
- {
- closeOpenSections( Sink.SECTION_LEVEL_5, sink );
-
- sink.section5();
-
- sink.sectionTitle5();
- }
- else if ( parser.getName().equals( Tag.P.toString() ) )
- {
- sink.paragraph();
- }
else if ( parser.getName().equals( Tag.DIV.toString() ) )
{
String divclass = parser.getAttributeValue( null, Attribute.CLASS.toString() );
@@ -182,234 +127,9 @@
sink.verbatim( false );
}
}
- else if ( parser.getName().equals( Tag.UL.toString() ) )
+ else if ( !baseStartTag( parser, sink ) )
{
- sink.list();
- }
- else if ( parser.getName().equals( Tag.OL.toString() ) )
- {
- int numbering = Sink.NUMBERING_DECIMAL;
-
- // this will have to be generalized if we handle styles
- String style = parser.getAttributeValue( null, Attribute.STYLE.toString() );
-
- if ( style != null )
- {
- if ( "list-style-type: upper-alpha".equals( style ) )
- {
- numbering = Sink.NUMBERING_UPPER_ALPHA;
- }
- else if ( "list-style-type: lower-alpha".equals( style ) )
- {
- numbering = Sink.NUMBERING_LOWER_ALPHA;
- }
- else if ( "list-style-type: upper-roman".equals( style ) )
- {
- numbering = Sink.NUMBERING_UPPER_ROMAN;
- }
- else if ( "list-style-type: lower-roman".equals( style ) )
- {
- numbering = Sink.NUMBERING_LOWER_ROMAN;
- }
- else if ( "list-style-type: decimal".equals( style ) )
- {
- numbering = Sink.NUMBERING_DECIMAL;
- }
- }
-
- sink.numberedList( numbering );
- orderedListDepth++;
- }
- else if ( parser.getName().equals( Tag.LI.toString() ) )
- {
- if ( orderedListDepth == 0 )
- {
- sink.listItem();
- }
- else
- {
- sink.numberedListItem();
- }
- }
- else if ( parser.getName().equals( Tag.DL.toString() ) )
- {
- sink.definitionList();
- }
- else if ( parser.getName().equals( Tag.DT.toString() ) )
- {
- sink.definitionListItem();
- sink.definedTerm();
- }
- else if ( parser.getName().equals( Tag.DD.toString() ) )
- {
- sink.definition();
- }
- else if ( parser.getName().equals( Tag.HEAD.toString() ) )
- {
- sink.head();
- }
- else if ( ( parser.getName().equals( Tag.B.toString() ) ) || ( parser.getName().equals( Tag.STRONG.toString() ) ) )
- {
- sink.bold();
- }
- else if ( ( parser.getName().equals( Tag.I.toString() ) ) || ( parser.getName().equals( Tag.EM.toString() ) ) )
- {
- sink.italic();
- }
- else if ( ( parser.getName().equals( Tag.CODE.toString() ) ) || ( parser.getName().equals( Tag.SAMP.toString() ) ) ||
- ( parser.getName().equals( Tag.TT.toString() ) ) )
- {
- sink.monospaced();
- }
- else if ( parser.getName().equals( Tag.A.toString() ) )
- {
- String href = parser.getAttributeValue( null, Attribute.HREF.toString() );
-
- if ( href != null )
- {
- String link = href;
-
- if ( link.startsWith( "#" ) )
- {
- link = link.substring( 1 );
- }
-
- sink.link( link );
-
- isLink = true;
- }
- else
- {
- String name = parser.getAttributeValue( null, Attribute.NAME.toString() );
-
- if ( name != null )
- {
- sink.anchor( name );
-
- isAnchor = true;
- }
- else
- {
- String id = parser.getAttributeValue( null, Attribute.ID.toString() );
-
- if ( id != null )
- {
- sink.anchor( id );
-
- isAnchor = true;
- }
- }
- }
- }
-
- // ----------------------------------------------------------------------
- // Tables
- // ----------------------------------------------------------------------
-
- else if ( parser.getName().equals( Tag.TABLE.toString() ) )
- {
- sink.table();
-
- String border = parser.getAttributeValue( null, Attribute.BORDER.toString() );
-
- boolean grid = true;
-
- if ( "0".equals( border ) )
- {
- grid = false;
- }
-
- String align = parser.getAttributeValue( null, Attribute.ALIGN.toString() );
-
- int[] justif = { JUSTIFY_CENTER };
-
- if ( "left".equals( align ) )
- {
- justif[0] = JUSTIFY_LEFT;
- }
- else if ( "right".equals( align ) )
- {
- justif[0] = JUSTIFY_RIGHT;
- }
-
- sink.tableRows( justif, grid );
- }
- else if ( parser.getName().equals( Tag.TR.toString() ) )
- {
- sink.tableRow();
- }
- else if ( parser.getName().equals( Tag.TH.toString() ) )
- {
- String width = parser.getAttributeValue( null, Attribute.WIDTH.toString() );
-
- if ( width == null )
- {
- sink.tableHeaderCell();
- }
- else
- {
- sink.tableHeaderCell( width );
- }
- }
- else if ( parser.getName().equals( Tag.TD.toString() ) )
- {
- String width = parser.getAttributeValue( null, Attribute.WIDTH.toString() );
-
- if ( width == null )
- {
- sink.tableCell();
- }
- else
- {
- sink.tableCell( width );
- }
- }
- else if ( parser.getName().equals( Tag.CAPTION.toString() ) )
- {
- sink.tableRows_();
- this.hasCaption = true;
- sink.tableCaption();
- }
-
- // ----------------------------------------------------------------------
- // Empty elements: <br/>, <hr/> and <img />
- // ----------------------------------------------------------------------
-
- else if ( parser.getName().equals( Tag.BR.toString() ) )
- {
- sink.lineBreak();
- }
- else if ( parser.getName().equals( Tag.HR.toString() ) )
- {
- sink.horizontalRule();
- }
- else if ( parser.getName().equals( Tag.IMG.toString() ) )
- {
- String src = parser.getAttributeValue( null, Attribute.SRC.toString() );
- String title = parser.getAttributeValue( null, Attribute.TITLE.toString() );
- String alt = parser.getAttributeValue( null, Attribute.ALT.toString() );
-
- sink.figure();
-
- if ( src != null )
- {
- sink.figureGraphics( src );
- }
-
- if ( title != null )
- {
- sink.figureCaption();
- sink.text( title );
- sink.figureCaption_();
- }
- else if ( alt != null )
- {
- sink.figureCaption();
- sink.text( alt );
- sink.figureCaption_();
- }
-
- sink.figure_();
+ // TODO: log( "Unrecognized start tag!" );
}
}
@@ -422,13 +142,13 @@
//Do nothing
return;
}
- else if ( parser.getName().equals( Tag.TITLE.toString() ) )
+ else if ( parser.getName().equals( Tag.HEAD.toString() ) )
{
- sink.title_();
+ sink.head_();
}
- else if ( parser.getName().equals( Tag.ADDRESS.toString() ) )
+ else if ( parser.getName().equals( Tag.TITLE.toString() ) )
{
- sink.author_();
+ sink.title_();
}
else if ( parser.getName().equals( Tag.BODY.toString() ) )
{
@@ -436,238 +156,19 @@
sink.body_();
}
- else if ( parser.getName().equals( Tag.P.toString() ) )
+ else if ( parser.getName().equals( Tag.ADDRESS.toString() ) )
{
- sink.paragraph_();
+ sink.author_();
}
else if ( parser.getName().equals( Tag.DIV.toString() ) )
{
this.boxed = false;
}
- else if ( parser.getName().equals( Tag.PRE.toString() ) )
- {
- sink.verbatim_();
- }
- else if ( parser.getName().equals( Tag.UL.toString() ) )
- {
- sink.list_();
- }
- else if ( parser.getName().equals( Tag.OL.toString() ) )
- {
- sink.numberedList_();
- orderedListDepth--;
- }
- else if ( parser.getName().equals( Tag.LI.toString() ) )
- {
- if ( orderedListDepth == 0 )
- {
- sink.listItem_();
- }
- else
- {
- sink.numberedListItem_();
- }
- }
- else if ( parser.getName().equals( Tag.DL.toString() ) )
- {
- sink.definitionList_();
- }
- else if ( parser.getName().equals( Tag.DT.toString() ) )
- {
- sink.definedTerm_();
- }
- else if ( parser.getName().equals( Tag.DD.toString() ) )
- {
- sink.definition_();
- sink.definitionListItem_();
- }
- else if ( parser.getName().equals( Tag.HEAD.toString() ) )
- {
- sink.head_();
- }
- else if ( ( parser.getName().equals( Tag.B.toString() ) ) || ( parser.getName().equals( Tag.STRONG.toString() ) ) )
- {
- sink.bold_();
- }
- else if ( ( parser.getName().equals( Tag.I.toString() ) ) || ( parser.getName().equals( Tag.EM.toString() ) ) )
- {
- sink.italic_();
- }
- else if ( ( parser.getName().equals( Tag.CODE.toString() ) ) || ( parser.getName().equals( Tag.SAMP.toString() ) ) ||
- ( parser.getName().equals( Tag.TT.toString() ) ) )
- {
- sink.monospaced_();
- }
- else if ( parser.getName().equals( Tag.A.toString() ) )
- {
- if ( isLink )
- {
- sink.link_();
-
- isLink = false;
- }
- else if ( isAnchor )
- {
- sink.anchor_();
-
- isAnchor = false;
- }
- }
- // ----------------------------------------------------------------------
- // Tables
- // ----------------------------------------------------------------------
-
- else if ( parser.getName().equals( Tag.TABLE.toString() ) )
- {
- if ( !hasCaption )
- {
- sink.tableRows_();
- }
-
- this.hasCaption = false;
-
- sink.table_();
- }
- else if ( parser.getName().equals( Tag.TR.toString() ) )
- {
- sink.tableRow_();
- }
- else if ( parser.getName().equals( Tag.TH.toString() ) )
- {
- sink.tableHeaderCell_();
- }
- else if ( parser.getName().equals( Tag.TD.toString() ) )
+ else if ( !baseEndTag( parser, sink ) )
{
- sink.tableCell_();
- }
- else if ( parser.getName().equals( Tag.CAPTION.toString() ) )
- {
- sink.tableCaption_();
- }
- else if ( parser.getName().equals( Tag.H2.toString() ) )
- {
- sink.sectionTitle1_();
- }
- else if ( parser.getName().equals( Tag.H3.toString() ) )
- {
- sink.sectionTitle2_();
- }
- else if ( parser.getName().equals( Tag.H4.toString() ) )
- {
- sink.sectionTitle3_();
- }
- else if ( parser.getName().equals( Tag.H5.toString() ) )
- {
- sink.sectionTitle4_();
- }
- else if ( parser.getName().equals( Tag.H6.toString() ) )
- {
- sink.sectionTitle5_();
- }
- }
-
- /** {@inheritDoc} */
- protected void handleText( XmlPullParser parser, Sink sink )
- throws XmlPullParserException
- {
- String text = parser.getText();
-
- if ( StringUtils.isNotEmpty( text.trim() ) )
- {
- // emit separate text events for different lines
- String[] lines = StringUtils.split( text, EOL );
-
- for ( int i = 0; i < lines.length; i++ )
- {
- sink.text( lines[i] );
- }
- }
- }
-
- /** {@inheritDoc} */
- protected void handleCdsect( XmlPullParser parser, Sink sink )
- throws XmlPullParserException
- {
- String text = parser.getText();
-
- sink.rawText( text );
- }
-
- /** {@inheritDoc} */
- protected void handleComment( XmlPullParser parser, Sink sink )
- throws XmlPullParserException
- {
- String text = parser.getText();
-
- if ( "PB".equals( text.trim() ) )
- {
- sink.pageBreak();
- }
- else
- {
- sink.comment( text.trim() );
- }
- }
-
- /** {@inheritDoc} */
- protected void handleEntity( XmlPullParser parser, Sink sink )
- throws XmlPullParserException
- {
- String text = parser.getText();
-
- int[] holder = new int[] {0, 0};
- char[] chars = parser.getTextCharacters( holder );
- String textChars = String.valueOf( chars, holder[0], holder[1] );
-
- if ( "#160".equals( textChars ) )
- {
- sink.nonBreakingSpace();
- }
- else
- {
- sink.text( text );
+ // TODO: log( "Unrecognized end tag!" );
}
}
- // ----------------------------------------------------------------------
- // Private methods
- // ----------------------------------------------------------------------
-
- /**
- * Close open sections. The current level is set to newLevel afterwards.
- *
- * @param newLevel the new section level, all upper levels have to be closed.
- * @param sink the sink to receive the events.
- */
- private void closeOpenSections( int newLevel, Sink sink )
- {
- while ( this.sectionLevel >= newLevel )
- {
- if ( sectionLevel == Sink.SECTION_LEVEL_5)
- {
- sink.section5_();
- }
- else if ( sectionLevel == Sink.SECTION_LEVEL_4)
- {
- sink.section4_();
- }
- else if ( sectionLevel == Sink.SECTION_LEVEL_3)
- {
- sink.section3_();
- }
- else if ( sectionLevel == Sink.SECTION_LEVEL_2)
- {
- sink.section2_();
- }
- else if ( sectionLevel == Sink.SECTION_LEVEL_1)
- {
- sink.section1_();
- }
-
- this.sectionLevel--;
- }
-
- this.sectionLevel = newLevel;
- }
}