Author: ltheussl
Date: Sat Nov 17 14:08:57 2007
New Revision: 596011
URL: http://svn.apache.org/viewvc?rev=596011&view=rev
Log:
AptParser should not emit paragraphs around list items. Fix definition list
handling in the sink. Add comment parsing.
Modified:
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptSinkTest.java
Modified:
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
URL:
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java?rev=596011&r1=596010&r2=596011&view=diff
==============================================================================
---
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
(original)
+++
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
Sat Nov 17 14:08:57 2007
@@ -100,10 +100,13 @@
/** Macro event id */
private static final int MACRO = 16;
+ /** Comment event id. */
+ private static final int COMMENT_BLOCK = 17;
+
/** String representations of event ids */
private static final String TYPE_NAMES[] = {"TITLE", "SECTION1",
"SECTION2", "SECTION3", "SECTION4", "SECTION5",
"PARAGRAPH", "VERBATIM", "FIGURE", "TABLE", "LIST_ITEM",
"NUMBERED_LIST_ITEM", "DEFINITION_LIST_ITEM",
- "HORIZONTAL_RULE", "PAGE_BREAK", "LIST_BREAK", "MACRO"};
+ "HORIZONTAL_RULE", "PAGE_BREAK", "LIST_BREAK", "MACRO",
"COMMENT_BLOCK"};
/** An array of spaces. */
private static final char SPACES[] = {' ', ' ', ' ', ' ', ' ', ' ', ' ', '
', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
@@ -355,6 +358,7 @@
case HORIZONTAL_RULE:
case PAGE_BREAK:
case MACRO:
+ case COMMENT_BLOCK:
block.traverse();
nextBlock();
break;
@@ -732,17 +736,6 @@
case TAB:
indent += 8;
break;
- case COMMENT:
- if ( charAt( line, length, i + 1 ) == COMMENT )
- {
- // Comment.
- i = length;
- break lineLoop;
- }
- else
- {
- break skipLoop;
- }
default:
break skipLoop;
}
@@ -869,7 +862,9 @@
block = new HorizontalRule( indent, line );
}
break;
+ // TODO: this doesn't work?
case PAGE_BREAK:
+ case '\f':
if ( indent == 0 )
{
block = new PageBreak( indent, line );
@@ -881,6 +876,12 @@
block = new MacroBlock( indent, line );
}
break;
+ case COMMENT:
+ if ( indent == 0 && charAt( line, length, i + 1 ) == COMMENT )
+ {
+ block = new Comment( line.substring( 2 ).trim() );
+ }
+ break;
default:
break;
}
@@ -2047,6 +2048,31 @@
}
}
+ /** A Comment Block. */
+ private class Comment
+ extends Block
+ {
+ /**
+ * Constructor.
+ *
+ * @param indent indent.
+ * @param firstLine the comment line.
+ * @throws AptParseException AptParseException
+ */
+ public Comment( String line )
+ throws AptParseException
+ {
+ super( COMMENT_BLOCK, 0, line );
+ }
+
+ /** [EMAIL PROTECTED] */
+ public void traverse()
+ throws AptParseException
+ {
+ AptParser.this.sink.comment( text );
+ }
+ }
+
/** A Verbatim Block. */
private class Verbatim
extends Block
@@ -2135,6 +2161,7 @@
throws AptParseException
{
AptParser.this.sink.verbatim( boxed );
+ // TODO: filter out lineBreak
AptParser.this.sink.text( text );
AptParser.this.sink.verbatim_();
}
@@ -2466,9 +2493,7 @@
public void traverse()
throws AptParseException
{
- AptParser.this.sink.paragraph();
traverseText( skipLeadingBullets() );
- AptParser.this.sink.paragraph_();
}
}
@@ -2510,9 +2535,7 @@
public void traverse()
throws AptParseException
{
- AptParser.this.sink.paragraph();
traverseText( skipItemNumber() );
- AptParser.this.sink.paragraph_();
}
/**
@@ -2578,13 +2601,12 @@
j = skipSpaceFrom( j + 1 );
if ( j == textLength )
{
- throw new AptParseException( "no definition" );
+ // TODO: this doesn't handle the case of a dd in a paragraph
+ //throw new AptParseException( "no definition" );
}
AptParser.this.sink.definition();
- AptParser.this.sink.paragraph();
traverseText( j );
- AptParser.this.sink.paragraph_();
}
}
Modified:
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java
URL:
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java?rev=596011&r1=596010&r2=596011&view=diff
==============================================================================
---
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java
(original)
+++
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java
Sat Nov 17 14:08:57 2007
@@ -351,6 +351,7 @@
public void listItem_()
{
write( EOL );
+ itemFlag = false;
}
/** [EMAIL PROTECTED] */
@@ -419,18 +420,30 @@
public void numberedListItem_()
{
write( EOL );
+ itemFlag = false;
}
/** [EMAIL PROTECTED] */
public void definitionList()
{
+ listNestingIndent += " ";
+ listStyles.push( "" );
write( EOL );
}
/** [EMAIL PROTECTED] */
public void definitionList_()
{
- write( EOL );
+ if ( listNestingIndent.length() <= 1 )
+ {
+ write( EOL + listNestingIndent + LIST_END_MARKUP + EOL );
+ }
+ else
+ {
+ write( EOL );
+ }
+ listNestingIndent = StringUtils.chomp( listNestingIndent, " " );
+ listStyles.pop();
itemFlag = false;
}
@@ -443,7 +456,7 @@
/** [EMAIL PROTECTED] */
public void definedTerm_()
{
- write( "]" );
+ write( "] " );
}
/** [EMAIL PROTECTED] */
@@ -456,6 +469,7 @@
public void definition_()
{
write( EOL );
+ itemFlag = false;
}
/** [EMAIL PROTECTED] */
@@ -467,7 +481,11 @@
/** [EMAIL PROTECTED] */
public void paragraph()
{
- if ( !itemFlag )
+ if ( itemFlag )
+ {
+ write( EOL + EOL + " " + listNestingIndent );
+ }
+ else
{
write( EOL + " " );
}
@@ -476,14 +494,7 @@
/** [EMAIL PROTECTED] */
public void paragraph_()
{
- if ( itemFlag )
- {
- itemFlag = false;
- }
- else
- {
- write( EOL + EOL );
- }
+ write( EOL + EOL );
}
/** [EMAIL PROTECTED] */
@@ -491,6 +502,7 @@
{
verbatimFlag = true;
this.boxed = boxed;
+ write( EOL );
if ( boxed )
{
write( EOL + BOXED_VERBATIM_START_MARKUP + EOL );
@@ -807,6 +819,10 @@
{
buffer.append( EOL );
}
+ else if ( verbatimFlag )
+ {
+ write( EOL );
+ }
else
{
write( "\\" + EOL );
@@ -856,7 +872,7 @@
/** [EMAIL PROTECTED] */
public void comment( String comment )
{
- rawText( EOL + "~~ " + comment );
+ rawText( EOL + COMMENT + COMMENT + SPACE + comment.trim() );
}
Modified:
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptSinkTest.java
URL:
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptSinkTest.java?rev=596011&r1=596010&r2=596011&view=diff
==============================================================================
---
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptSinkTest.java
(original)
+++
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptSinkTest.java
Sat Nov 17 14:08:57 2007
@@ -132,7 +132,8 @@
protected String getDefinitionListBlock( String definum, String definition
)
{
return Markup.SPACE + "" + Markup.LEFT_SQUARE_BRACKET + definum
- + Markup.RIGHT_SQUARE_BRACKET + "" + definition;
+ + Markup.RIGHT_SQUARE_BRACKET + "" + Markup.SPACE + definition
+ + Markup.SPACE + "" + Markup.LEFT_SQUARE_BRACKET + "" +
Markup.RIGHT_SQUARE_BRACKET;
}
/** [EMAIL PROTECTED] */