You are viewing a plain text version of this content. The canonical link for it is here.
Posted to doxia-dev@maven.apache.org by Trygve Laugstøl <tr...@apache.org> on 2006/07/27 23:22:42 UTC
Re: svn commit: r426203 - in /maven/doxia/trunk/doxia-sandbox/doxia-book:
./ src/main/java/org/apache/maven/doxia/book/services/indexer/ src/main/java/org/apache/maven/doxia/book/services/renderer/
src/main/java/org/apache/maven/doxia/book/services/rendere...
vsiveton@apache.org wrote:
> Author: vsiveton
> Date: Thu Jul 27 12:19:00 2006
> New Revision: 426203
>
> URL: http://svn.apache.org/viewvc?rev=426203&view=rev
> Log:
> o Improved the XdocBookRenderer, more like latex2html layout
> o Improved anchor links (see MSITE-168)
> o Added i18n support
> o Added javadoc, copyright stuff
> o Moved BookIndexerTest.java from main to test
> o Removed unused System.out.println()
>
[snip]
> public class BookIndexingSink
> extends SinkAdapter
> {
> private final static int TYPE_SECTION_1 = 1;
> +
> private final static int TYPE_SECTION_2 = 2;
> +
> private final static int TYPE_SECTION_3 = 3;
> +
> private final static int TYPE_SECTION_4 = 4;
> +
> private final static int TYPE_SECTION_5 = 5;
> +
> private final static int TYPE_DEFINED_TERM = 6;
> +
> private final static int TYPE_FIGURE = 7;
> +
> private final static int TYPE_TABLE = 8;
> +
> private final static int TITLE = 9;
>
> private int type;
>
> - // ----------------------------------------------------------------------
> - //
> - // ----------------------------------------------------------------------
> -
> private String title;
>
> private Stack stack = new Stack();
>
> + /**
> + * Default constructor
> + *
> + * @param sectionEntry
> + */
> public BookIndexingSink( IndexEntry sectionEntry )
> {
> stack.push( sectionEntry );
> }
These comments are pretty useless, I'd rather not sprinkle the code with
obvious comments.
[snip]
> -// public void definedTerm()
> -// {
> -// type = TYPE_DEFINED_TERM;
> -// }
> -//
> -// public void figureCaption()
> -// {
> -// type = TYPE_FIGURE;
> -// }
> -//
> -// public void tableCaption()
> -// {
> -// type = TYPE_TABLE;
> -// }
> + // public void definedTerm()
> + // {
> + // type = TYPE_DEFINED_TERM;
> + // }
> + //
> + // public void figureCaption()
> + // {
> + // type = TYPE_FIGURE;
> + // }
> + //
> + // public void tableCaption()
> + // {
> + // type = TYPE_TABLE;
> + // }
Any special reason for this other than you identing it by accident?
>
> public void text( String text )
> {
> IndexEntry entry;
>
> - switch( type )
> + switch ( type )
> {
> case TITLE:
> this.title = text;
> @@ -137,15 +168,7 @@
> // Sanitize the id. The most important step is to remove any blanks
> // -----------------------------------------------------------------------
>
> - String id = text;
> - id = id.toLowerCase();
> - id = id.replace( '\'', '_' );
> - id = id.replace( '\"', '_' );
> - id = id.replace( ' ', '_' );
> -
> - // -----------------------------------------------------------------------
> - //
> - // -----------------------------------------------------------------------
> + String id = HtmlTools.encodeId( text );
Ah, I knew it was somewhere.
> entry = new IndexEntry( peek(), id );
>
> @@ -162,18 +185,27 @@
> type = 0;
> }
>
> + /**
> + * Pushes an IndexEntry onto the top of this stack
> + *
> + * @param entry to put
> + */
> public void push( IndexEntry entry )
> {
> -// System.out.println( "push: " + entry.getId() );
> stack.push( entry );
> }
>
> + /**
> + * Removes the IndexEntry at the top of this stack
> + */
> public void pop()
> {
> -// System.out.println( "pop: " + peek().getId() );
> stack.pop();
> }
>
> + /**
> + * @return Looks at the IndexEntry at the top of this stack
> + */
> public IndexEntry peek()
> {
> return (IndexEntry) stack.peek();
>
> Modified: maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/XdocBookRenderer.java
> URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/XdocBookRenderer.java?rev=426203&r1=426202&r2=426203&view=diff
> ==============================================================================
> --- maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/XdocBookRenderer.java (original)
> +++ maven/doxia/trunk/doxia-sandbox/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/XdocBookRenderer.java Thu Jul 27 12:19:00 2006
> @@ -1,31 +1,56 @@
> package org.apache.maven.doxia.book.services.renderer;
>
> +/*
> + * Copyright 2006 The Apache Software Foundation.
> + *
> + * Licensed 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.File;
> +import java.io.FileNotFoundException;
> +import java.io.FileReader;
> +import java.io.FileWriter;
> +import java.io.IOException;
> +import java.util.ArrayList;
> +import java.util.Iterator;
> +import java.util.List;
> +import java.util.Locale;
> +
> import org.apache.maven.doxia.Doxia;
> -import org.apache.maven.doxia.module.xdoc.XdocSink;
> import org.apache.maven.doxia.book.BookDoxiaException;
> import org.apache.maven.doxia.book.context.BookContext;
> import org.apache.maven.doxia.book.context.IndexEntry;
> import org.apache.maven.doxia.book.model.BookModel;
> import org.apache.maven.doxia.book.model.Chapter;
> import org.apache.maven.doxia.book.model.Section;
> -import org.apache.maven.doxia.book.services.renderer.xdoc.XdocBookSink;
> +import org.apache.maven.doxia.book.services.renderer.xdoc.ChapterXdocBookSink;
> +import org.apache.maven.doxia.book.services.renderer.xdoc.IndexXdocBookSink;
> +import org.apache.maven.doxia.book.services.renderer.xdoc.SectionXdocBookSink;
> import org.apache.maven.doxia.editor.io.PipelineSink;
> +import org.apache.maven.doxia.module.HtmlTools;
> +import org.apache.maven.doxia.module.xdoc.XdocSink;
> import org.apache.maven.doxia.parser.ParseException;
> import org.apache.maven.doxia.parser.manager.ParserNotFoundException;
> import org.apache.maven.doxia.sink.Sink;
> +import org.codehaus.plexus.i18n.I18N;
> import org.codehaus.plexus.logging.AbstractLogEnabled;
> -
> -import java.io.FileNotFoundException;
> -import java.io.FileReader;
> -import java.io.FileWriter;
> -import java.io.IOException;
> -import java.io.File;
> -import java.util.ArrayList;
> -import java.util.Iterator;
> -import java.util.List;
> +import org.codehaus.plexus.util.StringUtils;
>
> /**
> + * An implementation of <code>BookRenderer</code> for Xdoc
> + *
> * @author <a href="mailto:trygvis@inamo.no">Trygve Laugstøl</a>
> + * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
> * @version $Id$
> * @plexus.component role-hint="xdoc"
> */
> @@ -38,6 +63,11 @@
> */
> private Doxia doxia;
>
> + /**
> + * @plexus.requirement
> + */
> + private I18N i18n;
> +
> // ----------------------------------------------------------------------
> // BookRenderer Implementation
> // ----------------------------------------------------------------------
> @@ -51,29 +81,50 @@
> {
> if ( !context.getOutputDirectory().mkdirs() )
> {
> - throw new BookDoxiaException(
> - "Could not make directory: " + context.getOutputDirectory().getAbsolutePath() + "." );
> + throw new BookDoxiaException( "Could not make directory: "
> + + context.getOutputDirectory().getAbsolutePath() + "." );
> }
> }
>
> - // -----------------------------------------------------------------------
> - //
> - // -----------------------------------------------------------------------
> -
I like these, they are separators between logical parts of the method.
> renderBook( book, context );
> }
>
> // -----------------------------------------------------------------------
> + // Protected
> + // -----------------------------------------------------------------------
> +
> + /**
> + * Gets a trimmed String for the given key from the resource bundle defined by Plexus.
> + *
> + * @param key the key for the desired string
> + * @return the string for the given key
> + * @throws IllegalArgumentException if the parameter is empty.
> + */
> + protected String getString( String key )
> + {
> + if ( StringUtils.isEmpty( key ) )
> + {
> + throw new IllegalArgumentException( "The key cannot be empty" );
> + }
> +
> + // TODO Handle locale
> + return i18n.getString( "book-renderer", Locale.getDefault(), key ).trim();
> + }
> +
> + // -----------------------------------------------------------------------
> // Private
> // -----------------------------------------------------------------------
>
> + /**
> + * Render the book, ie the book index and all chapter index
> + *
> + * @param book
> + * @param context
> + * @throws BookDoxiaException if any
> + */
> private void renderBook( BookModel book, BookContext context )
> throws BookDoxiaException
> {
> - // -----------------------------------------------------------------------
> - // Render the book index.xml page
> - // -----------------------------------------------------------------------
> -
> File index = new File( context.getOutputDirectory(), "index.xml" );
>
> try
> @@ -86,12 +137,6 @@
> }
>
> // -----------------------------------------------------------------------
> - // Render the index.html files for each chapter
> - // -----------------------------------------------------------------------
> -
> - // TODO: Implement
> -
> - // -----------------------------------------------------------------------
> // Render all the chapters
> // -----------------------------------------------------------------------
Ditto here about the commends. They explain the flow in the code.
> @@ -105,14 +150,20 @@
> }
> }
>
> - // -----------------------------------------------------------------------
> - // Index Rendering
> - // -----------------------------------------------------------------------
> -
I
> + /**
> + * Write the book index, ie a TOC
> + *
> + * @param index
> + * @param book
> + * @param context
> + * @throws IOException if any
> + */
> private void writeBookIndex( File index, BookModel book, BookContext context )
> throws IOException
> {
[snip]
> +
> + /**
> + * Gets a trimmed String for the given key from the resource bundle defined by Plexus.
> + *
> + * @param key the key for the desired string
> + * @return the string for the given key
> + * @throws IllegalArgumentException if the parameter is empty.
> + */
> + protected String getString( String key )
> + {
> + if ( StringUtils.isEmpty( key ) )
> + {
> + throw new IllegalArgumentException( "The key cannot be empty" );
> + }
> +
> + return i18n.getString( "book-renderer", Locale.getDefault(), key ).trim();
> + }
This should probably be moved to the i18n component or at least to a
I18nUtil.
[snip]
--
Trygve