Author: jdcasey
Date: Wed Aug 22 09:30:06 2007
New Revision: 568690

URL: http://svn.apache.org/viewvc?rev=568690&view=rev
Log:
[DOXIA-116] Adding support for book-style rendering (see the sandbox code for 
the actual book stuff).

Added:
    
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookBookSinkTest.java
   (with props)
    
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/resources/book.xml
   (with props)
Modified:
    
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-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocbookMarkup.java

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=568690&r1=568689&r2=568690&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
 Wed Aug 22 09:30:06 2007
@@ -128,8 +128,22 @@
     /** tableHasGrid. */
     private boolean tableHasGrid;
 
+    // books have chapters and no headers
+    private boolean isBook;
+
+    private boolean skip;
+
+    private boolean outputBookHead;
+
     // -----------------------------------------------------------------------
 
+    public DocBookSink( Writer out, boolean isBook )
+    {
+        this( out );
+        this.isBook = isBook;
+        this.outputBookHead = true;
+    }
+
     /**
      * @param writer the default writer.
      */
@@ -512,6 +526,8 @@
     {
         resetState();
 
+        skip = isBook && !outputBookHead;
+
         if ( xmlMode )
         {
             markup( "<?xml version=\"1.0\"" );
@@ -528,7 +544,15 @@
         }
 
         String pubId;
-        markup( "<!DOCTYPE article PUBLIC" );
+        if ( isBook )
+        {
+            markup( "<!DOCTYPE book PUBLIC" );
+        }
+        else
+        {
+            markup( "<!DOCTYPE article PUBLIC" );
+        }
+        
         if ( publicId == null )
         {
             if ( xmlMode )
@@ -565,7 +589,15 @@
             att.addAttribute( Attribute.LANG, lang );
         }
 
-        writeStartTag( ARTICLE_TAG, att );
+        if ( isBook )
+        {
+            skip = false;
+            writeStartTag( CHAPTER_TAG, att );
+        }
+        else
+        {
+            writeStartTag( ARTICLE_TAG, att );
+        }
     }
 
     /**
@@ -576,8 +608,18 @@
     {
         if ( hasTitle )
         {
-            writeEndTag( ARTICLEINFO_TAG );
+            if ( isBook )
+            {
+                writeEndTag( BOOKINFO_TAG );
+            }
+            else
+            {
+                writeEndTag( ARTICLEINFO_TAG );
+            }
+            
             hasTitle = false;
+            skip = false;
+            outputBookHead = false;
         }
     }
 
@@ -588,7 +630,14 @@
      */
     public void title()
     {
-        writeStartTag( ARTICLEINFO_TAG );
+        if ( isBook )
+        {
+            writeStartTag( BOOKINFO_TAG );
+        }
+        else
+        {
+            writeStartTag( ARTICLEINFO_TAG );
+        }
 
         hasTitle = true;
         writeStartTag( Tag.TITLE );
@@ -649,10 +698,37 @@
      */
     public void body_()
     {
-        writeEndTag( ARTICLE_TAG );
+        if ( isBook )
+        {
+            writeEndTag( CHAPTER_TAG );
+        }
+        else
+        {
+            writeEndTag( ARTICLE_TAG );
+        }
+        
         out.flush();
         resetState();
     }
+    
+    /**
+     * [EMAIL PROTECTED]
+     * @see DocbookMarkup#BOOK_TAG
+     */
+    public void book()
+    {
+        writeStartTag( BOOK_TAG );
+    }
+    
+    /**
+     * [EMAIL PROTECTED]
+     * @see DocbookMarkup#BOOK_TAG
+     */
+    public void book_()
+    {
+        writeEndTag( BOOK_TAG );
+        out.flush();
+    }
 
     /**
      * [EMAIL PROTECTED]
@@ -1428,7 +1504,10 @@
      */
     protected void markup( String text )
     {
-        out.write( text, /*preserveSpace*/ true );
+        if ( !skip )
+        {
+            out.write( text, /*preserveSpace*/ true );
+        }
     }
 
     /**
@@ -1438,7 +1517,10 @@
      */
     protected void content( String text )
     {
-        out.write( escapeSGML( text, xmlMode ), /*preserveSpace*/ false );
+        if ( !skip )
+        {
+            out.write( escapeSGML( text, xmlMode ), /*preserveSpace*/ false );
+        }
     }
 
     /**
@@ -1448,7 +1530,10 @@
      */
     protected void verbatimContent( String text )
     {
-        out.write( escapeSGML( text, xmlMode ), /*preserveSpace*/ true );
+        if ( !skip )
+        {
+            out.write( escapeSGML( text, xmlMode ), /*preserveSpace*/ true );
+        }
     }
 
     // -----------------------------------------------------------------------

Modified: 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocbookMarkup.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/DocbookMarkup.java?rev=568690&r1=568689&r2=568690&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocbookMarkup.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocbookMarkup.java
 Wed Aug 22 09:30:06 2007
@@ -56,7 +56,7 @@
             return "article";
         }
     };
-
+    
     /** Docbook tag for <code>articleinfo</code> */
     Tag ARTICLEINFO_TAG = new Tag()
     {
@@ -64,6 +64,36 @@
         public String toString()
         {
             return "articleinfo";
+        }
+    };
+
+    /** Docbook tag for <code>book</code> */
+    Tag BOOK_TAG = new Tag()
+    {
+        /** [EMAIL PROTECTED] */
+        public String toString()
+        {
+            return "book";
+        }
+    };
+
+    /** Docbook tag for <code>bookinfo</code> */
+    Tag BOOKINFO_TAG = new Tag()
+    {
+        /** [EMAIL PROTECTED] */
+        public String toString()
+        {
+            return "bookinfo";
+        }
+    };
+
+    /** Docbook tag for <code>chapter</code> */
+    Tag CHAPTER_TAG = new Tag()
+    {
+        /** [EMAIL PROTECTED] */
+        public String toString()
+        {
+            return "chapter";
         }
     };
 

Added: 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookBookSinkTest.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookBookSinkTest.java?rev=568690&view=auto
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookBookSinkTest.java
 (added)
+++ 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookBookSinkTest.java
 Wed Aug 22 09:30:06 2007
@@ -0,0 +1,40 @@
+package org.apache.maven.doxia.module.docbook;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+
+import org.apache.maven.doxia.parser.Parser;
+import org.apache.maven.doxia.sink.AbstractSinkTestCase;
+import org.apache.maven.doxia.sink.Sink;
+
+/**
+ * Test the book path of the DockBook sink
+ * @author eredmond
+ */
+public class DocBookBookSinkTest extends AbstractSinkTestCase
+{
+    protected String outputExtension()
+    {
+        return "docbook";
+    }
+
+    protected Parser createParser()
+    {
+        return new DocBookParser();
+    }
+
+    protected Sink createSink() throws Exception
+    {
+        return new DocBookSink( getTestWriter(), true );
+    }
+
+    protected Reader getTestReader() throws Exception
+    {
+        InputStream is = 
Thread.currentThread().getContextClassLoader().getResourceAsStream( "book.xml" 
);
+
+        InputStreamReader reader = new InputStreamReader( is );
+
+        return reader;
+    }
+}

Propchange: 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookBookSinkTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookBookSinkTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/resources/book.xml
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/resources/book.xml?rev=568690&view=auto
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/resources/book.xml
 (added)
+++ 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/resources/book.xml
 Wed Aug 22 09:30:06 2007
@@ -0,0 +1,134 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+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.
+-->
+
+<chapter id="index">
+  <section id="intro">
+    <title>Introduction</title>
+
+    <para>This document aims to help new geotools developers get up to speed
+    and track practices of existing developers in order to keep the project
+    consistent.</para>
+
+    <para>If you feel something is missing, feel free to contribute a new
+    section.</para>
+  </section>
+
+  <section id="design">
+    <title>Design</title>
+    <figure>
+        <title>Geotools Logo</title>
+        <mediaobject>
+            <imageobject>
+                <imagedata fileref="images/developersguide/geotools_logo.png"
+                    format="PNG"/>
+                </imageobject>
+            <textobject><phrase>Geotools Logo</phrase></textobject>
+        </mediaobject>
+    </figure>
+
+    <para>To do: Explain</para><itemizedlist><listitem><para>Key design 
structure
+    (core interfaces, data sources, rendering, 
tools)</para></listitem><listitem><para>Design
+    Drivers (Our design goals: modular, derives structure from netbeans,
+    support multiple version of java, 
..)</para></listitem><listitem><para>Directory
+    
structure</para></listitem><listitem><para></para></listitem></itemizedlist>
+  </section>
+
+  <section id="development">
+    <title>Development</title>
+
+    <section id="building">
+      <title>Building</title>
+
+      <para>To do:</para><itemizedlist><listitem><para>using 
ant</para></listitem><listitem><para>what
+      ant checks</para></listitem><listitem><para>insert the
+      &#34;howto-build.html&#34; doc into 
here</para></listitem><listitem><para></para></listitem></itemizedlist>
+    </section>
+
+    <section id="cvs">
+      <title>Code Versioning (using CVS)</title>
+
+      <para>To do:</para><itemizedlist><listitem><para>Point to sourceforge 
CVS howto
+      links.</para></listitem><listitem><para>Also point to some HOWTOs for
+      windows users.</para></listitem><listitem><para>What is acceptable to
+      commit to CVS, what is not. (Ie, code should 
compile)</para></listitem><listitem><para>Talk
+      about version numbering convention, use of branches, etc (if we decide
+      to do this).</para></listitem></itemizedlist>
+
+      <para>To do:</para>
+    </section>
+
+    <section id="CodingStandards">
+      <title>Coding Standards</title>
+
+      <para>To do:</para><itemizedlist><listitem><para>Using Sun&#39;s coding
+      standard, need to note any exceptions to 
it.</para></listitem><listitem><para>Note
+      the auto checking of coding 
standards.</para></listitem><listitem><para>Javadocs</para></listitem><listitem><para></para></listitem></itemizedlist>
+    </section>
+
+    <section id="templates">
+      <title>Template File</title>
+
+      <para>To do:</para><itemizedlist><listitem><para>Provide a template 
file.</para></listitem><listitem><para>Link
+      it to sections explaining the different parts of the 
template.</para></listitem><listitem><para>Include
+      headers, footers, example logging, example coding style, CVS key tags,
+      sample 
javadocs.</para></listitem><listitem><para></para></listitem></itemizedlist>
+    </section>
+
+    <section id="logging">
+      <title>Logging</title>
+
+      <para>To do:</para><itemizedlist><listitem><para>Talk about log4j, links 
to</para></listitem><listitem><para></para></listitem><listitem><para></para></listitem><listitem><para></para></listitem></itemizedlist>
+    </section>
+
+    <section id="testing">
+      <title>Testing</title>
+
+      <para>To do:</para><itemizedlist><listitem><para>Explain use of junit. 
Might be
+      a link to another web 
site.</para></listitem><listitem><para></para></listitem><listitem><para></para></listitem><listitem><para></para></listitem></itemizedlist>
+    </section>
+
+    <section>
+      <title>Documentation</title>
+
+      <para>To do:</para><itemizedlist><listitem><para>Talk about docbook, why 
we
+      decided to use it (most commonly used format of LDP, converts to
+      multiple formats, tools coming which can support it. Need to mention
+      which version of docbook we are 
using.</para></listitem><listitem><para>Mention
+      tools that can be used.</para></listitem><listitem><para>Links to
+      docbook references.</para></listitem><listitem><para>Process for
+      updating this document.</para></listitem><listitem><para>How to use ant
+      tools to build doc.</para></listitem></itemizedlist>
+    </section>
+  </section>
+
+  <section id="tools">
+    <title>Development Tools</title>
+
+    <section id="netbeans">
+      <title>Netbeans</title>
+
+      <para>To do:</para><itemizedlist><listitem><para>Where to get 
it.</para></listitem><listitem><para>Aim
+      is to make geotools a module within 
Netbeans</para></listitem><listitem><para>How
+      to setup getools to fit the multiple directory 
structure</para></listitem><listitem><para>The
+      extra Netbeans modules that are useful and should be 
downloaded.</para></listitem></itemizedlist>
+    </section>
+  </section>
+</chapter>
+

Propchange: 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/resources/book.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/resources/book.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"


Reply via email to