Author: schulte Date: Fri Dec 11 18:01:19 2015 New Revision: 1719483 URL: http://svn.apache.org/viewvc?rev=1719483&view=rev Log: [DOXIA-532] Support for server side includes.
o Updated to handle comments starting with a '#' character to represent SSI expressions. Modified: maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/markup/Markup.java maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/RandomAccessSink.java maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/SinkAdapter.java maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/XhtmlBaseSink.java maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/parser/XhtmlBaseParserTest.java maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/SinkEventTestingSink.java maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/TextSink.java maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/WellformednessCheckingSink.java 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/AptParserTest.java maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/resources/test/comments.apt maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookSink.java maven/doxia/doxia/trunk/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java maven/doxia/doxia/trunk/doxia-sink-api/src/main/java/org/apache/maven/doxia/sink/Sink.java Modified: maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/markup/Markup.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/markup/Markup.java?rev=1719483&r1=1719482&r2=1719483&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/markup/Markup.java (original) +++ maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/markup/Markup.java Fri Dec 11 18:01:19 2015 @@ -80,4 +80,8 @@ public interface Markup /** semicolon character: ';' */ char SEMICOLON = ';'; + + /** hash character: '#' */ + char HASH = '#'; + } Modified: maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java?rev=1719483&r1=1719482&r2=1719483&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java (original) +++ maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java Fri Dec 11 18:01:19 2015 @@ -260,7 +260,7 @@ public abstract class AbstractXmlParser } else if ( eventType == XmlPullParser.COMMENT ) { - handleComment( parser, sink ); + handleCommentOrSsi( parser, sink ); } else if ( eventType == XmlPullParser.ENTITY_REF ) { @@ -359,6 +359,31 @@ public abstract class AbstractXmlParser } /** + * Decides whether a comment is a SSI directive and delegates to the + * corresponding method. + * + * @param parser A parser, not null. + * @param sink the sink to receive the events. Not null. + * + * @throws org.codehaus.plexus.util.xml.pull.XmlPullParserException if there's a problem parsing the model + * @since 1.7 + */ + private void handleCommentOrSsi( XmlPullParser parser, Sink sink ) + throws XmlPullParserException + { + final String text = getText( parser ).trim(); + + if ( text.indexOf( HASH ) == 0 ) + { + handleSsi( parser, sink ); + } + else + { + handleComment( parser, sink ); + } + } + + /** * Handles comments. * * <p>This is a default implementation, all data are emitted as comment @@ -375,6 +400,23 @@ public abstract class AbstractXmlParser } /** + * Handles SSI directives. + * + * <p>This is a default implementation, all data are emitted as SSI + * events into the specified sink.</p> + * + * @param parser A parser, not null. + * @param sink the sink to receive the events. Not null. + * @throws org.codehaus.plexus.util.xml.pull.XmlPullParserException if there's a problem parsing the model + * @since 1.7 + */ + protected void handleSsi( XmlPullParser parser, Sink sink ) + throws XmlPullParserException + { + sink.ssi( getText( parser ).trim().substring( 1 ) ); + } + + /** * Handles entities. * * <p>This is a default implementation, all entities are resolved and emitted as text Modified: maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/RandomAccessSink.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/RandomAccessSink.java?rev=1719483&r1=1719482&r2=1719483&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/RandomAccessSink.java (original) +++ maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/RandomAccessSink.java Fri Dec 11 18:01:19 2015 @@ -726,6 +726,15 @@ public class RandomAccessSink currentSink.section_( level ); } + /** + * {@inheritDoc} + * @since 1.7 + */ + public void ssi( final String directive ) + { + currentSink.ssi( directive ); + } + /** {@inheritDoc} */ public void table() { Modified: maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/SinkAdapter.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/SinkAdapter.java?rev=1719483&r1=1719482&r2=1719483&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/SinkAdapter.java (original) +++ maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/SinkAdapter.java Fri Dec 11 18:01:19 2015 @@ -212,6 +212,15 @@ public class SinkAdapter // nop } + /** + * {@inheritDoc} + * @since 1.7 + */ + public void ssi( final String directive ) + { + // nop + } + /** {@inheritDoc} */ public void table() { Modified: maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/XhtmlBaseSink.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/XhtmlBaseSink.java?rev=1719483&r1=1719482&r2=1719483&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/XhtmlBaseSink.java (original) +++ maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/XhtmlBaseSink.java Fri Dec 11 18:01:19 2015 @@ -1904,6 +1904,22 @@ public class XhtmlBaseSink } /** + * {@inheritDoc} + * @sine 1.7 + */ + @Override + public void ssi( final String directive ) + { + final StringBuilder buf = new StringBuilder( directive.length() + 9 ); + + buf.append( LESS_THAN ).append( BANG ).append( MINUS ).append( MINUS ).append( HASH ); + buf.append( directive ); + buf.append( SPACE ).append( MINUS ).append( MINUS ).append( GREATER_THAN ); + + write( buf.toString() ); + } + + /** * Add an unknown event. * This can be used to generate html tags for which no corresponding sink event exists. * Modified: maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/parser/XhtmlBaseParserTest.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/parser/XhtmlBaseParserTest.java?rev=1719483&r1=1719482&r2=1719483&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/parser/XhtmlBaseParserTest.java (original) +++ maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/parser/XhtmlBaseParserTest.java Fri Dec 11 18:01:19 2015 @@ -597,13 +597,14 @@ public class XhtmlBaseParserTest public void testSpecial() throws Exception { - String text = "<p><!-- a pagebreak: --><!-- PB -->  <unknown /></p>"; + String text = "<p><!-- a pagebreak: --><!-- PB --><!--#echo var=\"code\" -->  <unknown /></p>"; parser.parse( text, sink ); Iterator<SinkEventElement> it = sink.getEventList().iterator(); assertEquals( "paragraph", it.next().getName() ); assertEquals( "comment", it.next().getName() ); assertEquals( "pageBreak", it.next().getName() ); + assertEquals( "ssi", it.next().getName() ); assertEquals( "nonBreakingSpace", it.next().getName() ); assertEquals( "nonBreakingSpace", it.next().getName() ); // unknown events are not reported by the base parser Modified: maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/SinkEventTestingSink.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/SinkEventTestingSink.java?rev=1719483&r1=1719482&r2=1719483&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/SinkEventTestingSink.java (original) +++ maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/SinkEventTestingSink.java Fri Dec 11 18:01:19 2015 @@ -236,6 +236,15 @@ public class SinkEventTestingSink addEvent( "figure_" ); } + /** + * {@inheritDoc} + * @since 1.7 + */ + public void ssi( final String directive ) + { + addEvent( "ssi" ); + } + /** {@inheritDoc} */ public void table() { Modified: maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/TextSink.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/TextSink.java?rev=1719483&r1=1719482&r2=1719483&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/TextSink.java (original) +++ maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/TextSink.java Fri Dec 11 18:01:19 2015 @@ -222,6 +222,15 @@ public class TextSink writeln( "end:figure" ); } + /** + * {@inheritDoc} + * @since 1.7 + */ + public void ssi( final String directive ) + { + writeln( "ssi:" + directive ); + } + /** {@inheritDoc} */ public void table() { Modified: maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/WellformednessCheckingSink.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/WellformednessCheckingSink.java?rev=1719483&r1=1719482&r2=1719483&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/WellformednessCheckingSink.java (original) +++ maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/WellformednessCheckingSink.java Fri Dec 11 18:01:19 2015 @@ -218,6 +218,15 @@ public class WellformednessCheckingSink checkWellformedness( "figure" ); } + /** + * {@inheritDoc} + * @since 1.7 + */ + public void ssi( final String directive ) + { + // ignore + } + /** {@inheritDoc} */ public void table() { 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=1719483&r1=1719482&r2=1719483&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 Fri Dec 11 18:01:19 2015 @@ -112,6 +112,9 @@ public class AptParser /** Comment event id. */ private static final int COMMENT_BLOCK = 17; + /** SSI event id. */ + private static final int SSI_BLOCK = 18; + /** String representations of event ids */ private static final String TYPE_NAMES[] = { "TITLE", @@ -131,7 +134,8 @@ public class AptParser "PG_BREAK", "LIST_BREAK", "MACRO", - "COMMENT_BLOCK" }; + "COMMENT_BLOCK", + "SSI_BLOCK" }; /** An array of 85 spaces. */ protected static final char[] SPACES; @@ -218,8 +222,8 @@ public class AptParser // Lookahead block. nextBlock( /*first*/true ); - // traverse comments - while ( ( block != null ) && ( block.getType() == COMMENT_BLOCK ) ) + // traverse comments and SSI directives + while ( ( block != null ) && ( block.getType() == COMMENT_BLOCK || block.getType() == SSI_BLOCK ) ) { block.traverse(); nextBlock( /*first*/true ); @@ -1368,7 +1372,10 @@ public class AptParser case COMMENT: if ( charAt( line, length, i + 1 ) == COMMENT ) { - block = new Comment( line.substring( i + 2 ).trim() ); + block = charAt( line, length, i + 2 ) == HASH + ? new SSI( line.substring( i + 3 ).trim() ) + : new Comment( line.substring( i + 2 ).trim() ); + } break; default: @@ -2235,6 +2242,30 @@ public class AptParser } } + /** A SSI Block. */ + private class SSI + extends Block + { + /** + * Constructor. + * + * @param line the SSI directive. + * @throws AptParseException AptParseException + */ + public SSI( String line ) + throws AptParseException + { + super( SSI_BLOCK, 0, line ); + } + + /** {@inheritDoc} */ + public void traverse() + throws AptParseException + { + AptParser.this.sink.ssi( text ); + } + } + /** A Verbatim Block. */ private class Verbatim extends Block 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=1719483&r1=1719482&r2=1719483&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 Fri Dec 11 18:01:19 2015 @@ -912,6 +912,15 @@ public class AptSink /** * {@inheritDoc} + * @since 1.7 + */ + public void ssi( final String directive ) + { + rawText( ( startFlag ? "" : EOL ) + COMMENT + COMMENT + HASH + SPACE + directive ); + } + + /** + * {@inheritDoc} * * Unkown events just log a warning message but are ignored otherwise. * @see org.apache.maven.doxia.sink.Sink#unknown(String,Object[],SinkEventAttributes) Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptParserTest.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/AptParserTest.java?rev=1719483&r1=1719482&r2=1719483&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptParserTest.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptParserTest.java Fri Dec 11 18:01:19 2015 @@ -101,14 +101,20 @@ public class AptParserTest assertTrue( macro.indexOf( "<modelVersion\\>4.0.0\\</modelVersion\\>" ) != -1 ); } - /** @throws Exception */ + /** @throws Exception */ public void testCommentsBeforeTitle() throws Exception { String comments = parseFileToAptSink( "test/comments" ); - assertEquals( 0, comments.indexOf( "~~ comments before title" + EOL + "~~ like a license header, for example" - + EOL + " -----" + EOL + " Test DOXIA-379" ) ); + assertEquals( 0, comments.indexOf( "~~ " + EOL + + "~~ comments before title" + EOL + + "~~ like a license header, for example" + EOL + + "~~# " + EOL + + "~~# echo var=\"code\"" + EOL + + " -----" + EOL + + " Test DOXIA-379" ) ); + } /** @throws Exception */ Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/resources/test/comments.apt URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/resources/test/comments.apt?rev=1719483&r1=1719482&r2=1719483&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/resources/test/comments.apt (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/resources/test/comments.apt Fri Dec 11 18:01:19 2015 @@ -1,5 +1,8 @@ +~~ ~~ comments before title ~~ like a license header, for example +~~# +~~# echo var="code" ----- Test DOXIA-379 ----- Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookSink.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/DocBookSink.java?rev=1719483&r1=1719482&r2=1719483&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookSink.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookSink.java Fri Dec 11 18:01:19 2015 @@ -1589,6 +1589,21 @@ public class DocBookSink /** * {@inheritDoc} + * @since 1.7 + */ + public void ssi( final String directive ) + { + final StringBuilder buf = new StringBuilder( directive.length() + 10 ); + + buf.append( LESS_THAN ).append( BANG ).append( MINUS ).append( MINUS ).append( HASH ).append( SPACE ); + buf.append( directive ); + buf.append( SPACE ).append( MINUS ).append( MINUS ).append( GREATER_THAN ); + + write( buf.toString() ); + } + + /** + * {@inheritDoc} * * Unknown events just log a warning message but are ignored otherwise. * @see org.apache.maven.doxia.sink.Sink#unknown(String,Object[],SinkEventAttributes) Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java?rev=1719483&r1=1719482&r2=1719483&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java Fri Dec 11 18:01:19 2015 @@ -408,6 +408,26 @@ public class FmlParser } } + /** + * {@inheritDoc} + * @sine 1.7 + */ + protected void handleSsi( XmlPullParser parser, Sink sink ) + throws XmlPullParserException + { + final String directive = parser.getText().trim().substring( 1 ); + + if ( buffer != null ) + { + buffer.append( LESS_THAN ).append( BANG ).append( MINUS ).append( MINUS ).append( HASH ).append( SPACE ) + .append( directive ).append( SPACE ).append( MINUS ).append( MINUS ).append( GREATER_THAN ); + } + else + { + sink.ssi( directive ); + } + } + /** {@inheritDoc} */ protected void handleEntity( XmlPullParser parser, Sink sink ) throws XmlPullParserException Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java?rev=1719483&r1=1719482&r2=1719483&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java Fri Dec 11 18:01:19 2015 @@ -1393,6 +1393,21 @@ public class FoSink } /** + * {@inheritDoc} + * @since 1.7 + */ + public void ssi( final String directive ) + { + final StringBuilder buf = new StringBuilder( directive.length() + 10 ); + + buf.append( LESS_THAN ).append( BANG ).append( MINUS ).append( MINUS ).append( HASH ).append( SPACE ); + buf.append( directive ); + buf.append( SPACE ).append( MINUS ).append( MINUS ).append( GREATER_THAN ); + + write( buf.toString() ); + } + + /** * Writes the beginning of a FO document. */ public void beginDocument() Modified: maven/doxia/doxia/trunk/doxia-sink-api/src/main/java/org/apache/maven/doxia/sink/Sink.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-sink-api/src/main/java/org/apache/maven/doxia/sink/Sink.java?rev=1719483&r1=1719482&r2=1719483&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-sink-api/src/main/java/org/apache/maven/doxia/sink/Sink.java (original) +++ maven/doxia/doxia/trunk/doxia-sink-api/src/main/java/org/apache/maven/doxia/sink/Sink.java Fri Dec 11 18:01:19 2015 @@ -1345,6 +1345,14 @@ public interface Sink void comment( String comment ); /** + * Add a SSI directive. + * + * @param directive The directive to write. + * @since 1.7 + */ + void ssi( String directive ); + + /** * Add an unknown event. This may be used by parsers to notify a general Sink about * an event that doesn't fit into any event defined by the Sink API. * Depending on the parameters, a Sink may decide whether or not to process the event,