changeset 0:f8b1ea49d065

Initial version of crude HTML to WikiText converter. Customized for converting HTML files from DEC Document into Wiki markup.
author smith@nwoca.org
date Fri, 12 May 2006 16:45:42 -0400
parents
children b6e94d49a9a9
files .cvsignore build.xml manifest.mf nbproject/.cvsignore nbproject/build-impl.xml nbproject/genfiles.properties nbproject/project.properties nbproject/project.xml src/org/nwoca/ssdt/tools/html2wiki/BadTableDataTransformer.java src/org/nwoca/ssdt/tools/html2wiki/BadTableRowTransformer.java src/org/nwoca/ssdt/tools/html2wiki/ChapterTransformer.java src/org/nwoca/ssdt/tools/html2wiki/CloseTagTransformer.java src/org/nwoca/ssdt/tools/html2wiki/DeleteTransformer.java src/org/nwoca/ssdt/tools/html2wiki/Html2Wiki.java src/org/nwoca/ssdt/tools/html2wiki/PreTagTransformer.java src/org/nwoca/ssdt/tools/html2wiki/ReplaceTransformer.java src/org/nwoca/ssdt/tools/html2wiki/TagTransformer.java src/org/nwoca/ssdt/tools/html2wiki/Transformer.java test/org/nwoca/ssdt/tools/html2wiki/Html2WikiTest.java
diffstat 19 files changed, 1311 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.cvsignore	Fri May 12 16:45:42 2006 -0400
@@ -0,0 +1,2 @@
+build
+dist
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build.xml	Fri May 12 16:45:42 2006 -0400
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- You may freely edit this file. See commented blocks below for -->
+<!-- some examples of how to customize the build. -->
+<!-- (If you delete it and reopen the project it will be recreated.) -->
+<project name="html2wiki" default="default" basedir=".">
+    <description>Builds, tests, and runs the project html2wiki.</description>
+    <import file="nbproject/build-impl.xml"/>
+    
+    <property name="project.name"    value="html2wiki" />
+    <property name="project.version" value="0.1-0" />
+
+    <property file="../../build.global"/>    
+    <property name="ssdt.home.dir" value="../../"/>
+    <property name="tools.dir" value="${ssdt.home.dir}/Tools"/>    
+    <import file="${tools.dir}/jalopy/ant/jalopy-ant.xml" optional="true"/>
+    <import file="${tools.dir}/checkstyle/ant/checkstyle-ant.xml"/>
+    
+    <!--
+
+    There exist several targets which are by default empty and which can be 
+    used for execution of your tasks. These targets are usually executed 
+    before and after some main targets. They are: 
+
+      -pre-init:                 called before initialization of project properties
+      -post-init:                called after initialization of project properties
+      -pre-compile:              called before javac compilation
+      -post-compile:             called after javac compilation
+      -pre-compile-single:       called before javac compilation of single file
+      -post-compile-single:      called after javac compilation of single file
+      -pre-compile-test:         called before javac compilation of JUnit tests
+      -post-compile-test:        called after javac compilation of JUnit tests
+      -pre-compile-test-single:  called before javac compilation of single JUnit test
+      -post-compile-test-single: called after javac compilation of single JUunit test
+      -pre-jar:                  called before JAR building
+      -post-jar:                 called after JAR building
+      -post-clean:               called after cleaning build products
+
+    (Targets beginning with '-' are not intended to be called on their own.)
+
+    Example of inserting an obfuscator after compilation could look like this:
+
+        <target name="-post-compile">
+            <obfuscate>
+                <fileset dir="${build.classes.dir}"/>
+            </obfuscate>
+        </target>
+
+    For list of available properties check the imported 
+    nbproject/build-impl.xml file. 
+
+
+    Another way to customize the build is by overriding existing main targets.
+    The targets of interest are: 
+
+      -init-macrodef-javac:     defines macro for javac compilation
+      -init-macrodef-junit:     defines macro for junit execution
+      -init-macrodef-debug:     defines macro for class debugging
+      -init-macrodef-java:      defines macro for class execution
+      -do-jar-with-manifest:    JAR building (if you are using a manifest)
+      -do-jar-without-manifest: JAR building (if you are not using a manifest)
+      run:                      execution of project 
+      -javadoc-build:           Javadoc generation
+      test-report:              JUnit report generation
+
+    An example of overriding the target for project execution could look like this:
+
+        <target name="run" depends="html2wiki-impl.jar">
+            <exec dir="bin" executable="launcher.exe">
+                <arg file="${dist.jar}"/>
+            </exec>
+        </target>
+
+    Notice that the overridden target depends on the jar target and not only on 
+    the compile target as the regular run target does. Again, for a list of available 
+    properties which you can use, check the target you are overriding in the
+    nbproject/build-impl.xml file. 
+
+    -->
+<!--    <target name="-pre-compile-single">
+        <antcall target="jalopy-single"/>
+    </target>
+-->
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/manifest.mf	Fri May 12 16:45:42 2006 -0400
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+X-COMMENT: Main-Class will be added automatically by build
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nbproject/.cvsignore	Fri May 12 16:45:42 2006 -0400
@@ -0,0 +1,1 @@
+private
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nbproject/build-impl.xml	Fri May 12 16:45:42 2006 -0400
@@ -0,0 +1,541 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+*** GENERATED FROM project.xml - DO NOT EDIT  ***
+***         EDIT ../build.xml INSTEAD         ***
+
+For the purpose of easier reading the script
+is divided into following sections:
+
+  - initialization
+  - compilation
+  - jar
+  - execution
+  - debugging
+  - javadoc
+  - junit compilation
+  - junit execution
+  - junit debugging
+  - applet
+  - cleanup
+
+-->
+<project name="html2wiki-impl" default="default" basedir=".." xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:j2seproject2="http://www.netbeans.org/ns/j2se-project/2" xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1">
+    <target name="default" depends="test,jar,javadoc" description="Build and test whole project."/>
+    <!-- 
+    ======================
+    INITIALIZATION SECTION 
+    ======================
+    -->
+    <target name="-pre-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="-init-private" depends="-pre-init">
+        <property file="nbproject/private/private.properties"/>
+    </target>
+    <target name="-init-user" depends="-pre-init,-init-private">
+        <property file="${user.properties.file}"/>
+        <!-- The two properties below are usually overridden -->
+        <!-- by the active platform. Just a fallback. -->
+        <property name="default.javac.source" value="1.4"/>
+        <property name="default.javac.target" value="1.4"/>
+    </target>
+    <target name="-init-project" depends="-pre-init,-init-private,-init-user">
+        <property file="nbproject/project.properties"/>
+    </target>
+    <target name="-do-init" depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property">
+        <available file="${manifest.file}" property="manifest.available"/>
+        <condition property="manifest.available+main.class">
+            <and>
+                <isset property="manifest.available"/>
+                <isset property="main.class"/>
+                <not>
+                    <equals arg1="${main.class}" arg2="" trim="true"/>
+                </not>
+            </and>
+        </condition>
+        <condition property="manifest.available+main.class+mkdist.available">
+            <and>
+                <istrue value="${manifest.available+main.class}"/>
+                <isset property="libs.CopyLibs.classpath"/>
+            </and>
+        </condition>
+        <condition property="have.tests">
+            <or>
+                <available file="${test.src.dir}"/>
+            </or>
+        </condition>
+        <condition property="have.sources">
+            <or>
+                <available file="${src.dir}"/>
+            </or>
+        </condition>
+        <condition property="netbeans.home+have.tests">
+            <and>
+                <isset property="netbeans.home"/>
+                <isset property="have.tests"/>
+            </and>
+        </condition>
+        <condition property="no.javadoc.preview">
+            <isfalse value="${javadoc.preview}"/>
+        </condition>
+        <property name="run.jvmargs" value=""/>
+        <property name="javac.compilerargs" value=""/>
+        <property name="work.dir" value="${basedir}"/>
+        <condition property="no.deps">
+            <and>
+                <istrue value="${no.dependencies}"/>
+            </and>
+        </condition>
+        <property name="javac.debug" value="true"/>
+        <property name="javadoc.preview" value="true"/>
+    </target>
+    <target name="-post-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="-init-check" depends="-pre-init,-init-private,-init-user,-init-project,-do-init">
+        <fail unless="src.dir">Must set src.dir</fail>
+        <fail unless="test.src.dir">Must set test.src.dir</fail>
+        <fail unless="build.dir">Must set build.dir</fail>
+        <fail unless="dist.dir">Must set dist.dir</fail>
+        <fail unless="build.classes.dir">Must set build.classes.dir</fail>
+        <fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail>
+        <fail unless="build.test.classes.dir">Must set build.test.classes.dir</fail>
+        <fail unless="build.test.results.dir">Must set build.test.results.dir</fail>
+        <fail unless="build.classes.excludes">Must set build.classes.excludes</fail>
+        <fail unless="dist.jar">Must set dist.jar</fail>
+    </target>
+    <target name="-init-macrodef-property">
+        <macrodef name="property" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute name="name"/>
+            <attribute name="value"/>
+            <sequential>
+                <property name="@{name}" value="${@{value}}"/>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-javac">
+        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute name="srcdir" default="${src.dir}"/>
+            <attribute name="destdir" default="${build.classes.dir}"/>
+            <attribute name="classpath" default="${javac.classpath}"/>
+            <attribute name="debug" default="${javac.debug}"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <javac srcdir="@{srcdir}" destdir="@{destdir}" debug="@{debug}" deprecation="${javac.deprecation}" source="${javac.source}" target="${javac.target}" includeantruntime="false">
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <compilerarg line="${javac.compilerargs}"/>
+                    <customize/>
+                </javac>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-junit">
+        <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute name="includes" default="**/*Test.java"/>
+            <sequential>
+                <junit showoutput="true" fork="true" dir="${basedir}" failureproperty="tests.failed" errorproperty="tests.failed">
+                    <batchtest todir="${build.test.results.dir}">
+                        <fileset dir="${test.src.dir}" includes="@{includes}"/>
+                    </batchtest>
+                    <classpath>
+                        <path path="${run.test.classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper type="glob" from="test-sys-prop.*" to="*"/>
+                    </syspropertyset>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                    <jvmarg line="${run.jvmargs}"/>
+                </junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-nbjpda">
+        <macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute name="name" default="${main.class}"/>
+            <attribute name="classpath" default="${debug.classpath}"/>
+            <attribute name="stopclassname" default=""/>
+            <sequential>
+                <nbjpdastart transport="dt_socket" addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}">
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                </nbjpdastart>
+            </sequential>
+        </macrodef>
+        <macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute name="dir" default="${build.classes.dir}"/>
+            <sequential>
+                <nbjpdareload>
+                    <fileset includes="${fix.includes}*.class" dir="@{dir}"/>
+                </nbjpdareload>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-debug">
+        <macrodef name="debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute name="classname" default="${main.class}"/>
+            <attribute name="classpath" default="${debug.classpath}"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <java fork="true" classname="@{classname}" dir="${work.dir}">
+                    <jvmarg value="-Xdebug"/>
+                    <jvmarg value="-Xnoagent"/>
+                    <jvmarg value="-Djava.compiler=none"/>
+                    <jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
+                    <jvmarg line="${run.jvmargs}"/>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="run-sys-prop."/>
+                        <mapper type="glob" from="run-sys-prop.*" to="*"/>
+                    </syspropertyset>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-java">
+        <macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute name="classname" default="${main.class}"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <java fork="true" classname="@{classname}" dir="${work.dir}">
+                    <jvmarg line="${run.jvmargs}"/>
+                    <classpath>
+                        <path path="${run.classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="run-sys-prop."/>
+                        <mapper type="glob" from="run-sys-prop.*" to="*"/>
+                    </syspropertyset>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-presetdef-jar">
+        <presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <jar jarfile="${dist.jar}" compress="${jar.compress}">
+                <j2seproject1:fileset dir="${build.classes.dir}"/>
+            </jar>
+        </presetdef>
+    </target>
+    <target name="init" depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-junit,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar"/>
+    <!--
+    ===================
+    COMPILATION SECTION
+    ===================
+    -->
+    <target name="deps-jar" depends="init" unless="no.deps"/>
+    <target name="-pre-pre-compile" depends="init,deps-jar">
+        <mkdir dir="${build.classes.dir}"/>
+    </target>
+    <target name="-pre-compile">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="-do-compile" depends="init,deps-jar,-pre-pre-compile,-pre-compile" if="have.sources">
+        <j2seproject3:javac/>
+        <copy todir="${build.classes.dir}">
+            <fileset dir="${src.dir}" excludes="${build.classes.excludes}"/>
+        </copy>
+    </target>
+    <target name="-post-compile">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="compile" depends="init,deps-jar,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project."/>
+    <target name="-pre-compile-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="-do-compile-single" depends="init,deps-jar,-pre-pre-compile">
+        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+        <j2seproject3:javac>
+            <customize>
+                <patternset includes="${javac.includes}"/>
+            </customize>
+        </j2seproject3:javac>
+    </target>
+    <target name="-post-compile-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="compile-single" depends="init,deps-jar,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single"/>
+    <!--
+    ====================
+    JAR BUILDING SECTION
+    ====================
+    -->
+    <target name="-pre-pre-jar" depends="init">
+        <dirname property="dist.jar.dir" file="${dist.jar}"/>
+        <mkdir dir="${dist.jar.dir}"/>
+    </target>
+    <target name="-pre-jar">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="-do-jar-without-manifest" depends="init,compile,-pre-pre-jar,-pre-jar" unless="manifest.available">
+        <j2seproject1:jar/>
+    </target>
+    <target name="-do-jar-with-manifest" depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available" unless="manifest.available+main.class">
+        <j2seproject1:jar manifest="${manifest.file}"/>
+    </target>
+    <target name="-do-jar-with-mainclass" depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class" unless="manifest.available+main.class+mkdist.available">
+        <j2seproject1:jar manifest="${manifest.file}">
+            <j2seproject1:manifest>
+                <j2seproject1:attribute name="Main-Class" value="${main.class}"/>
+            </j2seproject1:manifest>
+        </j2seproject1:jar>
+        <echo>To run this application from the command line without Ant, try:</echo>
+        <property name="build.classes.dir.resolved" location="${build.classes.dir}"/>
+        <property name="dist.jar.resolved" location="${dist.jar}"/>
+        <pathconvert property="run.classpath.with.dist.jar">
+            <path path="${run.classpath}"/>
+            <map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
+        </pathconvert>
+        <echo>java -cp "${run.classpath.with.dist.jar}" ${main.class}</echo>
+    </target>
+    <target name="-do-jar-with-libraries" depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class+mkdist.available">
+        <property name="build.classes.dir.resolved" location="${build.classes.dir}"/>
+        <pathconvert property="run.classpath.without.build.classes.dir">
+            <path path="${run.classpath}"/>
+            <map from="${build.classes.dir.resolved}" to=""/>
+        </pathconvert>
+        <pathconvert property="jar.classpath" pathsep=" ">
+            <path path="${run.classpath.without.build.classes.dir}"/>
+            <chainedmapper>
+                <flattenmapper/>
+                <globmapper from="*" to="lib/*"/>
+            </chainedmapper>
+        </pathconvert>
+        <taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" name="copylibs" classpath="${libs.CopyLibs.classpath}"/>
+        <copylibs manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}" jarfile="${dist.jar}" compress="${jar.compress}">
+            <fileset dir="${build.classes.dir}"/>
+            <manifest>
+                <attribute name="Main-Class" value="${main.class}"/>
+                <attribute name="Class-Path" value="${jar.classpath}"/>
+            </manifest>
+        </copylibs>
+        <echo>To run this application from the command line without Ant, try:</echo>
+        <property name="dist.jar.resolved" location="${dist.jar}"/>
+        <echo>java -jar "${dist.jar.resolved}"</echo>
+    </target>
+    <target name="-post-jar">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="jar" depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries,-post-jar" description="Build JAR."/>
+    <!--
+    =================
+    EXECUTION SECTION
+    =================
+    -->
+    <target name="run" depends="init,compile" description="Run a main class.">
+        <j2seproject1:java>
+            <customize>
+                <arg line="${application.args}"/>
+            </customize>
+        </j2seproject1:java>
+    </target>
+    <target name="run-single" depends="init,compile-single">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <j2seproject1:java classname="${run.class}"/>
+    </target>
+    <!--
+    =================
+    DEBUGGING SECTION
+    =================
+    -->
+    <target name="-debug-start-debugger" if="netbeans.home" depends="init">
+        <j2seproject1:nbjpdastart name="${debug.class}"/>
+    </target>
+    <target name="-debug-start-debuggee" depends="init,compile">
+        <j2seproject3:debug>
+            <customize>
+                <arg line="${application.args}"/>
+            </customize>
+        </j2seproject3:debug>
+    </target>
+    <target name="debug" if="netbeans.home" depends="init,compile,-debug-start-debugger,-debug-start-debuggee" description="Debug project in IDE."/>
+    <target name="-debug-start-debugger-stepinto" if="netbeans.home" depends="init">
+        <j2seproject1:nbjpdastart stopclassname="${main.class}"/>
+    </target>
+    <target name="debug-stepinto" if="netbeans.home" depends="init,compile,-debug-start-debugger-stepinto,-debug-start-debuggee"/>
+    <target name="-debug-start-debuggee-single" if="netbeans.home" depends="init,compile-single">
+        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
+        <j2seproject3:debug classname="${debug.class}"/>
+    </target>
+    <target name="debug-single" if="netbeans.home" depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-single"/>
+    <target name="-pre-debug-fix" depends="init">
+        <fail unless="fix.includes">Must set fix.includes</fail>
+        <property name="javac.includes" value="${fix.includes}.java"/>
+    </target>
+    <target name="-do-debug-fix" if="netbeans.home" depends="init,-pre-debug-fix,compile-single">
+        <j2seproject1:nbjpdareload/>
+    </target>
+    <target name="debug-fix" if="netbeans.home" depends="init,-pre-debug-fix,-do-debug-fix"/>
+    <!--
+    ===============
+    JAVADOC SECTION
+    ===============
+    -->
+    <target name="-javadoc-build" depends="init">
+        <mkdir dir="${dist.javadoc.dir}"/>
+        <javadoc destdir="${dist.javadoc.dir}" source="${javac.source}" notree="${javadoc.notree}" use="${javadoc.use}" nonavbar="${javadoc.nonavbar}" noindex="${javadoc.noindex}" splitindex="${javadoc.splitindex}" author="${javadoc.author}" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}" private="${javadoc.private}" additionalparam="${javadoc.additionalparam}" failonerror="true" useexternalfile="true">
+            <classpath>
+                <path path="${javac.classpath}"/>
+            </classpath>
+            <sourcepath>
+                <pathelement location="${src.dir}"/>
+            </sourcepath>
+            <packageset dir="${src.dir}" includes="*/**"/>
+            <fileset dir="${src.dir}" includes="*.java"/>
+        </javadoc>
+    </target>
+    <target name="-javadoc-browse" if="netbeans.home" unless="no.javadoc.preview" depends="init,-javadoc-build">
+        <nbbrowse file="${dist.javadoc.dir}/index.html"/>
+    </target>
+    <target name="javadoc" depends="init,-javadoc-build,-javadoc-browse" description="Build Javadoc."/>
+    <!--
+    =========================
+    JUNIT COMPILATION SECTION
+    =========================
+    -->
+    <target name="-pre-pre-compile-test" if="have.tests" depends="init,compile">
+        <mkdir dir="${build.test.classes.dir}"/>
+    </target>
+    <target name="-pre-compile-test">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="-do-compile-test" if="have.tests" depends="init,compile,-pre-pre-compile-test,-pre-compile-test">
+        <j2seproject3:javac srcdir="${test.src.dir}" destdir="${build.test.classes.dir}" debug="true" classpath="${javac.test.classpath}"/>
+        <copy todir="${build.test.classes.dir}">
+            <fileset dir="${test.src.dir}" excludes="**/*.java"/>
+        </copy>
+    </target>
+    <target name="-post-compile-test">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="compile-test" depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-do-compile-test,-post-compile-test"/>
+    <target name="-pre-compile-test-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="-do-compile-test-single" if="have.tests" depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single">
+        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+        <j2seproject3:javac srcdir="${test.src.dir}" destdir="${build.test.classes.dir}" debug="true" classpath="${javac.test.classpath}">
+            <customize>
+                <patternset includes="${javac.includes}"/>
+            </customize>
+        </j2seproject3:javac>
+        <copy todir="${build.test.classes.dir}">
+            <fileset dir="${test.src.dir}" excludes="**/*.java"/>
+        </copy>
+    </target>
+    <target name="-post-compile-test-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="compile-test-single" depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single"/>
+    <!--
+    =======================
+    JUNIT EXECUTION SECTION
+    =======================
+    -->
+    <target name="-pre-test-run" if="have.tests" depends="init">
+        <mkdir dir="${build.test.results.dir}"/>
+    </target>
+    <target name="-do-test-run" if="have.tests" depends="init,compile-test,-pre-test-run">
+        <j2seproject3:junit/>
+    </target>
+    <target name="-post-test-run" if="have.tests" depends="init,compile-test,-pre-test-run,-do-test-run">
+        <fail if="tests.failed">Some tests failed; see details above.</fail>
+    </target>
+    <target name="test-report" if="have.tests" depends="init"/>
+    <target name="-test-browse" if="netbeans.home+have.tests" depends="init"/>
+    <target name="test" depends="init,compile-test,-pre-test-run,-do-test-run,test-report,-post-test-run,-test-browse" description="Run unit tests."/>
+    <target name="-pre-test-run-single" if="have.tests" depends="init">
+        <mkdir dir="${build.test.results.dir}"/>
+    </target>
+    <target name="-do-test-run-single" if="have.tests" depends="init,compile-test-single,-pre-test-run-single">
+        <fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
+        <j2seproject3:junit includes="${test.includes}"/>
+    </target>
+    <target name="-post-test-run-single" if="have.tests" depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single">
+        <fail if="tests.failed">Some tests failed; see details above.</fail>
+    </target>
+    <target name="test-single" depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test."/>
+    <!--
+    =======================
+    JUNIT DEBUGGING SECTION
+    =======================
+    -->
+    <target name="-debug-start-debuggee-test" if="have.tests" depends="init,compile-test">
+        <fail unless="test.class">Must select one file in the IDE or set test.class</fail>
+        <j2seproject3:debug classname="junit.textui.TestRunner" classpath="${debug.test.classpath}">
+            <customize>
+                <arg line="${test.class}"/>
+            </customize>
+        </j2seproject3:debug>
+    </target>
+    <target name="-debug-start-debugger-test" if="netbeans.home+have.tests" depends="init,compile-test">
+        <j2seproject1:nbjpdastart name="${test.class}" classpath="${debug.test.classpath}"/>
+    </target>
+    <target name="debug-test" depends="init,compile-test,-debug-start-debugger-test,-debug-start-debuggee-test"/>
+    <target name="-do-debug-fix-test" if="netbeans.home" depends="init,-pre-debug-fix,compile-test-single">
+        <j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
+    </target>
+    <target name="debug-fix-test" if="netbeans.home" depends="init,-pre-debug-fix,-do-debug-fix-test"/>
+    <!--
+    =========================
+    APPLET EXECUTION SECTION
+    =========================
+    -->
+    <target name="run-applet" depends="init,compile-single">
+        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
+        <j2seproject1:java classname="sun.applet.AppletViewer">
+            <customize>
+                <arg value="${applet.url}"/>
+            </customize>
+        </j2seproject1:java>
+    </target>
+    <!--
+    =========================
+    APPLET DEBUGGING  SECTION
+    =========================
+    -->
+    <target name="-debug-start-debuggee-applet" if="netbeans.home" depends="init,compile-single">
+        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
+        <j2seproject3:debug classname="sun.applet.AppletViewer">
+            <customize>
+                <arg value="${applet.url}"/>
+            </customize>
+        </j2seproject3:debug>
+    </target>
+    <target name="debug-applet" if="netbeans.home" depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-applet"/>
+    <!--
+    ===============
+    CLEANUP SECTION
+    ===============
+    -->
+    <target name="deps-clean" depends="init" unless="no.deps"/>
+    <target name="-do-clean" depends="init">
+        <delete dir="${build.dir}"/>
+        <delete dir="${dist.dir}"/>
+    </target>
+    <target name="-post-clean">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target name="clean" depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products."/>
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nbproject/genfiles.properties	Fri May 12 16:45:42 2006 -0400
@@ -0,0 +1,8 @@
+build.xml.data.CRC32=9d118728
+build.xml.script.CRC32=867757ba
+build.xml.stylesheet.CRC32=d5b6853a
+# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
+# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
+nbproject/build-impl.xml.data.CRC32=9d118728
+nbproject/build-impl.xml.script.CRC32=22ed648d
+nbproject/build-impl.xml.stylesheet.CRC32=99b91518
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nbproject/project.properties	Fri May 12 16:45:42 2006 -0400
@@ -0,0 +1,60 @@
+application.args=
+build.classes.dir=${build.dir}/classes
+build.classes.excludes=**/*.java,**/*.form
+# This directory is removed when the project is cleaned:
+build.dir=build
+build.generated.dir=${build.dir}/generated
+# Only compile against the classpath explicitly listed here:
+build.sysclasspath=ignore
+build.test.classes.dir=${build.dir}/test/classes
+build.test.results.dir=${build.dir}/test/results
+debug.classpath=\
+    ${run.classpath}
+debug.test.classpath=\
+    ${run.test.classpath}
+# This directory is removed when the project is cleaned:
+dist.dir=dist
+dist.jar=${dist.dir}/html2wiki.jar
+dist.javadoc.dir=${dist.dir}/javadoc
+jar.compress=false
+javac.classpath=\
+    ${libs.commons-io-1.2.classpath}
+# Space-separated list of extra javac options
+javac.compilerargs=-Xlint:unchecked
+javac.deprecation=false
+javac.source=1.5
+javac.target=1.5
+javac.test.classpath=\
+    ${javac.classpath}:\
+    ${build.classes.dir}:\
+    ${libs.junit.classpath}
+javadoc.additionalparam=
+javadoc.author=false
+javadoc.encoding=
+javadoc.noindex=false
+javadoc.nonavbar=false
+javadoc.notree=false
+javadoc.private=false
+javadoc.splitindex=true
+javadoc.use=true
+javadoc.version=false
+javadoc.windowtitle=
+# Property libs.commons-io-1.2.classpath is set here just to make sharing of project simpler.
+# The library definition has always preference over this property.
+libs.commons-io-1.2.classpath=../shared/commons-io-1.2/commons-io-1.2.jar
+main.class=org.nwoca.ssdt.tools.html2wiki.Html2Wiki
+manifest.file=manifest.mf
+meta.inf.dir=${src.dir}/META-INF
+platform.active=default_platform
+run.classpath=\
+    ${javac.classpath}:\
+    ${build.classes.dir}
+# Space-separated list of JVM arguments used when running the project
+# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
+# or test-sys-prop.name=value to set system properties for unit tests):
+run.jvmargs=
+run.test.classpath=\
+    ${javac.test.classpath}:\
+    ${build.test.classes.dir}
+src.dir=src
+test.src.dir=test
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nbproject/project.xml	Fri May 12 16:45:42 2006 -0400
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+    <type>org.netbeans.modules.java.j2seproject</type>
+    <configuration>
+        <data xmlns="http://www.netbeans.org/ns/j2se-project/3">
+            <name>html2wiki</name>
+            <minimum-ant-version>1.6.5</minimum-ant-version>
+            <source-roots>
+                <root id="src.dir"/>
+            </source-roots>
+            <test-roots>
+                <root id="test.src.dir"/>
+            </test-roots>
+        </data>
+    </configuration>
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org/nwoca/ssdt/tools/html2wiki/BadTableDataTransformer.java	Fri May 12 16:45:42 2006 -0400
@@ -0,0 +1,55 @@
+/*
+ * CloseTagTransformer.java
+ *
+ * Created on May 10, 2006, 10:42 AM
+ *
+ * To change this template, choose Tools | Template Manager
+ * and open the template in the editor.
+ */
+
+package org.nwoca.ssdt.tools.html2wiki;
+
+import java.util.regex.*;
+/**
+ *
+ * @author SMITH
+ */
+public class BadTableDataTransformer implements Transformer {
+    
+    private Pattern startPattern = Pattern.compile("<td>");;
+    private Pattern terminationPattern = Pattern.compile("<td>|<tr>|</table>");
+    private Pattern endTRPattern = Pattern.compile("</td>");
+    
+    private String terminator = "</td>";
+    
+    public BadTableDataTransformer() {
+    }
+    
+    public void apply(StringBuffer buffer) {
+        Matcher startMatcher = startPattern.matcher(buffer);
+        Matcher terminateMatcher = terminationPattern.matcher(buffer);
+        Matcher checkTerminator = endTRPattern.matcher(buffer);
+        
+        int index = 0;
+        while (startMatcher.find(index)) {
+            if(terminateMatcher.find(startMatcher.end())) {
+                
+                checkTerminator.region(startMatcher.end(),terminateMatcher.start());
+                if (!checkTerminator.find()) {
+                    
+                    buffer.insert(terminateMatcher.start(),terminator);
+                }
+                index = terminateMatcher.start();
+            } else {
+                index = startMatcher.end();
+            }
+            
+        }
+        
+    }
+    
+    public String toString() {
+        return "Closing: " + startPattern.pattern() + " with " + terminator;
+    }
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org/nwoca/ssdt/tools/html2wiki/BadTableRowTransformer.java	Fri May 12 16:45:42 2006 -0400
@@ -0,0 +1,59 @@
+/*
+ * CloseTagTransformer.java
+ *
+ * Created on May 10, 2006, 10:42 AM
+ *
+ * To change this template, choose Tools | Template Manager
+ * and open the template in the editor.
+ */
+
+package org.nwoca.ssdt.tools.html2wiki;
+
+import java.util.regex.*;
+/**
+ *
+ * @author SMITH
+ */
+public class BadTableRowTransformer implements Transformer {
+    
+    private Pattern startPattern = Pattern.compile("<tr>");;
+    private Pattern terminationPattern = Pattern.compile("<tr>|</table>");;
+    private Pattern endTRPattern = Pattern.compile("</tr>");
+    
+    private String terminator = "</tr>";
+    
+    /** Creates a new instance of CloseTagTransformer */
+    public BadTableRowTransformer() {
+    }
+    
+    public void apply(StringBuffer buffer) {
+        Matcher startMatcher = startPattern.matcher(buffer);
+        Matcher terminateMatcher = terminationPattern.matcher(buffer);
+        Matcher checkTerminator = endTRPattern.matcher(buffer);
+        
+        int index = 0;
+        
+        while (startMatcher.find(index)) {
+               
+            if(terminateMatcher.find(startMatcher.end())) {
+                
+                checkTerminator.region(startMatcher.start(),terminateMatcher.start());
+                if (!checkTerminator.find()) {
+                    
+                    buffer.insert(terminateMatcher.start(),terminator);
+                }
+                index = terminateMatcher.start();
+            } else {
+                index = startMatcher.end();
+            }
+            
+            
+        }
+        
+    }
+    
+    public String toString() {
+        return "Closing: " + startPattern.pattern() + " with " + terminator;
+    }
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org/nwoca/ssdt/tools/html2wiki/ChapterTransformer.java	Fri May 12 16:45:42 2006 -0400
@@ -0,0 +1,32 @@
+package org.nwoca.ssdt.tools.html2wiki;
+
+import java.util.regex.*;
+
+class ChapterTransformer implements Transformer {
+    private Pattern chapterPattern = Pattern.compile("^<hr size=5>.*?<h1>(.*?)</h1>",Pattern.MULTILINE + Pattern.DOTALL);
+    private String category;
+    public ChapterTransformer() {
+         
+    }
+    public ChapterTransformer(String category) {
+        this.category = category;
+    }
+    
+    public void apply(StringBuffer buffer) {
+        Matcher matcher = chapterPattern.matcher(buffer);
+        
+        boolean first = true;
+        while (matcher.find( 0 )) {
+            buffer.replace(matcher.start(),matcher.end(),
+                        "<chapter>" + matcher.group(1) +"</chapter>\n__TOC__" +
+                        (category == null ? "" : "\n[[Category:" + category + "]]"));
+            first = false;
+        }
+     
+    }
+        
+    public String toString() {
+        return "Replace Chapter markers";
+    }
+
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org/nwoca/ssdt/tools/html2wiki/CloseTagTransformer.java	Fri May 12 16:45:42 2006 -0400
@@ -0,0 +1,47 @@
+/*
+ * CloseTagTransformer.java
+ *
+ * Created on May 10, 2006, 10:42 AM
+ *
+ * To change this template, choose Tools | Template Manager
+ * and open the template in the editor.
+ */
+
+package org.nwoca.ssdt.tools.html2wiki;
+
+import java.util.regex.*;
+/**
+ *
+ * @author SMITH
+ */
+public class CloseTagTransformer implements Transformer {
+    
+    private Pattern startPattern;
+    private Pattern terminationPattern;
+    private String terminator;
+    
+    /** Creates a new instance of CloseTagTransformer */
+    public CloseTagTransformer(String startExp, String termExp, String terminator) {
+        this.startPattern = Pattern.compile(startExp);
+        this.terminationPattern = Pattern.compile(termExp);
+        this.terminator = terminator;
+    }
+
+    public void apply(StringBuffer buffer) {
+        Matcher startMatcher = startPattern.matcher(buffer);
+        Matcher terminateMatcher = terminationPattern.matcher(buffer);
+        boolean first = true;
+        while (startMatcher.find()) {
+            if(terminateMatcher.find(startMatcher.end())) {
+                buffer.insert(terminateMatcher.start(),terminator);
+            }
+            
+        }
+
+    }
+        
+    public String toString() {
+        return "Closing: " + startPattern.pattern() + " with " + terminator;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org/nwoca/ssdt/tools/html2wiki/DeleteTransformer.java	Fri May 12 16:45:42 2006 -0400
@@ -0,0 +1,30 @@
+package org.nwoca.ssdt.tools.html2wiki;
+
+import java.util.regex.*;
+
+class DeleteTransformer implements Transformer {
+    private Pattern delete;
+    
+    public DeleteTransformer(String regex, boolean multiLine) {
+        delete = Pattern.compile(regex, multiLine ? Pattern.MULTILINE : 0);
+    }
+    
+    public DeleteTransformer(String regex) {
+        this(regex,false);
+    }
+    
+    public void apply(StringBuffer buffer) {
+        Matcher matcher = delete.matcher(buffer);
+        
+        boolean first = true;
+        while (matcher.find(first ? 0 : matcher.start() )) {
+            buffer.delete(matcher.start(),matcher.end());
+            first = false;
+        }
+        
+    }
+    
+    public String toString() {
+        return "Delete: " + delete.pattern();
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org/nwoca/ssdt/tools/html2wiki/Html2Wiki.java	Fri May 12 16:45:42 2006 -0400
@@ -0,0 +1,207 @@
+package org.nwoca.ssdt.tools.html2wiki;
+/*
+ * Html2Wiki.java
+ *
+ * Created on May 9, 2006, 3:22 PM
+ *
+ */
+
+import java.io.*;
+import java.util.Collection;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Iterator;
+import org.apache.commons.io.FileSystemUtils;
+import org.apache.commons.io.FileUtils;
+import java.util.regex.*;
+import org.apache.commons.io.FilenameUtils;
+
+/**
+ * Converter to convert HTML documents into MediaWiki test.
+ *
+ * Heavily customized to handle HTML produced by DEC DOCUMENT
+ * SOFTARE doctype.  Breaks file into Chapters in the manner done
+ * by Document.  Needs modification to work with other HTML files.
+ *
+ * @author SMITH
+ */
+public class Html2Wiki {
+    
+    private StringBuffer buffer;
+    private Collection<Transformer> transformers;
+    private boolean converted = false;
+    private static String category;
+    
+    /** Creates a new instance of Html2Wiki. */
+    public Html2Wiki(String html) {
+        buffer = new StringBuffer(html);
+        transformers =  new ArrayList<Transformer>();
+        transformers.add(new PreTagTransformer());
+        transformers.add(new DeleteTransformer("^\\s",true));
+        transformers.add(new DeleteTransformer("<html>|</html>|<body>|</body>"));
+        transformers.add(new DeleteTransformer("<!--.*-->(\\n|\\r)*",true));
+        transformers.add(new DeleteTransformer("<a .*?>|</a>"));
+        transformers.add(new DeleteTransformer("(?m)^\\*"));
+        transformers.add(new DeleteTransformer("<blockquote>|</blockquote>"));
+        transformers.add(new DeleteTransformer("<p>"));
+        transformers.add(new DeleteTransformer("(?m)<br>$"));
+        transformers.add(new DeleteTransformer("<font .*?>|</font>"));
+        transformers.add(new CloseTagTransformer("<li>","(\n|\r)*(<li>|</ul>|</ol>|<ul>|<ol>)","\n</li>"));
+        transformers.add(new BadTableDataTransformer());
+        transformers.add(new BadTableRowTransformer());
+        transformers.add(new ReplaceTransformer("</td>","\n</td>"));
+        transformers.add(new ChapterTransformer(category));
+        transformers.add(new TagTransformer("<em>(.*?)</em>",    "''"));
+        transformers.add(new TagTransformer("<strong>(.*?)</strong>",    "'''"));
+        transformers.add(new TagTransformer("(?s)<kbd>(.*?)</kbd>",  "<tt>", "</tt>"));
+        transformers.add(new TagTransformer("<h1>(.*)</h1>",    "== ",      " =="));
+        transformers.add(new TagTransformer("<h2>(.*)</h2>",    "=== ",     " ==="));
+        transformers.add(new TagTransformer("<h3>(accessing the program|sample run|sample screens?|sample reports?)</[h|H]3>","=== ",    " ==="));
+        transformers.add(new TagTransformer("<h3>(.*)</H3>",    "",         ""));
+        transformers.add(new TagTransformer("<h3>(.*)</h3>",    "==== ",        " ===="));
+        transformers.add(new TagTransformer("<h4>(.*)</h4>",    "===== ",   " ====="));
+        transformers.add(new TagTransformer("<h5>(.*)</h5>",    "====== ",  " ======"));
+        transformers.add(new TagTransformer("<h6>(.*)</h6>",    "======= ", " ======="));
+        transformers.add(new DeleteTransformer("(?s)<hr.*?>"));
+     
+    }
+    
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String[] args) throws IOException {
+        
+        if (args.length == 0) {
+            System.out.println("Usage:");
+            System.out.println("  Html2Wiki {inputDirectory} [Category]");
+            System.out.println("      default is current directory");
+            System.out.println("      Processes all *.html files. ");
+            System.out.println("      Each 'chapter' written to *.wiki");
+            return;
+        }
+        
+        File inputs = new File(args[0]);
+        
+        if (args.length > 1) {
+            category = args[1];
+        }
+        
+        File[] inputFiles = inputs.listFiles(new HtmlFileFilter());
+        for (int i = 0; i < inputFiles.length; i++) {
+            
+            process(inputFiles[i]);
+            
+        }
+        
+    }
+    
+    protected static void process(File input) throws IOException {
+        
+        System.out.println(input.getAbsoluteFile());
+        
+        Html2Wiki converter = new Html2Wiki(FileUtils.readFileToString(input,null));
+        
+        
+        WikiChapter[] chapters = converter.getWikiChapters();
+        
+        System.out.format("Writing %d wiki files...\n",chapters.length);
+
+        StringBuffer wikiIndex = new StringBuffer();
+        wikiIndex.append("Contents:\n\n");
+        
+        for (int i = 0; i < chapters.length; i++) {
+            
+            wikiIndex.append("# [[" + chapters[i].getChapterName() + "]]\n");
+            FileUtils.writeStringToFile(new File(input.getParent(),
+                                        generateFilename(chapters[i].getChapterName())+".wiki"),
+                            chapters[i].getContents().toString(),
+                            null);
+            
+        }
+        System.out.println("Writing wikiIndex...");
+        
+        FileUtils.writeStringToFile(new File(FilenameUtils.removeExtension(input.getPath())+".wikiIndex"),wikiIndex.toString(),null);
+    }
+    
+    public static String generateFilename(String input) {
+        return input.replaceAll("\\\\|/|:|\\(|\\)","-");
+        
+    }
+    public String getWikiText() {
+        convert();
+        return buffer.toString();
+    }
+    
+    public WikiChapter[] getWikiChapters() {
+        
+        convert();
+        
+        List<WikiChapter> chapters = new ArrayList<WikiChapter>();
+        
+        Pattern chapterPat = Pattern.compile("<chapter>");
+        Matcher begin = chapterPat.matcher(buffer);
+        Matcher end = chapterPat.matcher(buffer);
+        
+        while(begin.find()) {
+            
+            
+            end.find(begin.end());
+            
+            Pattern chapterNamePat = Pattern.compile("<chapter>(.*?)</chapter>");
+            
+            Matcher chapterNameMatcher = chapterNamePat.matcher(buffer);
+            
+            String chapterName = chapterNameMatcher.find(begin.start()) ? chapterNameMatcher.group(1) : null;
+            
+            CharSequence contents = buffer.subSequence(chapterName == null ? begin.start() : chapterNameMatcher.end()
+            ,end.hitEnd() ? buffer.length() : end.start());
+            
+            chapters.add(new WikiChapter(chapterName,contents));
+            
+        }
+        return (WikiChapter[])chapters.toArray(new WikiChapter[]{});
+    }
+    
+    private void convert() {
+        
+        if(!converted) {
+            for (Transformer t : transformers) {
+                
+                System.out.println(".Applying: " + t);
+                t.apply(buffer);
+                
+            }
+        }
+        converted = true;
+    }
+    
+    private static class HtmlFileFilter implements FileFilter {
+        public boolean accept(File pathname) {
+            return pathname.getName().toLowerCase().matches("^.*\\.html$");
+        }
+        
+    }
+    private static class WikiChapter {
+        private String chapterName;
+        private CharSequence contents;
+        
+        public WikiChapter(String chapterName, CharSequence contents) {
+            this.chapterName = chapterName.replaceAll("\\\\|/|:|\\(|\\)","-").replaceAll("\\s+"," ").replaceAll("&amp;","and");
+            
+            this.contents = contents;
+        }
+        
+        public String getChapterName() {
+            return chapterName;
+        }
+        
+        public CharSequence getContents() {
+            return contents;
+        }
+        
+        public String toString() {
+            return "Chapter: " + chapterName + "\nContents: " + contents;
+        }
+    }
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org/nwoca/ssdt/tools/html2wiki/PreTagTransformer.java	Fri May 12 16:45:42 2006 -0400
@@ -0,0 +1,28 @@
+package org.nwoca.ssdt.tools.html2wiki;
+
+import java.util.regex.*;
+
+class PreTagTransformer implements Transformer {
+    private Pattern pattern = Pattern.compile("<pre>.*?</pre>",Pattern.MULTILINE + Pattern.DOTALL);
+    public PreTagTransformer() {
+         
+    }
+    
+    public void apply(StringBuffer buffer) {
+        Matcher matcher = pattern.matcher(buffer);
+        
+        boolean first = true;
+        while (matcher.find( first ? 0 : matcher.end())) {
+            String temp = buffer.substring(matcher.start(),matcher.end());
+            temp = temp.replaceAll("(?m)^\\s","\r&nbsp;");
+            buffer.replace(matcher.start(),matcher.end(),temp);
+            first = false;
+        }
+     
+    }
+        
+    public String toString() {
+        return "Preserving <pre> tag spacing";
+    }
+
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org/nwoca/ssdt/tools/html2wiki/ReplaceTransformer.java	Fri May 12 16:45:42 2006 -0400
@@ -0,0 +1,31 @@
+package org.nwoca.ssdt.tools.html2wiki;
+
+import java.util.regex.*;
+
+class ReplaceTransformer implements Transformer {
+    
+    private Pattern replace;
+    private String replacement;
+    
+    public ReplaceTransformer(String regex, String replacement) {
+        replace = Pattern.compile(regex);
+        this.replacement = replacement;
+        
+    }
+    public void apply(StringBuffer buffer) {
+        Matcher matcher = replace.matcher(buffer);
+        
+        boolean first = true;
+        while (matcher.find(first ? 0 : matcher.end())) {
+            buffer.replace(matcher.start(),matcher.end(),replacement);
+            first = false; 
+        }
+        
+    }
+    
+    public String toString() {
+        return "Replace: " + replace.pattern() + " with " +replacement;
+    }
+    
+    
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org/nwoca/ssdt/tools/html2wiki/TagTransformer.java	Fri May 12 16:45:42 2006 -0400
@@ -0,0 +1,35 @@
+package org.nwoca.ssdt.tools.html2wiki;
+
+import java.util.regex.*;
+
+class TagTransformer implements Transformer {
+    private Pattern tagPattern;
+    private String replacementBegin;
+    private String replacementEnd;
+    
+    public TagTransformer(String regexp, String replacementBegin, String replacementEnd) {
+        tagPattern = Pattern.compile(regexp);
+        this.replacementBegin = replacementBegin;
+        this.replacementEnd = replacementEnd;
+         
+    }
+    public TagTransformer(String regexp, String replacement) {
+        this(regexp,replacement,replacement);
+    }
+    
+    public void apply(StringBuffer buffer) {
+        Matcher matcher = tagPattern.matcher(buffer);
+        
+        boolean first = true;
+        while (matcher.find(first ? 0 : matcher.start())) {
+            buffer.replace(matcher.start(),matcher.end(),replacementBegin + matcher.group(1) + replacementEnd);
+            first = false;
+        }
+     
+    }
+        
+    public String toString() {
+        return "Replace: " + tagPattern.pattern() + " with " +replacementBegin + "..." + replacementEnd;
+    }
+
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org/nwoca/ssdt/tools/html2wiki/Transformer.java	Fri May 12 16:45:42 2006 -0400
@@ -0,0 +1,19 @@
+/*
+ * Transformer.java
+ *
+ * Created on May 9, 2006, 6:47 PM
+ *
+ * To change this template, choose Tools | Template Manager
+ * and open the template in the editor.
+ */
+
+package org.nwoca.ssdt.tools.html2wiki;
+
+/**
+ *
+ * @author SMITH
+ */
+public interface Transformer {
+           public void apply(StringBuffer buffer);
+ 
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/org/nwoca/ssdt/tools/html2wiki/Html2WikiTest.java	Fri May 12 16:45:42 2006 -0400
@@ -0,0 +1,54 @@
+/*
+ * Html2WikiTest.java
+ * JUnit based test
+ *
+ * Created on May 9, 2006, 4:16 PM
+ */
+
+package org.nwoca.ssdt.tools.html2wiki;
+
+import junit.framework.*;
+import java.io.*;
+
+
+/**
+ *
+ * @author SMITH
+ */
+public class Html2WikiTest extends TestCase {
+    
+    public Html2WikiTest(String testName) {
+        super(testName);
+    }
+
+    protected void setUp() throws Exception {
+    }
+
+    protected void tearDown() throws Exception {
+    }
+
+    public static Test suite() {
+        TestSuite suite = new TestSuite(Html2WikiTest.class);
+        
+        return suite;
+    }
+
+    /**
+     * Test of main method, of class org.nwoca.ssdt.tools.html2wiki.Html2Wiki.
+     */
+    public void testMain() throws Exception  {
+        System.out.println("main");
+        
+        
+         Html2Wiki.main(new String[] {"\\C:\\temp\\", "EMIS System Managers Manual"});
+        
+    }
+    
+//    public  void testHtml2Wiki() throws Exception {
+//        
+//        File testFile = new File("\\C:\\temp\\test.html");
+//        Html2Wiki.process(testFile);
+//        
+//    }
+    
+}