Index: src/test/java/org/apache/maven/doxia/module/confluence/ConfluenceParserTest.java =================================================================== --- src/test/java/org/apache/maven/doxia/module/confluence/ConfluenceParserTest.java (revision 754544) +++ src/test/java/org/apache/maven/doxia/module/confluence/ConfluenceParserTest.java (working copy) @@ -284,9 +284,9 @@ String result = locateAndParseTestSourceFile( "paragraph-header" ); assertContainsLines( result, "begin:paragraph\ntext: A paragraph\nend:paragraph\n" ); - assertContainsLines( result, "begin:section2\nbegin:sectionTitle2\ntext: A header\nend:sectionTitle2" ); + assertContainsLines( result, "begin:section2\nbegin:sectionTitle2\ntext: A header with a header\nend:sectionTitle2" ); // 3 paragraphs in the input... - assertEquals( 4, result.split( "end:paragraph\n" ).length ); + assertEquals( 3, result.split( "end:paragraph\n" ).length ); // 1 header in the input... assertEquals( 2, result.split( "end:sectionTitle2\n" ).length ); } Index: src/main/java/org/apache/maven/doxia/module/confluence/parser/SectionBlock.java =================================================================== --- src/main/java/org/apache/maven/doxia/module/confluence/parser/SectionBlock.java (revision 754544) +++ src/main/java/org/apache/maven/doxia/module/confluence/parser/SectionBlock.java (working copy) @@ -28,13 +28,13 @@ class SectionBlock implements Block { - private String title; + private Block text; private int level; - SectionBlock( String title, int level ) + SectionBlock( Block text, int level ) { - this.title = title; + this.text = text; this.level = level; } @@ -67,7 +67,7 @@ sink.sectionTitle5(); } - sink.text( title ); + this.text.traverse(sink); if ( level == Sink.SECTION_LEVEL_1 ) { Index: src/main/java/org/apache/maven/doxia/module/confluence/parser/ParagraphBlock.java =================================================================== --- src/main/java/org/apache/maven/doxia/module/confluence/parser/ParagraphBlock.java (revision 754544) +++ src/main/java/org/apache/maven/doxia/module/confluence/parser/ParagraphBlock.java (working copy) @@ -30,21 +30,31 @@ class ParagraphBlock extends AbstractFatherBlock { + + private boolean generateParagraphTags = true; + ParagraphBlock( List blocks ) throws IllegalArgumentException { super( blocks ); } + + ParagraphBlock(List blocks, boolean generateParagraphTags) throws IllegalArgumentException { + super(blocks); + this.generateParagraphTags = generateParagraphTags; + } /** {@inheritDoc} */ public void before( Sink sink ) { - sink.paragraph(); + if (this.generateParagraphTags) + sink.paragraph(); } /** {@inheritDoc} */ public void after( Sink sink ) { - sink.paragraph_(); + if (this.generateParagraphTags) + sink.paragraph_(); } } Index: src/main/java/org/apache/maven/doxia/module/confluence/parser/SectionBlockParser.java =================================================================== --- src/main/java/org/apache/maven/doxia/module/confluence/parser/SectionBlockParser.java (revision 754544) +++ src/main/java/org/apache/maven/doxia/module/confluence/parser/SectionBlockParser.java (working copy) @@ -66,6 +66,9 @@ String title = line.substring( 3 ).trim(); - return new SectionBlock( title, level ); + BlockParser headingParser = new SectionBlockParser(); + BlockParser figureParser = new FigureBlockParser(); + BlockParser[] subparsers = new BlockParser[] { headingParser, figureParser }; + return new SectionBlock(new ParagraphBlockParser(subparsers).visit(title, source, false), level); } } Index: src/main/java/org/apache/maven/doxia/module/confluence/parser/ParagraphBlockParser.java =================================================================== --- src/main/java/org/apache/maven/doxia/module/confluence/parser/ParagraphBlockParser.java (revision 754544) +++ src/main/java/org/apache/maven/doxia/module/confluence/parser/ParagraphBlockParser.java (working copy) @@ -49,6 +49,15 @@ return true; } + public Block visit(String line, ByLineSource source, boolean generateParagraphTags) throws ParseException { + if (generateParagraphTags) + return this.visit(line, source); + else { + ChildBlocksBuilder builder = new ChildBlocksBuilder(appendUntilEmptyLine(line, source)); + return new ParagraphBlock(builder.getBlocks(), generateParagraphTags); + } + } + /** {@inheritDoc} */ public Block visit( String line, ByLineSource source ) throws ParseException