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
+ "howto-build.html" 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'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"