Author: jvanzyl Date: Sat Mar 17 07:48:17 2007 New Revision: 519332 URL: http://svn.apache.org/viewvc?view=rev&rev=519332 Log: o separate xdoc module
Added: maven/doxia/trunk/doxia-modules/doxia-module-xdoc/ maven/doxia/trunk/doxia-modules/doxia-module-xdoc/pom.xml (with props) maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/ maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/ maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/ maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/ maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/ maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/ maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/ maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/ maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/ maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java (with props) maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSink.java (with props) maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSiteModule.java (with props) maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/ maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/ maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/ maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/ maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/ maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/ maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/ maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/ maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocParserTest.java (with props) maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocSinkTest.java (with props) Added: maven/doxia/trunk/doxia-modules/doxia-module-xdoc/pom.xml URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-modules/doxia-module-xdoc/pom.xml?view=auto&rev=519332 ============================================================================== --- maven/doxia/trunk/doxia-modules/doxia-module-xdoc/pom.xml (added) +++ maven/doxia/trunk/doxia-modules/doxia-module-xdoc/pom.xml Sat Mar 17 07:48:17 2007 @@ -0,0 +1,21 @@ +<?xml version="1.0"?><project> + <parent> + <artifactId>doxia-modules</artifactId> + <groupId>org.apache.maven.doxia</groupId> + <version>1.0-alpha-9-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.maven.doxia</groupId> + <artifactId>doxia-module-xdoc</artifactId> + <name>doxia-module-xdoc</name> + <version>1.0-SNAPSHOT</version> + <url>http://maven.apache.org</url> + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>3.8.1</version> + <scope>test</scope> + </dependency> + </dependencies> +</project> \ No newline at end of file Propchange: maven/doxia/trunk/doxia-modules/doxia-module-xdoc/pom.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/doxia/trunk/doxia-modules/doxia-module-xdoc/pom.xml ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/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/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java?view=auto&rev=519332 ============================================================================== --- maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java (added) +++ maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java Sat Mar 17 07:48:17 2007 @@ -0,0 +1,366 @@ +package org.apache.maven.doxia.module.xdoc; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.io.Reader; +import java.io.StringReader; +import java.io.StringWriter; +import java.util.HashMap; +import java.util.Map; + +import org.apache.maven.doxia.macro.MacroRequest; +import org.apache.maven.doxia.parser.AbstractParser; +import org.apache.maven.doxia.parser.ParseException; +import org.apache.maven.doxia.sink.Sink; +import org.codehaus.plexus.util.IOUtil; +import org.codehaus.plexus.util.xml.pull.MXParser; +import org.codehaus.plexus.util.xml.pull.XmlPullParser; + +/** + * Parse an xdoc model and emit events into the specified doxia + * Sink. + * + * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a> + * @version $Id:XdocParser.java 348605 2005-11-24 12:02:44 +1100 (Thu, 24 Nov 2005) brett $ + * @plexus.component role="org.apache.maven.doxia.parser.Parser" + * role-hint="xdoc" + */ +public class XdocParser + extends AbstractParser +{ + private String sourceContent; + + public void parse( Reader reader, Sink sink ) + throws ParseException + { + try + { + StringWriter contentWriter = new StringWriter(); + IOUtil.copy( reader, contentWriter ); + sourceContent = contentWriter.toString(); + + XmlPullParser parser = new MXParser(); + + parser.setInput( new StringReader( sourceContent ) ); + + parseXdoc( parser, sink ); + } + catch ( Exception ex ) + { + throw new ParseException( "Error parsing the model.", ex ); + } + } + + public void parseXdoc( XmlPullParser parser, Sink sink ) + throws Exception + { + int eventType = parser.getEventType(); + + while ( eventType != XmlPullParser.END_DOCUMENT ) + { + if ( eventType == XmlPullParser.START_TAG ) + { + if ( parser.getName().equals( "document" ) ) + { + //Do nothing + } + else if ( parser.getName().equals( "title" ) ) + { + sink.title(); + } + else if ( parser.getName().equals( "author" ) ) + { + sink.author(); + } + else if ( parser.getName().equals( "body" ) ) + { + sink.body(); + } + else if ( parser.getName().equals( "section" ) ) + { + sink.anchor( parser.getAttributeValue( null, "name" ) ); + sink.anchor_(); + + sink.section1(); + + sink.sectionTitle1(); + + sink.text( parser.getAttributeValue( null, "name" ) ); + + sink.sectionTitle1_(); + } + else if ( parser.getName().equals( "subsection" ) ) + { + sink.anchor( parser.getAttributeValue( null, "name" ) ); + sink.anchor_(); + + sink.section2(); + + sink.sectionTitle2(); + + sink.text( parser.getAttributeValue( null, "name" ) ); + + sink.sectionTitle2_(); + } + else if ( parser.getName().equals( "p" ) ) + { + sink.paragraph(); + } + else if ( parser.getName().equals( "source" ) ) + { + sink.verbatim( true ); + } + else if ( parser.getName().equals( "ul" ) ) + { + sink.list(); + } + else if ( parser.getName().equals( "ol" ) ) + { + sink.numberedList( Sink.NUMBERING_DECIMAL ); + } + else if ( parser.getName().equals( "li" ) ) + { + sink.listItem(); + } + else if ( parser.getName().equals( "properties" ) ) + { + sink.head(); + } + else if ( parser.getName().equals( "b" ) ) + { + sink.bold(); + } + else if ( parser.getName().equals( "i" ) ) + { + sink.italic(); + } + else if ( parser.getName().equals( "a" ) ) + { + String href = parser.getAttributeValue( null, "href" ); + if ( href != null ) + { + sink.link( href ); + } + else + { + String name = parser.getAttributeValue( null, "name" ); + if ( name != null ) + { + sink.anchor( name ); + } + else + { + handleRawText( sink, parser ); + } + } + } + else if ( parser.getName().equals( "macro" ) ) + { + if ( !secondParsing ) + { + String macroName = parser.getAttributeValue( null, "name" ); + + int count = parser.getAttributeCount(); + + Map parameters = new HashMap(); + + for ( int i = 1; i < count; i++ ) + { + parameters.put( parser.getAttributeName( i ), parser.getAttributeValue( i ) ); + } + + parameters.put( "sourceContent", sourceContent ); + + XdocParser xdocParser = new XdocParser(); + xdocParser.setSecondParsing( true ); + parameters.put( "parser", xdocParser ); + + MacroRequest request = new MacroRequest( parameters, getBasedir() ); + + executeMacro( macroName, request, sink ); + } + } + + // ---------------------------------------------------------------------- + // Tables + // ---------------------------------------------------------------------- + + else if ( parser.getName().equals( "table" ) ) + { + sink.table(); + } + else if ( parser.getName().equals( "tr" ) ) + { + sink.tableRow(); + } + else if ( parser.getName().equals( "th" ) ) + { + sink.tableHeaderCell(); + } + else if ( parser.getName().equals( "td" ) ) + { + sink.tableCell(); + } + else + { + handleRawText( sink, parser ); + } + } + else if ( eventType == XmlPullParser.END_TAG ) + { + if ( parser.getName().equals( "document" ) ) + { + //Do nothing + } + else if ( parser.getName().equals( "title" ) ) + { + sink.title_(); + } + else if ( parser.getName().equals( "author" ) ) + { + sink.author_(); + } + else if ( parser.getName().equals( "body" ) ) + { + sink.body_(); + } + else if ( parser.getName().equals( "p" ) ) + { + sink.paragraph_(); + } + else if ( parser.getName().equals( "source" ) ) + { + sink.verbatim_(); + } + else if ( parser.getName().equals( "ul" ) ) + { + sink.list_(); + } + else if ( parser.getName().equals( "ol" ) ) + { + sink.numberedList_(); + } + else if ( parser.getName().equals( "li" ) ) + { + sink.listItem_(); + } + else if ( parser.getName().equals( "properties" ) ) + { + sink.head_(); + } + else if ( parser.getName().equals( "b" ) ) + { + sink.bold_(); + } + else if ( parser.getName().equals( "i" ) ) + { + sink.italic_(); + } + else if ( parser.getName().equals( "a" ) ) + { + // TODO: Note there will be badness if link_ != anchor != </a> + sink.link_(); + } + else if ( parser.getName().equals( "macro" ) ) + { + //Do nothing + } + + // ---------------------------------------------------------------------- + // Tables + // ---------------------------------------------------------------------- + + else if ( parser.getName().equals( "table" ) ) + { + sink.table_(); + } + else if ( parser.getName().equals( "tr" ) ) + { + sink.tableRow_(); + } + else if ( parser.getName().equals( "th" ) ) + { + sink.tableHeaderCell_(); + } + else if ( parser.getName().equals( "td" ) ) + { + sink.tableCell_(); + } + + // ---------------------------------------------------------------------- + // Sections + // ---------------------------------------------------------------------- + + else if ( parser.getName().equals( "section" ) ) + { + sink.section1_(); + } + else if ( parser.getName().equals( "subsection" ) ) + { + sink.section2_(); + } + else + { + sink.rawText( "</" ); + + sink.rawText( parser.getName() ); + + sink.rawText( ">" ); + } + + // ---------------------------------------------------------------------- + // Sections + // ---------------------------------------------------------------------- + } + else if ( eventType == XmlPullParser.TEXT ) + { + sink.text( parser.getText() ); + } + + eventType = parser.next(); + } + } + + private void handleRawText( Sink sink, XmlPullParser parser ) + { + sink.rawText( "<" ); + + sink.rawText( parser.getName() ); + + int count = parser.getAttributeCount(); + + for ( int i = 0; i < count; i++ ) + { + sink.rawText( " " ); + + sink.rawText( parser.getAttributeName( i ) ); + + sink.rawText( "=" ); + + sink.rawText( "\"" ); + + sink.rawText( parser.getAttributeValue( i ) ); + + sink.rawText( "\"" ); + } + + sink.rawText( ">" ); + } +} Propchange: maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/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/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSink.java?view=auto&rev=519332 ============================================================================== --- maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSink.java (added) +++ maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSink.java Sat Mar 17 07:48:17 2007 @@ -0,0 +1,707 @@ +package org.apache.maven.doxia.module.xdoc; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.io.Writer; + +import org.apache.maven.doxia.module.HtmlTools; +import org.apache.maven.doxia.module.apt.AptParser; +import org.apache.maven.doxia.sink.SinkAdapter; +import org.apache.maven.doxia.util.LineBreaker; + +/** + * A doxia Sink which produces an xdoc model. + * + * @author <a href="mailto:[EMAIL PROTECTED]">James Taylor</a> + * @version $Id:XdocSink.java 348605 2005-11-24 12:02:44 +1100 (Thu, 24 Nov 2005) brett $ + */ +public class XdocSink + extends SinkAdapter +{ + protected static final String EOL = System.getProperty( "line.separator" ); + + protected LineBreaker out; + + protected StringBuffer buffer = new StringBuffer(); + + protected boolean headFlag; + + /** + * An indication on if we're inside a title. + * + * This will prevent the styling of titles. + */ + protected boolean titleFlag; + + private boolean itemFlag; + + private boolean boxedFlag; + + private boolean verbatimFlag; + + private int[] cellJustif; + + private int cellCount; + + private String section; + + public XdocSink( Writer out ) + { + this.out = new LineBreaker( out ); + } + + protected void resetState() + { + headFlag = false; + buffer = new StringBuffer(); + itemFlag = false; + boxedFlag = false; + verbatimFlag = false; + cellJustif = null; + cellCount = 0; + } + + public void head() + { + resetState(); + + headFlag = true; + + markup( "<?xml version=\"1.0\" ?>" + EOL ); + + markup( "<document>" + EOL ); + + markup( "<properties>" + EOL ); + } + + public void head_() + { + headFlag = false; + + markup( "</properties>" + EOL ); + } + + public void title_() + { + if ( buffer.length() > 0 ) + { + markup( "<title>" ); + content( buffer.toString() ); + markup( "</title>" + EOL ); + buffer = new StringBuffer(); + } + } + + public void author_() + { + if ( buffer.length() > 0 ) + { + markup( "<author>" ); + content( buffer.toString() ); + markup( "</author>" + EOL ); + buffer = new StringBuffer(); + } + } + + public void date_() + { + if ( buffer.length() > 0 ) + { + markup( "<date>" ); + content( buffer.toString() ); + markup( "</date>" ); + buffer = new StringBuffer(); + } + } + + public void body() + { + markup( "<body>" + EOL ); + } + + public void body_() + { + markup( "</body>" + EOL ); + + markup( "</document>" + EOL ); + + out.flush(); + + resetState(); + } + + // ----------------------------------------------------------------------- + // + // ----------------------------------------------------------------------- + + public void section1() + { + onSection( 1 ); + } + + public void sectionTitle1() + { + onSectionTitle( 1 ); + } + + public void sectionTitle1_() + { + onSectionTitle_( 1 ); + } + + public void section1_() + { + onSection_( 1 ); + } + + public void section2() + { + onSection( 2 ); + } + + public void sectionTitle2() + { + onSectionTitle( 2 ); + } + + public void sectionTitle2_() + { + onSectionTitle_( 2 ); + } + + public void section2_() + { + onSection_( 2 ); + } + + public void section3() + { + onSection( 3 ); + } + + public void sectionTitle3() + { + onSectionTitle( 3 ); + } + + public void sectionTitle3_() + { + onSectionTitle_( 3 ); + } + + public void section3_() + { + onSection_( 3 ); + } + + public void section4() + { + onSection( 4 ); + } + + public void sectionTitle4() + { + onSectionTitle( 4 ); + } + + public void sectionTitle4_() + { + onSectionTitle_( 4 ); + } + + public void section4_() + { + onSection_( 4 ); + } + + public void section5() + { + onSection( 5 ); + } + + public void sectionTitle5() + { + onSectionTitle( 5 ); + } + + public void sectionTitle5_() + { + onSectionTitle_( 5 ); + } + + public void section5_() + { + onSection_( 5 ); + } + + private void onSection( int depth ) + { + if ( depth == 1 ) + { + markup( "<section name=\"" ); + } + else + { + markup( "<subsection name=\"" ); + } + } + + private void onSectionTitle( int depth ) + { + titleFlag = true; + } + + private void onSectionTitle_( int depth ) + { + markup( "\">" ); + + titleFlag = false; + } + + private void onSection_( int depth ) + { + if ( depth == 1 ) + { + markup( "</section>" ); + } + else + { + markup( "</subsection>" ); + } + } + + // ----------------------------------------------------------------------- + // + // ----------------------------------------------------------------------- + + public void list() + { + markup( "<ul>" + EOL ); + } + + public void list_() + { + markup( "</ul>" ); + itemFlag = false; + } + + public void listItem() + { + markup( "<li>" ); + itemFlag = true; + // What follows is at least a paragraph. + } + + public void listItem_() + { + markup( "</li>" + EOL ); + } + + 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"; + } + markup( "<ol style=\"list-style-type: " + style + "\">" + EOL ); + } + + public void numberedList_() + { + markup( "</ol>" ); + itemFlag = false; + } + + public void numberedListItem() + { + markup( "<li>" ); + itemFlag = true; + // What follows is at least a paragraph. + } + + public void numberedListItem_() + { + markup( "</li>" + EOL ); + } + + public void definitionList() + { + markup( "<dl compact=\"compact\">" + EOL ); + } + + public void definitionList_() + { + markup( "</dl>" ); + itemFlag = false; + } + + public void definedTerm() + { + markup( "<dt><b>" ); + } + + public void definedTerm_() + { + markup( "</b></dt>" + EOL ); + } + + public void definition() + { + markup( "<dd>" ); + itemFlag = true; + // What follows is at least a paragraph. + } + + public void definition_() + { + markup( "</dd>" + EOL ); + } + + public void paragraph() + { + if ( !itemFlag ) + { + markup( "<p>" ); + } + } + + public void paragraph_() + { + if ( itemFlag ) + { + itemFlag = false; + } + else + { + markup( "</p>" ); + } + } + + public void verbatim( boolean boxed ) + { + verbatimFlag = true; + boxedFlag = boxed; + if ( boxed ) + { + markup( "<source>" ); + } + else + { + markup( "<pre>" ); + } + } + + public void verbatim_() + { + if ( boxedFlag ) + { + markup( "</source>" ); + } + else + { + markup( "</pre>" ); + } + + verbatimFlag = false; + + boxedFlag = false; + } + + public void horizontalRule() + { + markup( "<hr />" ); + } + + public void table() + { + markup( "<table align=\"center\">" + EOL ); + } + + public void table_() + { + markup( "</table>" ); + } + + public void tableRows( int[] justification, boolean grid ) + + { + markup( "<table align=\"center\" border=\"" + ( grid ? 1 : 0 ) + "\">" + EOL ); + this.cellJustif = justification; + } + + public void tableRows_() + { + markup( "</table>" ); + } + + public void tableRow() + { + markup( "<tr valign=\"top\">" + EOL ); + cellCount = 0; + } + + public void tableRow_() + { + markup( "</tr>" + EOL ); + cellCount = 0; + } + + public void tableCell() + { + tableCell( false ); + } + + public void tableHeaderCell() + { + tableCell( true ); + } + + public void tableCell( boolean headerRow ) + { + String justif = null; + + if ( cellJustif != null ) + { + switch ( cellJustif[cellCount] ) + { + case AptParser.JUSTIFY_LEFT: + justif = "left"; + break; + case AptParser.JUSTIFY_RIGHT: + justif = "right"; + break; + case AptParser.JUSTIFY_CENTER: + default: + justif = "center"; + break; + } + } + + if ( justif != null ) + { + markup( "<t" + ( headerRow ? 'h' : 'd' ) + " align=\"" + justif + "\">" ); + } + else + { + markup( "<t" + ( headerRow ? 'h' : 'd' ) + ">" ); + } + } + + public void tableCell_() + { + tableCell_( false ); + } + + public void tableHeaderCell_() + { + tableCell_( true ); + } + + public void tableCell_( boolean headerRow ) + { + markup( "</t" + ( headerRow ? 'h' : 'd' ) + ">" + EOL ); + ++cellCount; + } + + public void tableCaption() + { + markup( "<p><i>" ); + } + + public void tableCaption_() + { + markup( "</i></p>" ); + } + + public void anchor( String name ) + { + if ( !headFlag && !titleFlag ) + { + String id = HtmlTools.encodeId( name ); + markup( "<a id=\"" + id + "\" name=\"" + id + "\">" ); + } + } + + public void anchor_() + { + if ( !headFlag && !titleFlag ) + { + markup( "</a>" ); + } + } + + public void link( String name ) + { + if ( !headFlag && !titleFlag ) + { + markup( "<a href=\"" + name + "\">" ); + } + } + + public void link_() + { + if ( !headFlag && !titleFlag ) + { + markup( "</a>" ); + } + } + + public void italic() + { + if ( !headFlag && !titleFlag ) + { + markup( "<i>" ); + } + } + + public void italic_() + { + if ( !headFlag && !titleFlag ) + { + markup( "</i>" ); + } + } + + public void bold() + { + if ( !headFlag && !titleFlag ) + { + markup( "<b>" ); + } + } + + public void bold_() + { + if ( !headFlag && !titleFlag ) + { + markup( "</b>" ); + } + } + + public void monospaced() + { + if ( !headFlag && !titleFlag ) + { + markup( "<tt>" ); + } + } + + public void monospaced_() + { + if ( !headFlag && !titleFlag ) + { + markup( "</tt>" ); + } + } + + public void lineBreak() + { + if ( headFlag || titleFlag ) + { + buffer.append( EOL ); + } + else + { + markup( "<br />" ); + } + } + + public void nonBreakingSpace() + { + if ( headFlag || titleFlag ) + { + buffer.append( ' ' ); + } + else + { + markup( " " ); + } + } + + public void text( String text ) + { + if ( headFlag ) + { + buffer.append( text ); + } + else if ( verbatimFlag ) + { + verbatimContent( text ); + } + else + { + content( text ); + } + } + + // ---------------------------------------------------------------------- + // + // ---------------------------------------------------------------------- + + protected void markup( String text ) + { + out.write( text, true ); + } + + protected void content( String text ) + { + out.write( escapeHTML( text ), false ); + } + + protected void verbatimContent( String text ) + { + out.write( escapeHTML( text ), true ); + } + + public static String escapeHTML( String text ) + { + return HtmlTools.escapeHTML( text ); + } + + public static String encodeURL( String text ) + { + return HtmlTools.encodeURL( text ); + } + + public void flush() + { + out.flush(); + } + + public void close() + { + out.close(); + } +} Propchange: maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSink.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSink.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSiteModule.java URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSiteModule.java?view=auto&rev=519332 ============================================================================== --- maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSiteModule.java (added) +++ maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSiteModule.java Sat Mar 17 07:48:17 2007 @@ -0,0 +1,47 @@ +package org.apache.maven.doxia.module.xdoc; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import org.apache.maven.doxia.site.module.AbstractSiteModule; + +/** + * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a> + * @version $Id:XdocSiteModule.java 348605 2005-11-24 12:02:44 +1100 (Thu, 24 Nov 2005) brett $ + * @plexus.component role="org.apache.maven.doxia.site.module.SiteModule" + * role-hint="xdoc" + */ +public class XdocSiteModule + extends AbstractSiteModule +{ + public String getSourceDirectory() + { + return "xdoc"; + } + + public String getExtension() + { + return "xml"; + } + + public String getParserId() + { + return "xdoc"; + } +} Propchange: maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSiteModule.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSiteModule.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocParserTest.java URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocParserTest.java?view=auto&rev=519332 ============================================================================== --- maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocParserTest.java (added) +++ maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocParserTest.java Sat Mar 17 07:48:17 2007 @@ -0,0 +1,120 @@ +package org.apache.maven.doxia.module.xdoc; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.io.FileReader; +import java.io.Reader; +import java.io.StringWriter; + +import org.apache.maven.doxia.parser.AbstractParserTestCase; +import org.apache.maven.doxia.parser.Parser; +import org.apache.maven.doxia.sink.Sink; + +/** + * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a> + * @author <a href="mailto:[EMAIL PROTECTED]">Emmanuel Venisse</a> + * @version $Id:XdocParserTest.java 348605 2005-11-24 12:02:44 +1100 (Thu, 24 Nov 2005) brett $ + */ +public class XdocParserTest + extends AbstractParserTestCase +{ + private XdocParser parser; + + /** + * @see junit.framework.TestCase#setUp() + */ + protected void setUp() + throws Exception + { + super.setUp(); + + parser = (XdocParser) lookup( Parser.ROLE, "xdoc" ); + } + + /** + * @see org.apache.maven.doxia.parser.AbstractParserTestCase#getParser() + */ + protected Parser getParser() + { + return parser; + } + + /** + * @see org.apache.maven.doxia.parser.AbstractParserTestCase#getDocument() + */ + protected String getDocument() + { + return "src/test/site/xdoc/report.xml"; + } + + /** + * @throws Exception + */ + public void testSnippetMacro() + throws Exception + { + StringWriter output = null; + Reader reader = null; + + try + { + output = new StringWriter(); + reader = new FileReader( getTestFile( getBasedir(), "src/test/site/xdoc/macro.xml" ) ); + + Sink sink = new XdocSink( output ); + getParser().parse( reader, sink ); + + assertTrue( output.toString().indexOf( "<modelVersion>4.0.0</modelVersion>" ) != -1 ); + } + finally + { + output.close(); + reader.close(); + } + } + + /** + * @throws Exception + */ + public void testTocMacro() + throws Exception + { + StringWriter output = null; + Reader reader = null; + + try + { + output = new StringWriter(); + reader = new FileReader( getTestFile( getBasedir(), "src/test/site/xdoc/toc.xml" ) ); + + Sink sink = new XdocSink( output ); + getParser().parse( reader, sink ); + + // No section, only subsection 1 and 2 + assertTrue( output.toString().indexOf( "<li><a href=\"#section_11\">Section 11</a></li>" ) != -1 ); + assertTrue( output.toString().indexOf( "<li><a href=\"#section_1211\">Section 1211</a></li>" ) == -1 ); + } + finally + { + output.close(); + reader.close(); + } + } +} Propchange: maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocParserTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocParserTest.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocSinkTest.java URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocSinkTest.java?view=auto&rev=519332 ============================================================================== --- maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocSinkTest.java (added) +++ maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocSinkTest.java Sat Mar 17 07:48:17 2007 @@ -0,0 +1,43 @@ +package org.apache.maven.doxia.module.xdoc; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import org.apache.maven.doxia.module.xdoc.XdocSink; +import org.apache.maven.doxia.sink.Sink; +import org.apache.maven.doxia.sink.AbstractSinkTestCase; + +/** + * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a> + * @version $Id:XdocSinkTest.java 348605 2005-11-24 12:02:44 +1100 (Thu, 24 Nov 2005) brett $ + */ +public class XdocSinkTest + extends AbstractSinkTestCase +{ + protected String outputExtension() + { + return "xml"; + } + + protected Sink createSink() + throws Exception + { + return new XdocSink( getTestWriter() ); + } +} Propchange: maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocSinkTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocSinkTest.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision"