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 2009/06/12 05:42:35 UTC
svn commit: r783974 - in
/maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src:
main/java/org/apache/maven/doxia/module/docbook/DocBookParser.java
test/java/org/apache/maven/doxia/module/docbook/DocBookParserTest.java
Author: ltheussl
Date: Fri Jun 12 03:42:35 2009
New Revision: 783974
URL: http://svn.apache.org/viewvc?rev=783974&view=rev
Log:
[DOXIA-184] make parser emit tableRows() correctly. Refactor some private methods for code readability.
Modified:
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookParser.java
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookParserTest.java
Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookParser.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookParser.java?rev=783974&r1=783973&r2=783974&view=diff
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookParser.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookParser.java Fri Jun 12 03:42:35 2009
@@ -155,104 +155,25 @@
{
handleSectionElements( sink, parser.getName(), attribs );
}
- else if ( parser.getName().equals( SimplifiedDocbookMarkup.ITEMIZEDLIST_TAG.toString() ) )
- {
- handleItemizedListStart( sink, attribs );
- }
- else if ( parser.getName().equals( SimplifiedDocbookMarkup.ORDEREDLIST_TAG.toString() ) )
- {
- handleOrderedListStart( sink, attribs );
- }
- else if ( parser.getName().equals( SimplifiedDocbookMarkup.LISTITEM_TAG.toString() ) )
- {
- handleListItemStart( sink, attribs );
- }
- else if ( parser.getName().equals( SimplifiedDocbookMarkup.VARIABLELIST_TAG.toString() ) )
- {
- handleVariableListStart( sink, attribs );
- }
- else if ( parser.getName().equals( SimplifiedDocbookMarkup.VARLISTENTRY_TAG.toString() ) )
- {
- sink.definitionListItem( attribs );
- }
- else if ( parser.getName().equals( SimplifiedDocbookMarkup.TERM_TAG.toString() ) )
- {
- sink.definedTerm( attribs );
- }
- else if ( parser.getName().equals( SimplifiedDocbookMarkup.MEDIAOBJECT_TAG.toString() ) )
- {
- handleFigureStart( sink, attribs );
- }
- else if ( parser.getName().equals( SimplifiedDocbookMarkup.IMAGEOBJECT_TAG.toString() )
- || parser.getName().equals( SimplifiedDocbookMarkup.FIGURE_TAG.toString() )
- || parser.getName().equals( SimplifiedDocbookMarkup.THEAD_TAG.toString() )
- || parser.getName().equals( SimplifiedDocbookMarkup.ARTICLEINFO_TAG.toString() ) )
+ else if ( listStartTags ( parser.getName(), sink, attribs ) )
{
- parent.push( parser.getName() );
+ return;
}
- else if ( parser.getName().equals( SimplifiedDocbookMarkup.IMAGEDATA_TAG.toString() ) )
+ else if ( mediaStartTag( parser.getName(), sink, attribs ) )
{
- handleImageDataStart( sink, attribs );
+ return;
}
- else if ( parser.getName().equals( SimplifiedDocbookMarkup.CAPTION_TAG.toString() ) )
+ else if ( tableStartTags( parser.getName(), sink, attribs ) )
{
- handleCaptionStart( sink, attribs );
- }
- else if ( parser.getName().equals( SimplifiedDocbookMarkup.TABLE_TAG.toString() )
- || parser.getName().equals( SimplifiedDocbookMarkup.INFORMALTABLE_TAG.toString() ) )
- {
- handleTableStart( sink, attribs );
- }
- else if ( parser.getName().equals( SimplifiedDocbookMarkup.TR_TAG.toString() )
- || parser.getName().equals( SimplifiedDocbookMarkup.ROW_TAG.toString() ) )
- {
- sink.tableRow( attribs );
- }
- else if ( parser.getName().equals( SimplifiedDocbookMarkup.ENTRY_TAG.toString() )
- && isParent( SimplifiedDocbookMarkup.THEAD_TAG.toString() )
- || parser.getName().equals( SimplifiedDocbookMarkup.TH_TAG.toString() ) )
- {
- sink.tableHeaderCell( attribs );
- }
- else if ( parser.getName().equals( SimplifiedDocbookMarkup.ENTRY_TAG.toString() ) )
- {
- sink.tableCell( attribs );
+ return;
}
else if ( parser.getName().equals( SimplifiedDocbookMarkup.PARA_TAG.toString() ) )
{
handleParaStart( sink, attribs );
}
- else if ( VERBATIM_ELEMENTS.contains( parser.getName() ) )
+ else if ( styleStartTags( parser.getName(), sink, attribs ) )
{
- sink.verbatim( SinkEventAttributeSet.BOXED );
- }
- else if ( BOLD_ELEMENTS.contains( parser.getName() ) && MONOSPACE_ELEMENTS.contains( parser.getName() ) )
- {
- sink.bold();
- sink.monospaced();
- }
- else if ( ITALIC_ELEMENTS.contains( parser.getName() ) && MONOSPACE_ELEMENTS.contains( parser.getName() ) )
- {
- sink.italic();
- sink.monospaced();
- }
- else if ( BOLD_ELEMENTS.contains( parser.getName() ) )
- {
- sink.bold();
- }
- else if ( ITALIC_ELEMENTS.contains( parser.getName() )
- && "bold".equals( parser.getAttributeValue( null, "role" ) ) )
- {
- sink.bold();
- isBold = true;
- }
- else if ( ITALIC_ELEMENTS.contains( parser.getName() ) )
- {
- sink.italic();
- }
- else if ( MONOSPACE_ELEMENTS.contains( parser.getName() ) )
- {
- sink.monospaced();
+ return;
}
else if ( parser.getName().equals( SimplifiedDocbookMarkup.TITLE_TAG.toString() ) )
{
@@ -266,25 +187,13 @@
{
sink.date( attribs );
}
- else if ( parser.getName().equals( SimplifiedDocbookMarkup.ULINK_TAG.toString() ) )
- {
- handleUlinkStart( sink, attribs );
- }
else if ( parser.getName().equals( SimplifiedDocbookMarkup.EMAIL_TAG.toString() ) )
{
handleEmailStart( parser, sink, attribs );
}
- else if ( parser.getName().equals( SimplifiedDocbookMarkup.LINK_TAG.toString() ) )
+ else if ( linkStartTag( parser.getName(), sink, attribs ) )
{
- handleLinkStart( sink, attribs );
- }
- else if ( parser.getName().equals( SimplifiedDocbookMarkup.XREF_TAG.toString() ) )
- {
- handleXrefStart( sink, attribs );
- }
- else if ( parser.getName().equals( SimplifiedDocbookMarkup.ANCHOR_TAG.toString() ) )
- {
- handleAnchorStart( sink, attribs );
+ return;
}
else
{
@@ -356,6 +265,7 @@
else if ( parser.getName().equals( SimplifiedDocbookMarkup.IMAGEOBJECT_TAG.toString() )
|| parser.getName().equals( SimplifiedDocbookMarkup.FIGURE_TAG.toString() )
|| parser.getName().equals( SimplifiedDocbookMarkup.THEAD_TAG.toString() )
+ || parser.getName().equals( SimplifiedDocbookMarkup.TBODY_TAG.toString() )
|| parser.getName().equals( SimplifiedDocbookMarkup.ARTICLEINFO_TAG.toString() ) )
{
parent.pop();
@@ -376,6 +286,10 @@
{
sink.tableRow_();
}
+ else if ( parser.getName().equals( SimplifiedDocbookMarkup.TGROUP_TAG.toString() ) )
+ {
+ sink.tableRows_();
+ }
else if ( parser.getName().equals( SimplifiedDocbookMarkup.ENTRY_TAG.toString() )
&& isParent( SimplifiedDocbookMarkup.THEAD_TAG.toString() )
|| parser.getName().equals( TH_TAG.toString() ) )
@@ -759,6 +673,7 @@
{
return name.equals( SimplifiedDocbookMarkup.IMAGEOBJECT_TAG.toString() )
|| name.equals( SimplifiedDocbookMarkup.PHRASE_TAG.toString() )
+ || name.equals( SimplifiedDocbookMarkup.COLSPEC_TAG.toString() )
|| name.equals( SimplifiedDocbookMarkup.TEXTOBJECT_TAG.toString() );
}
@@ -777,4 +692,221 @@
return false;
}
+
+ private boolean linkStartTag( String name, Sink sink, SinkEventAttributeSet attribs )
+ throws XmlPullParserException
+ {
+ if ( name.equals( SimplifiedDocbookMarkup.ULINK_TAG.toString() ) )
+ {
+ handleUlinkStart( sink, attribs );
+ }
+ else if ( name.equals( SimplifiedDocbookMarkup.LINK_TAG.toString() ) )
+ {
+ handleLinkStart( sink, attribs );
+ }
+ else if ( name.equals( SimplifiedDocbookMarkup.XREF_TAG.toString() ) )
+ {
+ handleXrefStart( sink, attribs );
+ }
+ else if ( name.equals( SimplifiedDocbookMarkup.ANCHOR_TAG.toString() ) )
+ {
+ handleAnchorStart( sink, attribs );
+ }
+ else
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ private boolean listStartTags( String name, Sink sink, SinkEventAttributeSet attribs )
+ {
+ if ( name.equals( SimplifiedDocbookMarkup.ITEMIZEDLIST_TAG.toString() ) )
+ {
+ handleItemizedListStart( sink, attribs );
+ }
+ else if ( name.equals( SimplifiedDocbookMarkup.ORDEREDLIST_TAG.toString() ) )
+ {
+ handleOrderedListStart( sink, attribs );
+ }
+ else if ( name.equals( SimplifiedDocbookMarkup.LISTITEM_TAG.toString() ) )
+ {
+ handleListItemStart( sink, attribs );
+ }
+ else if ( name.equals( SimplifiedDocbookMarkup.VARIABLELIST_TAG.toString() ) )
+ {
+ handleVariableListStart( sink, attribs );
+ }
+ else if ( name.equals( SimplifiedDocbookMarkup.VARLISTENTRY_TAG.toString() ) )
+ {
+ sink.definitionListItem( attribs );
+ }
+ else if ( name.equals( SimplifiedDocbookMarkup.TERM_TAG.toString() ) )
+ {
+ sink.definedTerm( attribs );
+ }
+ else
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ private boolean mediaStartTag( String name, Sink sink, SinkEventAttributeSet attribs )
+ throws XmlPullParserException
+ {
+ if ( name.equals( SimplifiedDocbookMarkup.MEDIAOBJECT_TAG.toString() ) )
+ {
+ handleFigureStart( sink, attribs );
+ }
+ else if ( name.equals( SimplifiedDocbookMarkup.IMAGEOBJECT_TAG.toString() )
+ || name.equals( SimplifiedDocbookMarkup.FIGURE_TAG.toString() )
+ || name.equals( SimplifiedDocbookMarkup.ARTICLEINFO_TAG.toString() ) )
+ {
+ parent.push( name );
+ }
+ else if ( name.equals( SimplifiedDocbookMarkup.IMAGEDATA_TAG.toString() ) )
+ {
+ handleImageDataStart( sink, attribs );
+ }
+ else if ( name.equals( SimplifiedDocbookMarkup.CAPTION_TAG.toString() ) )
+ {
+ handleCaptionStart( sink, attribs );
+ }
+ else
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ private boolean styleStartTags( String name, Sink sink, SinkEventAttributeSet attribs )
+ {
+ if ( VERBATIM_ELEMENTS.contains( name ) )
+ {
+ sink.verbatim( SinkEventAttributeSet.BOXED );
+ }
+ else if ( BOLD_ELEMENTS.contains( name ) && MONOSPACE_ELEMENTS.contains( name ) )
+ {
+ sink.bold();
+ sink.monospaced();
+ }
+ else if ( ITALIC_ELEMENTS.contains( name ) && MONOSPACE_ELEMENTS.contains( name ) )
+ {
+ sink.italic();
+ sink.monospaced();
+ }
+ else if ( BOLD_ELEMENTS.contains( name ) )
+ {
+ sink.bold();
+ }
+ else if ( ITALIC_ELEMENTS.contains( name ) && "bold".equals( attribs.getAttribute( "role" ) ) )
+ {
+ sink.bold();
+ isBold = true;
+ }
+ else if ( ITALIC_ELEMENTS.contains( name ) )
+ {
+ sink.italic();
+ }
+ else if ( MONOSPACE_ELEMENTS.contains( name ) )
+ {
+ sink.monospaced();
+ }
+ else
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ private boolean tableStartTags( String name, Sink sink, SinkEventAttributeSet attribs )
+ {
+ if ( name.equals( SimplifiedDocbookMarkup.TABLE_TAG.toString() )
+ || name.equals( SimplifiedDocbookMarkup.INFORMALTABLE_TAG.toString() ) )
+ {
+ handleTableStart( sink, attribs );
+ }
+ else if ( name.equals( SimplifiedDocbookMarkup.THEAD_TAG.toString() )
+ || name.equals( SimplifiedDocbookMarkup.TBODY_TAG.toString() ) )
+ {
+ parent.push( name );
+ }
+ else if ( name.equals( SimplifiedDocbookMarkup.TGROUP_TAG.toString() ) )
+ {
+ // this is required by the DTD
+ int cols = Integer.parseInt( (String) attribs.getAttribute( "cols" ) );
+ int[] justification = new int[cols];
+ int justif = Sink.JUSTIFY_LEFT;
+
+ Object align = attribs.getAttribute( SinkEventAttributeSet.ALIGN );
+
+ if ( align != null )
+ {
+ String al = align.toString();
+
+ if ( al.equals( "right" ) )
+ {
+ justif = Sink.JUSTIFY_RIGHT;
+ }
+ else if ( al.equals( "center" ) )
+ {
+ justif = Sink.JUSTIFY_CENTER;
+ }
+ }
+
+ for ( int i = 0; i < justification.length; i++ )
+ {
+ justification[i] = justif;
+ }
+
+ boolean grid = false;
+ Object rowsep = attribs.getAttribute( "rowsep" );
+
+ if ( rowsep != null )
+ {
+ if ( Integer.parseInt( (String) rowsep ) == 1 )
+ {
+ grid = true;
+ }
+ }
+
+ Object colsep = attribs.getAttribute( "colsep" );
+
+ if ( colsep != null )
+ {
+ if ( Integer.parseInt( (String) colsep ) == 1 )
+ {
+ grid = true;
+ }
+ }
+
+ sink.tableRows( justification, grid );
+ }
+ else if ( name.equals( SimplifiedDocbookMarkup.TR_TAG.toString() )
+ || name.equals( SimplifiedDocbookMarkup.ROW_TAG.toString() ) )
+ {
+ sink.tableRow( attribs );
+ }
+ else if ( name.equals( SimplifiedDocbookMarkup.ENTRY_TAG.toString() )
+ && isParent( SimplifiedDocbookMarkup.THEAD_TAG.toString() )
+ || name.equals( SimplifiedDocbookMarkup.TH_TAG.toString() ) )
+ {
+ sink.tableHeaderCell( attribs );
+ }
+ else if ( name.equals( SimplifiedDocbookMarkup.ENTRY_TAG.toString() ) )
+ {
+ sink.tableCell( attribs );
+ }
+ else
+ {
+ return false;
+ }
+
+ return true;
+ }
}
Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookParserTest.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookParserTest.java?rev=783974&r1=783973&r2=783974&view=diff
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookParserTest.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookParserTest.java Fri Jun 12 03:42:35 2009
@@ -349,11 +349,7 @@
Iterator it = sink.getEventList().iterator();
assertEquals( "table", ( (SinkEventElement) it.next() ).getName() );
- // FIXME: handle tgroup, colspec, tbody
- assertEquals( "unknown", ( (SinkEventElement) it.next() ).getName() );
- assertEquals( "unknown", ( (SinkEventElement) it.next() ).getName() );
- assertEquals( "unknown", ( (SinkEventElement) it.next() ).getName() );
- assertEquals( "unknown", ( (SinkEventElement) it.next() ).getName() );
+ assertEquals( "tableRows", ( (SinkEventElement) it.next() ).getName() );
assertEquals( "tableRow", ( (SinkEventElement) it.next() ).getName() );
assertEquals( "tableCell", ( (SinkEventElement) it.next() ).getName() );
assertEquals( "text", ( (SinkEventElement) it.next() ).getName() );
@@ -362,6 +358,7 @@
assertEquals( "text", ( (SinkEventElement) it.next() ).getName() );
assertEquals( "tableCell_", ( (SinkEventElement) it.next() ).getName() );
assertEquals( "tableRow_", ( (SinkEventElement) it.next() ).getName() );
+ assertEquals( "tableRows_", ( (SinkEventElement) it.next() ).getName() );
assertEquals( "table_", ( (SinkEventElement) it.next() ).getName() );
assertFalse( it.hasNext() );
}