You can subscribe to this list here.
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(2) |
Jul
(2) |
Aug
(16) |
Sep
(3) |
Oct
(14) |
Nov
(1) |
Dec
(3) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
|
Feb
|
Mar
|
Apr
(3) |
May
(3) |
Jun
(1) |
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2009 |
Jan
(1) |
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
(5) |
Oct
|
Nov
|
Dec
|
From: <tri...@us...> - 2007-08-09 18:11:36
|
Revision: 7 http://staticwiki.svn.sourceforge.net/staticwiki/?rev=7&view=rev Author: triathlon98 Date: 2007-08-09 11:11:33 -0700 (Thu, 09 Aug 2007) Log Message: ----------- add wiki site renderer, and assure it can work for building the project site itself include checkstyle in the build (though the config is not yet completely correct) Modified Paths: -------------- trunk/pom.xml trunk/staticwiki-site-plugin/pom.xml Added Paths: ----------- trunk/config/ trunk/config/checkstyle.xml trunk/config/staticwiki-header.txt trunk/src/ trunk/src/site/ trunk/src/site/fml/ trunk/src/site/fml/faq.fml trunk/src/site/wiki/ trunk/src/site/wiki/example.wiki trunk/staticwiki-site-plugin/src/main/java/org/ trunk/staticwiki-site-plugin/src/main/java/org/staticwiki/ trunk/staticwiki-site-plugin/src/main/java/org/staticwiki/siteplugin/ trunk/staticwiki-site-plugin/src/main/java/org/staticwiki/siteplugin/SaveException.java trunk/staticwiki-site-plugin/src/main/java/org/staticwiki/siteplugin/SitePlugin.java trunk/staticwiki-site-plugin/src/main/java/org/staticwiki/siteplugin/doxia/ trunk/staticwiki-site-plugin/src/main/java/org/staticwiki/siteplugin/doxia/StaticwikiParser.java trunk/staticwiki-site-plugin/src/main/java/org/staticwiki/siteplugin/doxia/WikiSiteModule.java Added: trunk/config/checkstyle.xml =================================================================== --- trunk/config/checkstyle.xml (rev 0) +++ trunk/config/checkstyle.xml 2007-08-09 18:11:33 UTC (rev 7) @@ -0,0 +1,209 @@ +<?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. +--> + +<!DOCTYPE module PUBLIC + "-//Puppy Crawl//DTD Check Configuration 1.1//EN" + "http://www.puppycrawl.com/dtds/configuration_1_1.dtd"> + +<!-- + + Checkstyle configuration that checks the sun coding conventions from: + + - the Java Language Specification at + http://java.sun.com/docs/books/jls/second_edition/html/index.html + + - the Sun Code Conventions at http://java.sun.com/docs/codeconv/ + + - the Javadoc guidelines at + http://java.sun.com/j2se/javadoc/writingdoccomments/index.html + + - the JDK Api documentation http://java.sun.com/j2se/docs/api/index.html + + - some best practices + + Checkstyle is very configurable. Be sure to read the documentation at + http://checkstyle.sf.net (or in your downloaded distribution). + + Most Checks are configurable, be sure to consult the documentation. + + To completely disable a check, just comment it out or delete it from the file. + + Finally, it is worth reading the documentation. + +--> + +<module name="Checker"> + + <!-- Checks that a package.html file exists for each package. --> + <!-- See http://checkstyle.sf.net/config_javadoc.html#PackageHtml --> + <module name="PackageHtml"/> + + <!-- Checks whether files end with a new line. --> + <!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile --> + <module name="NewlineAtEndOfFile"/> + + <!-- Checks that property files contain the same keys. --> + <!-- See http://checkstyle.sf.net/config_misc.html#Translation --> + <module name="Translation"/> + + <module name="TreeWalker"> + + <property name="cacheFile" value="${checkstyle.cache.file}"/> + + <!-- ************************************************************** --> + <!-- Checks that are different from the sun coding conventions ones --> + <!-- ************************************************************** --> + <property name="tabWidth" value="4"/> + <module name="LeftCurly"> + <property name="option" value="nl"/> + </module> + <module name="RightCurly"> + <property name="option" value="alone"/> + </module> + <module name="LineLength"> + <property name="ignorePattern" value="@version"/> + <property name="max" value="132"/> + </module> + <module name="MemberName"> + <property name="format" value="^[a-z]+_*[a-zA-Z0-9]*$"/> + </module> + <module name="StaticVariableName"> + <property name="format" value="^[a-z]+_*[a-zA-Z0-9]*$"/> + </module> + <module name="ConstantName"> + <property name="format" value="^(([A-Z][A-Z0-9]*(_[A-Z0-9]+)*)|log)$"/> + </module> + <module name="ParameterName"> + <property name="format" value="^[a-z]+_*[a-zA-Z0-9]*$"/> + </module> + + <!-- ************************************************************** --> + <!-- Default Sun coding conventions checks --> + <!-- ************************************************************** --> + + <!-- Checks for Javadoc comments. --> + <!-- See http://checkstyle.sf.net/config_javadoc.html --> + <module name="JavadocMethod"> + <property name="excludeScope" value="private"/> + </module> + <module name="JavadocType"/> + <module name="JavadocVariable"/> + + + <!-- Checks for Naming Conventions. --> + <!-- See http://checkstyle.sf.net/config_naming.html --> + <module name="LocalFinalVariableName"/> + <module name="LocalVariableName"/> + <module name="MethodName"/> + <module name="PackageName"/> + <module name="TypeName"/> + + + <!-- Checks for Headers --> + <!-- See http://checkstyle.sf.net/config_header.html --> + <module name="RegexpHeader"> + <!-- The follow property value demonstrates the ability --> + <!-- to have access to ANT properties. In this case it uses --> + <!-- the ${basedir} property to allow Checkstyle to be run --> + <!-- from any directory within a project. --> + <property name="headerFile" value="config/staticwiki-header.txt"/> + </module> + + <!-- Following interprets the header file as regular expressions. --> + <!-- <module name="RegexpHeader"/> --> + + + <!-- Checks for imports --> + <!-- See http://checkstyle.sf.net/config_import.html --> + <module name="AvoidStarImport"/> + <module name="IllegalImport"/> <!-- defaults to sun.* packages --> + <module name="RedundantImport"/> + <module name="UnusedImports"/> + + + <!-- Checks for Size Violations. --> + <!-- See http://checkstyle.sf.net/config_sizes.html --> + <module name="FileLength"/> + <module name="MethodLength"/> + <module name="ParameterNumber"/> + + + <!-- Checks for whitespace --> + <!-- See http://checkstyle.sf.net/config_whitespace.html --> + <module name="EmptyForIteratorPad"/> + <module name="NoWhitespaceAfter"/> + <module name="NoWhitespaceBefore"/> + <module name="OperatorWrap"/> + <module name="ParenPad"/> + <module name="TabCharacter"/> + <module name="WhitespaceAfter"/> + <module name="WhitespaceAround"/> + + + <!-- Modifier Checks --> + <!-- See http://checkstyle.sf.net/config_modifiers.html --> + <module name="ModifierOrder"/> + <module name="RedundantModifier"/> + + <module name="EmptyBlock"/> + <module name="NeedBraces"/> + + <!-- Checks for common coding problems --> + <!-- See http://checkstyle.sf.net/config_coding.html --> + <module name="DoubleCheckedLocking"/> <!-- MY FAVOURITE --> + <module name="EmptyStatement"/> + <module name="EqualsHashCode"/> + <module name="FallThrough"/> + <module name="HiddenField"> + <property name="ignoreConstructorParameter" value="true"/> + <property name="ignoreSetter" value="true"/> + </module> + <module name="IllegalInstantiation"/> + <module name="InnerAssignment"/> + <module name="MagicNumber"/> + <module name="MissingSwitchDefault"/> +<!-- <module name="OneMethodPrivateField" /> --> + <module name="RedundantThrows"/> + <module name="SimplifyBooleanExpression"/> + <module name="SimplifyBooleanReturn"/> + + <!-- Checks for class design --> + <!-- See http://checkstyle.sf.net/config_design.html --> + <module name="FinalClass"/> + <module name="HideUtilityClassConstructor"/> + <module name="VisibilityModifier"> + <module name="MissingSwitchDefault"/> + <property name="protectedAllowed" value="true"/> + </module> + + + <!-- Miscellaneous other checks. --> + <!-- See http://checkstyle.sf.net/config_misc.html --> + <module name="ArrayTypeStyle"/> +<!-- <module name="FinalParameters"/> --> + <module name="GenericIllegalRegexp"> + <property name="format" value="\s+$"/> + <property name="message" value="Line has trailing spaces."/> + </module> + <module name="UpperEll"/> + + </module> + +</module> Added: trunk/config/staticwiki-header.txt =================================================================== --- trunk/config/staticwiki-header.txt (rev 0) +++ trunk/config/staticwiki-header.txt 2007-08-09 18:11:33 UTC (rev 7) @@ -0,0 +1,11 @@ +^/\*\**\s*$ +^ \* This file is part of the staticwiki project.*\s*$ +^ \**\s*$ +^ \* The contents of this file are subject to the GNU Lesser General Public License Version 2.1 or later (the "LGPL")*\s*$ +^ \* (the "License"); you may not use this file except in compliance with the License.*\s*$ +^ \* You may obtain a copy of the License at http://www.fsf.org/licenses/lgpl.html*\s*$ +^ \**\s*$ +^ \* Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF*\s*$ +^ \* ANY KIND, either express or implied. See the License for the specific language governing rights and*\s*$ +^ \* limitations under the License.*\s*$ +^ \*/*\s*$ \ No newline at end of file Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2007-08-09 18:09:43 UTC (rev 6) +++ trunk/pom.xml 2007-08-09 18:11:33 UTC (rev 7) @@ -15,7 +15,6 @@ <modules> <module>staticwiki-renderer</module> <module>staticwiki-editor</module> - <module>staticwiki-site-plugin</module> </modules> <licenses> <license> @@ -44,12 +43,40 @@ <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-site-plugin</artifactId> + <dependencies> + <!-- + fortunately these dependencies is not checked about being cyclic, though you probably need + to compile a second time to make sure the wiki stuff is part of the site + --> + <dependency> + <groupId>org.staticwiki</groupId> + <artifactId>staticwiki-site-plugin</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + </dependencies> + </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.5</source> <target>1.5</target> </configuration> </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>cobertura-maven-plugin</artifactId> + <executions> + <execution> + <id>clean</id> + <goals> + <goal>clean</goal> + </goals> + </execution> + </executions> + </plugin> </plugins> </build> <reporting> @@ -71,30 +98,20 @@ <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jxr-plugin</artifactId> </plugin> - <!-- <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> <configuration> - <configLocation>config/maven_checks.xml</configLocation> + <configLocation>config/checkstyle.xml</configLocation> </configuration> </plugin> - --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>cobertura-maven-plugin</artifactId> <version>2.0</version> <configuration> - <instrumentation></instrumentation> + <instrumentation/> </configuration> - <!--<executions> - <execution> - <goals> - <goal>clean</goal> - </goals> - </execution> - </executions> - --> </plugin> </plugins> </reporting> @@ -176,4 +193,41 @@ </site> </distributionManagement> + <profiles> + <profile> + <id>include-compile-plugin</id> + <activation> + <property> + <name>!site</name> + </property> + </activation> + <modules> + <module>staticwiki-site-plugin</module> + </modules> + </profile> + <profile> + <id>site-include-wiki</id> + <activation> + <property> + <name>site</name> + </property> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.staticwiki</groupId> + <artifactId>staticwiki-site-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>pre-site</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + + </profiles> </project> Added: trunk/src/site/fml/faq.fml =================================================================== --- trunk/src/site/fml/faq.fml (rev 0) +++ trunk/src/site/fml/faq.fml 2007-08-09 18:11:33 UTC (rev 7) @@ -0,0 +1,12 @@ +<faqs title="Frequently Asked Questions"> + <part id="General"> + <faq id="Why another wiki renderer"> + <question>Why another wiki renderer?</question> + <answer> + <p> + As many (open-source) projects already use confluence, and are familiar with this syntax, it would be useful to be able to use this syntax in general wikis. + </p> + </answer> + </faq> + </part> +</faqs> \ No newline at end of file Added: trunk/src/site/wiki/example.wiki =================================================================== --- trunk/src/site/wiki/example.wiki (rev 0) +++ trunk/src/site/wiki/example.wiki 2007-08-09 18:11:33 UTC (rev 7) @@ -0,0 +1,11 @@ +h1. Example + +I want to have a simple example file, just to verify that this thing works. + +- This allows me +- to verify +- some simple markup example + +And *check* that the wiki _markup_ is properly parsed. + +{quote}Carpe diem!{quote} Modified: trunk/staticwiki-site-plugin/pom.xml =================================================================== --- trunk/staticwiki-site-plugin/pom.xml 2007-08-09 18:09:43 UTC (rev 6) +++ trunk/staticwiki-site-plugin/pom.xml 2007-08-09 18:11:33 UTC (rev 7) @@ -8,12 +8,29 @@ <modelVersion>4.0.0</modelVersion> <groupId>org.staticwiki</groupId> <artifactId>staticwiki-site-plugin</artifactId> - <packaging>jar</packaging> + <packaging>maven-plugin</packaging> <version>1.0-SNAPSHOT</version> <name>staticwiki-site-plugin</name> <description> - Maven plugin to allow generating a maven site using staticwiki markup. + Maven plugin to allow generating maven site pages using staticwiki markup. </description> + + <build> + <plugins> + <plugin> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-maven-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>descriptor</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + <dependencies> <dependency> <groupId>org.staticwiki</groupId> @@ -23,5 +40,25 @@ <groupId>log4j</groupId> <artifactId>log4j</artifactId> </dependency> + <dependency> + <groupId>org.apache.maven.doxia</groupId> + <artifactId>doxia-core</artifactId> + <version>1.0-alpha-8</version> + </dependency> + <dependency> + <groupId>org.apache.maven.doxia</groupId> + <artifactId>doxia-sink-api</artifactId> + <version>1.0-alpha-8</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-project</artifactId> + <version>2.0.7</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-plugin-api</artifactId> + <version>2.0.7</version> + </dependency> </dependencies> </project> Added: trunk/staticwiki-site-plugin/src/main/java/org/staticwiki/siteplugin/SaveException.java =================================================================== --- trunk/staticwiki-site-plugin/src/main/java/org/staticwiki/siteplugin/SaveException.java (rev 0) +++ trunk/staticwiki-site-plugin/src/main/java/org/staticwiki/siteplugin/SaveException.java 2007-08-09 18:11:33 UTC (rev 7) @@ -0,0 +1,105 @@ +/** + * This file is part of the staticwiki project. + * + * The contents of this file are subject to the GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * (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.fsf.org/licenses/lgpl.html + * + * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF + * ANY KIND, either express or implied. See the License for the specific language governing rights and + * limitations under the License. + */ + +package org.staticwiki.siteplugin; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.Date; + +/** + * Save exception details to a file + * + * @author Joachim Van der Auwera <jo...@pr...> + */ +public class SaveException +{ + public static void saveException( Throwable exc ) + { + saveException( exc, "" ); + } + + public static void saveException( Throwable exc, String message ) + { + File errorFile = new File( "errors.txt" ); + try + { + PrintWriter out = new PrintWriter( new FileOutputStream( errorFile.getAbsolutePath(), true ) ); + Date date = new Date( System.currentTimeMillis() ); + out.println( "----- error on " + date.toString() ); + String msg = exc.getLocalizedMessage(); + if ( msg == null ) msg = exc.getMessage(); + if ( msg == null ) msg = exc.toString(); + msg += " " + message; + out.println( msg ); + System.err.println( msg ); + exc.printStackTrace( out ); + out.println(); + out.close(); + } + catch ( IOException ioe ) + { + System.err.println( "oops, can't write error message to file" ); + } + } + + public static void saveWarning( Throwable exc ) + { + saveWarning( exc, "" ); + } + + public static void saveWarning( Throwable exc, String message ) + { + File errorFile = new File( "errors.txt" ); + try + { + PrintWriter out = new PrintWriter( new FileOutputStream( errorFile.getAbsolutePath(), true ) ); + Date date = new Date( System.currentTimeMillis() ); + out.println( "----- warning on " + date.toString() ); + String msg = exc.getLocalizedMessage(); + if ( msg == null ) msg = exc.getMessage(); + if ( msg == null ) msg = exc.toString(); + msg += " " + message; + out.println( msg ); + System.err.println( msg ); + exc.printStackTrace( out ); + out.println(); + out.close(); + } + catch ( IOException ioe ) + { + System.err.println( "oops, can't write error message to file" ); + } + } + + + public static void log( String error ) + { + File errorFile = new File( "errors.txt" ); + try + { + PrintWriter out = new PrintWriter( new FileOutputStream( errorFile.getAbsolutePath(), true ) ); + Date date = new Date( System.currentTimeMillis() ); + out.println( "----- error on " + date.toString() ); + out.println( error ); + System.err.println( error ); + out.println(); + out.close(); + } + catch ( IOException ioe ) + { + System.err.println( "oops, can't write error message to file" ); + } + } +} \ No newline at end of file Added: trunk/staticwiki-site-plugin/src/main/java/org/staticwiki/siteplugin/SitePlugin.java =================================================================== --- trunk/staticwiki-site-plugin/src/main/java/org/staticwiki/siteplugin/SitePlugin.java (rev 0) +++ trunk/staticwiki-site-plugin/src/main/java/org/staticwiki/siteplugin/SitePlugin.java 2007-08-09 18:11:33 UTC (rev 7) @@ -0,0 +1,40 @@ +/** + * This file is part of the staticwiki project. + * + * The contents of this file are subject to the GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * (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.fsf.org/licenses/lgpl.html + * + * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF + * ANY KIND, either express or implied. See the License for the specific language governing rights and + * limitations under the License. + */ + +package org.staticwiki.siteplugin; + +import org.apache.maven.plugin.AbstractMojo; +import org.apache.maven.plugin.MojoExecutionException; + +/** + * Maven plugin to render staticwiki pages as part of the site rendering phase. + * Files should be in "wiki" directory and have ".wiki" extension. + * + * @author <a href="mailto:jo...@pr...">Joachim Van der Auwera</a> + * @goal pre-site + * @phase pre-site + */ +public class SitePlugin + extends AbstractMojo +{ + /** + * For the actual rendering, though there is nothing to do as the doxia auto-discovers the renderer/parser + * through plexus (if we declare the dependency that is). + * + * We need to copy the resources which are assumed to exist to the proper location in the site... + */ + public void execute() + throws MojoExecutionException + { + // @todo copy the resources... + } +} Added: trunk/staticwiki-site-plugin/src/main/java/org/staticwiki/siteplugin/doxia/StaticwikiParser.java =================================================================== --- trunk/staticwiki-site-plugin/src/main/java/org/staticwiki/siteplugin/doxia/StaticwikiParser.java (rev 0) +++ trunk/staticwiki-site-plugin/src/main/java/org/staticwiki/siteplugin/doxia/StaticwikiParser.java 2007-08-09 18:11:33 UTC (rev 7) @@ -0,0 +1,62 @@ +/** + * This file is part of the staticwiki project. + * + * The contents of this file are subject to the GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * (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.fsf.org/licenses/lgpl.html + * + * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF + * ANY KIND, either express or implied. See the License for the specific language governing rights and + * limitations under the License. + */ + +package org.staticwiki.siteplugin.doxia; + +import org.apache.maven.doxia.parser.AbstractParser; +import org.apache.maven.doxia.parser.ParseException; +import org.apache.maven.doxia.sink.Sink; +import org.staticwiki.wiki.WikiException; +import org.staticwiki.wiki.WikiFactory; +import org.staticwiki.wiki.WikiRenderer; +import org.staticwiki.siteplugin.SaveException; + +import java.io.IOException; +import java.io.Reader; +import java.io.StringWriter; + +/** + * Parser for the abstractwiki syntax pages. + * + * @plexus.component role="org.apache.maven.doxia.parser.Parser" role-hint="wiki" + * + * @author Joachim Van der Auwera <jo...@pr...> + */ +public class StaticwikiParser + extends AbstractParser +{ + public void parse( Reader reader, Sink sink ) + throws ParseException + { + try + { + WikiRenderer wr = WikiFactory.getWikiRenderer(); + StringWriter sw = new StringWriter(); + wr.render( reader, sw ); + String res = sw.getBuffer().toString(); + sink.head(); + sink.head_(); + sink.body(); + sink.rawText( res ); + sink.body_(); + sink.close(); + } + catch ( WikiException we ) + { + throw new ParseException( we ); + } + catch ( IOException ioException ) + { + throw new ParseException( ioException ); + } + } +} Added: trunk/staticwiki-site-plugin/src/main/java/org/staticwiki/siteplugin/doxia/WikiSiteModule.java =================================================================== --- trunk/staticwiki-site-plugin/src/main/java/org/staticwiki/siteplugin/doxia/WikiSiteModule.java (rev 0) +++ trunk/staticwiki-site-plugin/src/main/java/org/staticwiki/siteplugin/doxia/WikiSiteModule.java 2007-08-09 18:11:33 UTC (rev 7) @@ -0,0 +1,56 @@ +/** + * This file is part of the staticwiki project. + * + * The contents of this file are subject to the GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * (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.fsf.org/licenses/lgpl.html + * + * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF + * ANY KIND, either express or implied. See the License for the specific language governing rights and + * limitations under the License. + */ + +package org.staticwiki.siteplugin.doxia; + +import org.apache.maven.doxia.site.module.SiteModule; +import org.staticwiki.siteplugin.SaveException; + +/** + * Connect with the renderer in de Doxia core, defines the parameters for the rendering. + * + * @author Joachim Van der Auwera <jo...@pr...> + * @plexus.component role="org.apache.maven.doxia.site.module.SiteModule" role-hint="wiki" + */ +public class WikiSiteModule + implements SiteModule +{ + /** + * Return the source directory, default is "wiki". + * + * @return source directory + */ + public String getSourceDirectory() + { + return "wiki"; + } + + /** + * Return the file extension, default is "wiki". + * + * @return file extension + */ + public String getExtension() + { + return "wiki"; + } + + /** + * Perser id for the files to render, use ours... + * + * @return parser id + */ + public String getParserId() + { + return "wiki"; + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tri...@us...> - 2007-08-09 18:09:46
|
Revision: 6 http://staticwiki.svn.sourceforge.net/staticwiki/?rev=6&view=rev Author: triathlon98 Date: 2007-08-09 11:09:43 -0700 (Thu, 09 Aug 2007) Log Message: ----------- fix problems when rendering from reader to writer Modified Paths: -------------- trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/WikiRendererAdapter.java Added Paths: ----------- trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/WikiRendererTest.java Modified: trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/WikiRendererAdapter.java =================================================================== --- trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/WikiRendererAdapter.java 2007-08-08 08:57:54 UTC (rev 5) +++ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/WikiRendererAdapter.java 2007-08-09 18:09:43 UTC (rev 6) @@ -55,6 +55,9 @@ throws WikiException, IOException { TextBuilder tb = TextBuilder.newInstance(); + + int character; + while ( ( character = reader.read() ) >= 0 ) tb.append( (char) character ); render( tb, writer ); } Added: trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/WikiRendererTest.java =================================================================== --- trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/WikiRendererTest.java (rev 0) +++ trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/WikiRendererTest.java 2007-08-09 18:09:43 UTC (rev 6) @@ -0,0 +1,46 @@ +package org.staticwiki.wiki; + +import junit.framework.TestCase; + +import java.io.StringReader; +import java.io.StringWriter; + +/** + * Test for the WikiRenderer class + * + * @author Joachim Van der Auwera <jo...@pr...> + */ +public class WikiRendererTest + extends TestCase +{ + private static WikiContext context; + private static WikiRenderer renderer; + + protected void setUp() + throws Exception + { + super.setUp(); + if ( context == null ) + { + context = new DefaultWikiContext(); + renderer = new DefaultWikiRenderer( context ); + } + } + + public void testString() + throws Exception + { + String test = "bla bla"; + String result = renderer.render( test ); + assertEquals( "<div class=\"wiki\">" + test + "</div>", result ); + } + public void testReader() + throws Exception + { + String test = "bla bla"; + StringReader sr = new StringReader( test ); + StringWriter sw = new StringWriter(); + renderer.render( sr, sw ); + assertEquals( "<div class=\"wiki\">" + test + "</div>", sw.getBuffer().toString() ); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tri...@us...> - 2007-08-08 08:57:59
|
Revision: 5 http://staticwiki.svn.sourceforge.net/staticwiki/?rev=5&view=rev Author: triathlon98 Date: 2007-08-08 01:57:54 -0700 (Wed, 08 Aug 2007) Log Message: ----------- provisions for new modules Modified Paths: -------------- trunk/pom.xml Added Paths: ----------- trunk/staticwiki-editor/ trunk/staticwiki-editor/pom.xml trunk/staticwiki-editor/src/ trunk/staticwiki-editor/src/main/ trunk/staticwiki-editor/src/main/java/ trunk/staticwiki-editor/src/main/java/org/ trunk/staticwiki-editor/src/main/java/org/staticwiki/ trunk/staticwiki-editor/src/main/java/org/staticwiki/editor/ trunk/staticwiki-editor/src/main/java/org/staticwiki/editor/Editor.java trunk/staticwiki-site-plugin/ trunk/staticwiki-site-plugin/pom.xml trunk/staticwiki-site-plugin/src/ trunk/staticwiki-site-plugin/src/main/ trunk/staticwiki-site-plugin/src/main/java/ Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2007-07-04 07:35:59 UTC (rev 4) +++ trunk/pom.xml 2007-08-08 08:57:54 UTC (rev 5) @@ -14,6 +14,8 @@ </description> <modules> <module>staticwiki-renderer</module> + <module>staticwiki-editor</module> + <module>staticwiki-site-plugin</module> </modules> <licenses> <license> @@ -109,6 +111,11 @@ <version>${project.version}</version> </dependency> <dependency> + <groupId>org.staticwiki</groupId> + <artifactId>staticwiki-editor</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> Added: trunk/staticwiki-editor/pom.xml =================================================================== --- trunk/staticwiki-editor/pom.xml (rev 0) +++ trunk/staticwiki-editor/pom.xml 2007-08-08 08:57:54 UTC (rev 5) @@ -0,0 +1,43 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <parent> + <groupId>org.staticwiki</groupId> + <artifactId>staticwiki</artifactId> + <version>1.0-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.staticwiki</groupId> + <artifactId>staticwiki-editor</artifactId> + <packaging>jar</packaging> + <version>1.0-SNAPSHOT</version> + <name>staticwiki-editor</name> + <description> + Simple Swing gui to allow editing wiki markup and seeing a preview of the rendered result. + </description> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifest> + <mainClass>org.staticwiki.editor.Editor</mainClass> + <addClasspath>true</addClasspath> + </manifest> + </archive> + </configuration> + </plugin> + </plugins> + </build> + <dependencies> + <dependency> + <groupId>org.staticwiki</groupId> + <artifactId>staticwiki-renderer</artifactId> + </dependency> + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + </dependency> + </dependencies> +</project> Added: trunk/staticwiki-editor/src/main/java/org/staticwiki/editor/Editor.java =================================================================== --- trunk/staticwiki-editor/src/main/java/org/staticwiki/editor/Editor.java (rev 0) +++ trunk/staticwiki-editor/src/main/java/org/staticwiki/editor/Editor.java 2007-08-08 08:57:54 UTC (rev 5) @@ -0,0 +1,32 @@ +/** + * This file is part of the staticwiki project. + * + * The contents of this file are subject to the GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * (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.fsf.org/licenses/lgpl.html + * + * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF + * ANY KIND, either express or implied. See the License for the specific language governing rights and + * limitations under the License. + */ + +package org.staticwiki.editor; + +//import org.apache.log4j.Logger; + +/** + * ... + * + * @author <a href="mailto:jo...@pr...">Joachim Van der Auwera</a> + */ +public class Editor +{ + //private static Logger logger = Logger.getLogger( Editor.class ); + + public static void main( String[] args ) + { + //logger.info( "main: in" ); + System.out.println( "Hello World!" ); + //logger.info( "main: out" ); + } +} \ No newline at end of file Added: trunk/staticwiki-site-plugin/pom.xml =================================================================== --- trunk/staticwiki-site-plugin/pom.xml (rev 0) +++ trunk/staticwiki-site-plugin/pom.xml 2007-08-08 08:57:54 UTC (rev 5) @@ -0,0 +1,27 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <parent> + <groupId>org.staticwiki</groupId> + <artifactId>staticwiki</artifactId> + <version>1.0-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.staticwiki</groupId> + <artifactId>staticwiki-site-plugin</artifactId> + <packaging>jar</packaging> + <version>1.0-SNAPSHOT</version> + <name>staticwiki-site-plugin</name> + <description> + Maven plugin to allow generating a maven site using staticwiki markup. + </description> + <dependencies> + <dependency> + <groupId>org.staticwiki</groupId> + <artifactId>staticwiki-renderer</artifactId> + </dependency> + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + </dependency> + </dependencies> +</project> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tri...@us...> - 2007-07-04 07:36:01
|
Revision: 4 http://staticwiki.svn.sourceforge.net/staticwiki/?rev=4&view=rev Author: triathlon98 Date: 2007-07-04 00:35:59 -0700 (Wed, 04 Jul 2007) Log Message: ----------- use PROGS maven repo instead of Uni-d Modified Paths: -------------- trunk/pom.xml Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2007-07-04 05:35:50 UTC (rev 3) +++ trunk/pom.xml 2007-07-04 07:35:59 UTC (rev 4) @@ -153,8 +153,8 @@ </dependencyManagement> <repositories> <repository> - <id>staticwiki</id> - <url>http://staticwiki.sourceforge.net/m2repo</url> + <id>progs</id> + <url>http://maven.progs.be/m2repo</url> </repository> </repositories> <distributionManagement> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tri...@us...> - 2007-07-04 05:35:54
|
Revision: 3 http://staticwiki.svn.sourceforge.net/staticwiki/?rev=3&view=rev Author: triathlon98 Date: 2007-07-03 22:35:50 -0700 (Tue, 03 Jul 2007) Log Message: ----------- Initial code, contains a wiki renderer Modified Paths: -------------- trunk/pom.xml Added Paths: ----------- trunk/staticwiki-renderer/ trunk/staticwiki-renderer/pom.xml trunk/staticwiki-renderer/src/ trunk/staticwiki-renderer/src/main/ trunk/staticwiki-renderer/src/main/java/ trunk/staticwiki-renderer/src/main/java/org/ trunk/staticwiki-renderer/src/main/java/org/staticwiki/ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/ConfigReader.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/DefaultTemplateLoader.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/DefaultWikiContext.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/DefaultWikiRenderer.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/MarkupSplitter.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/ResourceHandler.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/ResourceHandlerAdapter.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/TemplateLoader.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/WikiContext.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/WikiException.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/WikiFactory.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/WikiRenderer.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/WikiRendererAdapter.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/macro/ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/macro/DefaultMacroLoader.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/macro/DefaultMacroSplitter.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/macro/DefaultWikiMacro.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/macro/MacroLoader.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/macro/MacroPart.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/macro/MacroPartRenderer.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/macro/MacroSplitter.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/macro/WikiMacro.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/WikiSubRenderer.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/WikiSubRendererAdapter.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/line/ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/line/HeaderLineHandler.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/line/LineRenderer.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/line/LineSplitter.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/line/ListLineHandler.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/line/ParagraphLineHandler.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/line/QuoteLineHandler.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/line/TableLineHandler.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/line/WikiLineContext.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/line/WikiLineHandler.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/line/WikiLineHandlerContainer.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/list/ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/simple/ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/simple/EscapeUnescapeRenderer.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/simple/ImageRenderer.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/simple/LinkRenderer.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/simple/SurroundMarkupRenderer.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/renderer/table/ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/util/ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/util/StringSplitter.java trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/util/io/ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/util/io/TextBuilderWriter.java trunk/staticwiki-renderer/src/main/macro/ trunk/staticwiki-renderer/src/main/macro/org/ trunk/staticwiki-renderer/src/main/macro/org/staticwiki/ trunk/staticwiki-renderer/src/main/macro/org/staticwiki/wiki/ trunk/staticwiki-renderer/src/main/macro/org/staticwiki/wiki/WikiRenderPipeline.txt trunk/staticwiki-renderer/src/main/macro/org/staticwiki/wiki/macro/ trunk/staticwiki-renderer/src/main/macro/org/staticwiki/wiki/macro/ERROR.properties trunk/staticwiki-renderer/src/main/macro/org/staticwiki/wiki/macro/WIKI.properties trunk/staticwiki-renderer/src/main/macro/org/staticwiki/wiki/macro/nowiki.properties trunk/staticwiki-renderer/src/main/macro/org/staticwiki/wiki/macro/quote.properties trunk/staticwiki-renderer/src/main/macro/org/staticwiki/wiki/template/ trunk/staticwiki-renderer/src/main/macro/org/staticwiki/wiki/template/ERROR.vm trunk/staticwiki-renderer/src/main/macro/org/staticwiki/wiki/template/WIKI.vm trunk/staticwiki-renderer/src/main/macro/org/staticwiki/wiki/template/nowiki.vm trunk/staticwiki-renderer/src/main/macro/org/staticwiki/wiki/template/quote.vm trunk/staticwiki-renderer/src/site/ trunk/staticwiki-renderer/src/site/wiki/ trunk/staticwiki-renderer/src/site/wiki/architecture.wiki trunk/staticwiki-renderer/src/test/ trunk/staticwiki-renderer/src/test/java/ trunk/staticwiki-renderer/src/test/java/org/ trunk/staticwiki-renderer/src/test/java/org/staticwiki/ trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/ trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/ConfigReaderTest.java trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/DefaultMacroLoaderTest.java trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/DefaultMacroSplitterTest.java trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/DefaultResourceHandlerTest.java trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/DefaultTemplateLoaderTest.java trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/MarkupSplitterTest.java trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/SimpleWikiTest.java trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/WikiFactoryTest.java trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/renderer/ trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/renderer/line/ trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/renderer/line/LineSplitterTest.java trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/renderer/simple/ trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/renderer/simple/EscapeUnescapeRendererTest.java trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/renderer/simple/ImageRendererTest.java trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/renderer/simple/LinkRendererTest.java trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/renderer/simple/SurroundMarkupRendererTest.java trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/util/ trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/util/StringSplitterTest.java trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/util/io/ trunk/staticwiki-renderer/src/test/java/org/staticwiki/wiki/util/io/TextBuilderWriterTest.java trunk/staticwiki-renderer/src/test/macro/ trunk/staticwiki-renderer/src/test/macro/org/ trunk/staticwiki-renderer/src/test/macro/org/staticwiki/ trunk/staticwiki-renderer/src/test/macro/org/staticwiki/wiki/ trunk/staticwiki-renderer/src/test/macro/org/staticwiki/wiki/macro/ trunk/staticwiki-renderer/src/test/macro/org/staticwiki/wiki/macro/nobody.properties trunk/staticwiki-renderer/src/test/macro/org/staticwiki/wiki/macro/test.properties trunk/staticwiki-renderer/src/test/macro/org/staticwiki/wiki/macro/withbody.properties trunk/staticwiki-renderer/src/test/macro/org/staticwiki/wiki/template/ trunk/staticwiki-renderer/src/test/macro/org/staticwiki/wiki/template/empty.vm trunk/staticwiki-renderer/src/test/macro/org/staticwiki/wiki/template/test.vm trunk/staticwiki.mm Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2007-06-27 07:17:09 UTC (rev 2) +++ trunk/pom.xml 2007-07-04 05:35:50 UTC (rev 3) @@ -13,7 +13,6 @@ staticwiki is an tool to generate a static wiki site. </description> <modules> - <module>staticwiki-util</module> <module>staticwiki-renderer</module> </modules> <licenses> @@ -106,11 +105,6 @@ </dependency> <dependency> <groupId>org.staticwiki</groupId> - <artifactId>staticwiki-util</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.staticwiki</groupId> <artifactId>staticwiki-renderer</artifactId> <version>${project.version}</version> </dependency> Added: trunk/staticwiki-renderer/pom.xml =================================================================== --- trunk/staticwiki-renderer/pom.xml (rev 0) +++ trunk/staticwiki-renderer/pom.xml 2007-07-04 05:35:50 UTC (rev 3) @@ -0,0 +1,56 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <parent> + <groupId>org.staticwiki</groupId> + <artifactId>staticwiki</artifactId> + <version>1.0-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.staticwiki</groupId> + <artifactId>staticwiki-renderer</artifactId> + <packaging>jar</packaging> + <version>1.0-SNAPSHOT</version> + <name>staticwiki-renderer</name> + <description> + General wiki rendering code, the defaults render wiki content with markup similar to Confluence. + However, the system can be configured at will to render different wiki styles. + </description> + <build> + <resources> + <resource> + <directory>src/main/resources</directory> + </resource> + <resource> + <directory>src/main/macro</directory> + </resource> + </resources> + <testResources> + <testResource> + <directory>src/test/resources</directory> + </testResource> + <testResource> + <directory>src/test/macro</directory> + </testResource> + </testResources> + </build> + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>velocity</groupId> + <artifactId>velocity-dep</artifactId> + </dependency> + <dependency> + <groupId>org.javolution</groupId> + <artifactId>javolution</artifactId> + </dependency> + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + <scope>provided</scope> + </dependency> + </dependencies> +</project> Added: trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/ConfigReader.java =================================================================== --- trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/ConfigReader.java (rev 0) +++ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/ConfigReader.java 2007-07-04 05:35:50 UTC (rev 3) @@ -0,0 +1,110 @@ +/** + * This file is part of the staticwiki project. + * + * The contents of this file are subject to the GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * (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.fsf.org/licenses/lgpl.html + * + * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF + * ANY KIND, either express or implied. See the License for the specific language governing rights and + * limitations under the License. + */ + +package org.staticwiki.wiki; + +import org.staticwiki.wiki.renderer.WikiSubRenderer; +import org.staticwiki.wiki.renderer.line.WikiLineHandlerContainer; +import org.staticwiki.wiki.renderer.line.WikiLineHandler; + +import java.io.Reader; +import java.io.BufferedReader; +import java.lang.reflect.Constructor; + +/** + * Read the configuration settings for the renderer, specifically how to build the render pipeline. + * It basically expects a reader with a classname on each line. + * If the class needs a parameter, then this can be passed after a "|" seperator (one string parameter only, passed to the constructor). + * If the class is a WikiLineHandler, then it is added in the last preceding WikiLineHandlerContainer. + * All classes are expected to be either WikiSubRenderer or WikiLineHandler instances. + * + * @author <a href="mailto:jo...@pr...">Joachim Van der Auwera</a> + */ +public class ConfigReader +{ + public WikiSubRenderer buildRenderPipeline( Reader sreader ) + throws WikiException + { + BufferedReader reader = new BufferedReader( sreader ); + WikiSubRenderer root = null; + WikiSubRenderer previous = null; + WikiLineHandlerContainer handlerContainer = null; + + try + { + String line, param, className; + int sepPos; + Class clazz; + Object instance; + Constructor constructor; + while ( ( line = reader.readLine() ) != null ) + { + sepPos = line.indexOf( '|' ); + if ( sepPos == -1 ) + { + className = line; + param = null; + } + else + { + className = line.substring( 0, sepPos ); + param = line.substring( sepPos + 1 ); + } + clazz = Thread.currentThread().getContextClassLoader().loadClass( className ); + if ( param == null ) + { + constructor = clazz.getConstructor(); + instance = constructor.newInstance(); + } + else + { + constructor = clazz.getConstructor( String.class ); + instance = constructor.newInstance( param ); + } + if ( instance instanceof WikiSubRenderer ) + { + WikiSubRenderer curr = (WikiSubRenderer) instance; + if ( root == null ) + { + root = curr; + previous = curr; + } + previous.setWikiSubRenderer( curr ); + if ( curr instanceof WikiLineHandlerContainer ) handlerContainer = (WikiLineHandlerContainer) curr; + previous = curr; + } + else if ( instance instanceof WikiLineHandler ) + { + if ( handlerContainer == null ) + { + throw new WikiException( "WikiLineHandler before first WikiLineHandlerContainer" ); + } + handlerContainer.addLineHandler( (WikiLineHandler) instance ); + } + else + { + throw new WikiException( "instance of unknown type " + instance + ", " + className + + " should be a WikiSubRenderer or WikiLineHandler" ); + } + } + return root; + } + catch ( WikiException we ) + { + throw we; + } + catch ( Exception ex ) + { + throw new WikiException( ex ); + } + } +} Added: trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/DefaultTemplateLoader.java =================================================================== --- trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/DefaultTemplateLoader.java (rev 0) +++ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/DefaultTemplateLoader.java 2007-07-04 05:35:50 UTC (rev 3) @@ -0,0 +1,58 @@ +/** + * This file is part of the staticwiki project. + * + * The contents of this file are subject to the GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * (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.fsf.org/licenses/lgpl.html + * + * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF + * ANY KIND, either express or implied. See the License for the specific language governing rights and + * limitations under the License. + */ + +package org.staticwiki.wiki; + +import javolution.lang.TextBuilder; + +import java.io.*; + +/** + * Default template loader which loads the templates from the classpath. + * + * @author <a href="mailto:jo...@pr...">Joachim Van der Auwera</a> + */ +public class DefaultTemplateLoader + implements TemplateLoader +{ + public CharSequence getTemplate( String templateName ) + throws WikiException + { + String name = "org/staticwiki/wiki/template/" + templateName + ".vm"; + InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream( name ); + return slurp( stream ); + } + + public String slurp( InputStream stream ) + throws WikiException + { + if ( stream == null ) return ""; + try + { + BufferedReader br = new BufferedReader( new InputStreamReader( stream, "UTF-8" ) ); + TextBuilder sb = TextBuilder.newInstance(); + String line = null; + + while ( ( line = br.readLine() ) != null ) + { + sb.append( line + "\n" ); + } + + br.close(); + return sb.toString(); + } + catch ( Exception ex ) + { + throw new WikiException( ex ); + } + } +} Added: trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/DefaultWikiContext.java =================================================================== --- trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/DefaultWikiContext.java (rev 0) +++ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/DefaultWikiContext.java 2007-07-04 05:35:50 UTC (rev 3) @@ -0,0 +1,167 @@ +/** + * This file is part of the staticwiki project. + * + * The contents of this file are subject to the GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * (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.fsf.org/licenses/lgpl.html + * + * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF + * ANY KIND, either express or implied. See the License for the specific language governing rights and + * limitations under the License. + */ + +package org.staticwiki.wiki; + +import org.staticwiki.wiki.util.io.TextBuilderWriter; +import org.apache.velocity.VelocityContext; +import org.apache.velocity.app.Velocity; +import org.staticwiki.wiki.macro.*; +import org.staticwiki.wiki.renderer.WikiSubRenderer; +import org.staticwiki.wiki.renderer.simple.EscapeUnescapeRenderer; +import javolution.lang.TextBuilder; + +import java.io.Writer; +import java.io.IOException; +import java.util.Map; +import java.util.HashMap; +import java.util.Stack; + +/** + * Default implementation for a WikiContext + * + * @author <a href="mailto:jo...@pr...">Joachim Van der Auwera</a> + */ +public class DefaultWikiContext + implements WikiContext +{ + private VelocityContext velocityContext; + private TemplateLoader templateLoader; + private MacroLoader macroLoader; + private WikiSubRenderer renderPipeline; + private ResourceHandler resourceHandler; + private Map<String, Object> renderMemory = new HashMap<String, Object>(); + private Stack<Map<String, Object>> renderMemoryStack = new Stack<Map<String, Object>>(); + + public DefaultWikiContext() + { + velocityContext = new VelocityContext(); + try + { + Velocity.init(); + } + catch ( Exception ex ) + { + throw new RuntimeException( ex ); + } + templateLoader = new DefaultTemplateLoader(); + macroLoader = new DefaultMacroLoader(); + } + + public VelocityContext getVelocityContext() + { + return velocityContext; + } + + public void setVelocityContext( VelocityContext velocityContext ) + { + this.velocityContext = velocityContext; + } + + public TemplateLoader getTemplateLoader() + { + return templateLoader; + } + + public void setTemplateLoader( TemplateLoader templateLoader ) + { + this.templateLoader = templateLoader; + } + + public MacroLoader getMacroLoader() + { + return macroLoader; + } + + public void setMacroLoader( MacroLoader macroLoader ) + { + this.macroLoader = macroLoader; + } + + public MacroSplitter getMacroSplitter( CharSequence input ) + { + return new DefaultMacroSplitter( this, input ); + } + + public String render( MacroPart input ) + throws WikiException + { + TextBuilder buffer = TextBuilder.newInstance(); + if ( input.canContainMacros() ) + { + MacroPartRenderer renderer = new MacroPartRenderer(); + Writer writer = new TextBuilderWriter( buffer ); + push(); + // split in further macros and render those + for ( MacroPart part : getMacroSplitter( input.getBody() ) ) + { + try + { + renderer.render( this, part, writer ); + } + catch ( IOException ioe ) + { + throw new WikiException( ioe ); + } + } + pop( buffer ); + } + else + { + if ( renderPipeline == null ) + { + renderPipeline = new EscapeUnescapeRenderer(); + } + renderPipeline.setContext( this ); + renderPipeline.render( buffer, input.getBody() ); + } + return buffer.toString(); + } + + public void setRenderPipeline( WikiSubRenderer renderPipeline ) + { + this.renderPipeline = renderPipeline; + } + + public ResourceHandler getResourceHandler() + { + return resourceHandler; + } + + public void setResourceHandler( ResourceHandler resourceHandler ) + { + this.resourceHandler = resourceHandler; + } + + public Object getRenderMemory( String key ) + { + return renderMemory.get( key ); + } + + public void setRenderMemory( String key, Object value ) + { + renderMemory.put( key, value ); + } + + public void push() + { + if ( renderPipeline != null ) renderPipeline.clear( this ); + renderMemoryStack.push( renderMemory ); + renderMemory = new HashMap<String, Object>(); + } + + public void pop( TextBuilder output ) + { + renderMemory = renderMemoryStack.pop(); + if ( renderPipeline != null ) renderPipeline.flush( this, output ); + } +} Added: trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/DefaultWikiRenderer.java =================================================================== --- trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/DefaultWikiRenderer.java (rev 0) +++ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/DefaultWikiRenderer.java 2007-07-04 05:35:50 UTC (rev 3) @@ -0,0 +1,71 @@ +/** + * This file is part of the staticwiki project. + * + * The contents of this file are subject to the GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * (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.fsf.org/licenses/lgpl.html + * + * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF + * ANY KIND, either express or implied. See the License for the specific language governing rights and + * limitations under the License. + */ + +package org.staticwiki.wiki; + +import org.staticwiki.wiki.macro.MacroPart; +import org.staticwiki.wiki.macro.MacroPartRenderer; +import org.staticwiki.wiki.macro.WikiMacro; + +import java.io.Writer; +import java.io.IOException; + +/** + * Default wiki renderer. + * + * @author <a href="mailto:jo...@pr...">Joachim Van der Auwera</a> + */ +public class DefaultWikiRenderer + extends WikiRendererAdapter +{ + private WikiContext context; + + public DefaultWikiRenderer( WikiContext renderContext ) + { + context = renderContext; + } + + public void render( CharSequence input, Writer writer ) + throws WikiException, IOException + { + MacroPart macroPart; + MacroPartRenderer renderer = new MacroPartRenderer(); + WikiMacro macro; + + // render the pre-wiki template + macro = context.getMacroLoader().load( "WIKI-PREFIX" ); + renderPrePost( renderer, macro, writer ); + + // render the actual wiki content + macroPart = new MacroPart(); + macroPart.setMacro( context.getMacroLoader().load( "WIKI" ) ); + macroPart.setBody( input ); + renderer.render( context, macroPart, writer ); + + // render the post-wiki template + macro = context.getMacroLoader().load( "WIKI-SUFFIX" ); + renderPrePost( renderer, macro, writer ); + } + + private void renderPrePost( MacroPartRenderer renderer, WikiMacro macro, Writer writer ) + throws WikiException, IOException + { + if ( macro != null ) + { + MacroPart macroPart = new MacroPart(); + macroPart.setMacro( macro ); + macroPart.setBody( "" ); + macroPart.setCanContainMacros( false ); + renderer.render( context, macroPart, writer ); + } + } +} Added: trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/MarkupSplitter.java =================================================================== --- trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/MarkupSplitter.java (rev 0) +++ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/MarkupSplitter.java 2007-07-04 05:35:50 UTC (rev 3) @@ -0,0 +1,90 @@ +/** + * This file is part of the staticwiki project. + * + * The contents of this file are subject to the GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * (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.fsf.org/licenses/lgpl.html + * + * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF + * ANY KIND, either express or implied. See the License for the specific language governing rights and + * limitations under the License. + */ + +package org.staticwiki.wiki; + +import java.util.Iterator; +import java.util.NoSuchElementException; + +/** + * Splits a string, providing 2 characters like '!' and '!', '[' and ']' as separators + * + * @author Florin + */ +public class MarkupSplitter + implements Iterator<CharSequence>, Iterable<CharSequence> +{ + CharSequence data; + CharSequence markup; + int curPos; + int nextPos; + char markupBegin, markupEnd; + boolean inside; + + public MarkupSplitter( CharSequence input, char markupBegin, char markupEnd ) + { + data = input; + this.markupBegin = markupBegin; + this.markupEnd = markupEnd; + } + + public boolean hasNext() + { + markup = null; + + nextPos = curPos; + char terminator=(inside)?markupEnd:markupBegin; + + while ( nextPos < data.length() ) + { + char c = data.charAt( nextPos ); + if ( c == terminator ) + { + break; + } + nextPos++; + } + if ( nextPos<data.length() || !inside ) + { + markup = data.subSequence( curPos, nextPos ); + nextPos++; + return true; + } + return false; + } + + public boolean isNextInsideMarkup() + { + return inside; + } + + public CharSequence next() + { + if ( markup != null ) + { + curPos = nextPos; + inside=!inside; + return markup; + } + throw new NoSuchElementException(); + } + + public void remove() + { + throw new UnsupportedOperationException(); + } + + public Iterator<CharSequence> iterator() + { + return this; + } +} Added: trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/ResourceHandler.java =================================================================== --- trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/ResourceHandler.java (rev 0) +++ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/ResourceHandler.java 2007-07-04 05:35:50 UTC (rev 3) @@ -0,0 +1,67 @@ +/** + * This file is part of the staticwiki project. + * + * The contents of this file are subject to the GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * (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.fsf.org/licenses/lgpl.html + * + * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF + * ANY KIND, either express or implied. See the License for the specific language governing rights and + * limitations under the License. + */ + +package org.staticwiki.wiki; + +/** + * Allow checking whether pages exist or not, and determines how links to pages and/or media resources + * need to be rendered. + * + * @author <a href="mailto:jo...@pr...">Joachim Van der Auwera</a> + */ +public interface ResourceHandler +{ + public static enum ResourceType + { + TYPE_IMAGE, TYPE_OTHER + } + + /** + * Determine the resource type. + * + * @param resource resource location + * @return type + */ + public abstract ResourceType getResourceType( String resource ); + + /** + * Check whether the given resource is valid. + * + * @param resource resource location + * @return true when exists + */ + public abstract boolean resourceExists( String resource ); + + /** + * Get the URL for the given resource. + * + * @param resource resource location + * @return URL as string + */ + public abstract String getResourceURL( String resource ); + + /** + * Check whether the given link is valid. + * + * @param link resource location + * @return true when exists + */ + public abstract boolean linkExists( String link ); + + /** + * Get the URL for the given link. + * + * @param link link location + * @return URL as string + */ + public abstract String getLinkURL( String link ); +} Added: trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/ResourceHandlerAdapter.java =================================================================== --- trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/ResourceHandlerAdapter.java (rev 0) +++ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/ResourceHandlerAdapter.java 2007-07-04 05:35:50 UTC (rev 3) @@ -0,0 +1,60 @@ +/** + * This file is part of the staticwiki project. + * + * The contents of this file are subject to the GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * (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.fsf.org/licenses/lgpl.html + * + * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF + * ANY KIND, either express or implied. See the License for the specific language governing rights and + * limitations under the License. + */ + +package org.staticwiki.wiki; + +/** + * A simple ResourceHandler which cannot find any resources (allows only external resources). + * + * @author <a href="mailto:jo...@pr...">Joachim Van der Auwera</a> + * @author <a href="mailto:fl...@pa...">Florin</a> + */ +public class ResourceHandlerAdapter + implements ResourceHandler +{ + private static String[] imageExtensions = { ".JPG", ".GIF", ".PNG", ".ICO", ".BMP", ".TIF", ".JPEG", ".TIFF" }; + + public ResourceType getResourceType( String resource ) + { + String resolvedURL = getResourceURL( resource ); + if ( resolvedURL == null ) return ResourceType.TYPE_OTHER; + String urlStr = resolvedURL.toUpperCase(); + for ( String ext : imageExtensions ) + { + if ( urlStr.endsWith( ext ) ) return ResourceType.TYPE_IMAGE; + } + return ResourceType.TYPE_OTHER; + } + + public boolean resourceExists( String resource ) + { + return getResourceURL( resource ) != null; + } + + public String getResourceURL( String resource ) + { + if ( resource.toLowerCase().startsWith( "http://" ) ) return resource; + return null; + } + + public boolean linkExists( String link ) + { + return getLinkURL( link ) != null; + } + + public String getLinkURL( String link ) + { + if ( link.toLowerCase().startsWith( "http://" ) ) return link; + return null; + } + +} Added: trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/TemplateLoader.java =================================================================== --- trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/TemplateLoader.java (rev 0) +++ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/TemplateLoader.java 2007-07-04 05:35:50 UTC (rev 3) @@ -0,0 +1,31 @@ +/** + * This file is part of the staticwiki project. + * + * The contents of this file are subject to the GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * (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.fsf.org/licenses/lgpl.html + * + * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF + * ANY KIND, either express or implied. See the License for the specific language governing rights and + * limitations under the License. + */ + +package org.staticwiki.wiki; + +/** + * Template loader, determines how the velocity templates are obtained. + * + * @author <a href="mailto:jo...@pr...">Joachim Van der Auwera</a> + */ +public interface TemplateLoader +{ + /** + * Get the template (as string). + * + * @param templateName template name + * @return template string + * @throws WikiException oops + */ + CharSequence getTemplate( String templateName ) + throws WikiException; +} Added: trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/WikiContext.java =================================================================== --- trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/WikiContext.java (rev 0) +++ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/WikiContext.java 2007-07-04 05:35:50 UTC (rev 3) @@ -0,0 +1,92 @@ +/** + * This file is part of the staticwiki project. + * + * The contents of this file are subject to the GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * (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.fsf.org/licenses/lgpl.html + * + * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF + * ANY KIND, either express or implied. See the License for the specific language governing rights and + * limitations under the License. + */ + +package org.staticwiki.wiki; + +import org.apache.velocity.VelocityContext; +import org.staticwiki.wiki.macro.MacroLoader; +import org.staticwiki.wiki.macro.MacroPart; +import javolution.lang.TextBuilder; + +/** + * Context which is used for wiki rendering + * + * @author <a href="mailto:jo...@pr...">Joachim Van der Auwera</a> + */ +public interface WikiContext +{ + /** + * Get the Velocity context which is to be used for rendering. + * + * @return velocity context + */ + VelocityContext getVelocityContext(); + + /** + * Get the TemplateLoader instance which loads template instances based on template name. + * + * @return template loader + */ + TemplateLoader getTemplateLoader(); + + /** + * Get the MacroLoader instance which loads macros based on the macro name. + * + * @return macro loader + */ + MacroLoader getMacroLoader(); + + /** + * Get the resource handler, which is used to check/build resource and page links. + * + * @return resource handler + */ + ResourceHandler getResourceHandler(); + + /** + * Render given MacroPart to a String, using wiki markup. + * + * @param input stuff to render + * @return rendered stuff + * @throws WikiException wiki "render" problems + */ + String render( MacroPart input ) + throws WikiException; + + /** + * Get a value from the render memory based on the given key. + * + * @param key key for data + * @return data for key + */ + Object getRenderMemory( String key ); + + /** + * Set a value in the render memory (key, value pair). + * + * @param key key for data + * @param value value for key + */ + void setRenderMemory( String key, Object value ); + + /** + * Push the rendermemory on a stack and start one a new level with a cleared renderMemory. + */ + void push(); + + /** + * Flush the current renderMemory and pop it off the stack (making the previous valid again). + * + * @param output buffer in which to flush the output + */ + void pop( TextBuilder output ); +} Added: trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/WikiException.java =================================================================== --- trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/WikiException.java (rev 0) +++ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/WikiException.java 2007-07-04 05:35:50 UTC (rev 3) @@ -0,0 +1,41 @@ +/** + * This file is part of the staticwiki project. + * + * The contents of this file are subject to the GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * (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.fsf.org/licenses/lgpl.html + * + * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF + * ANY KIND, either express or implied. See the License for the specific language governing rights and + * limitations under the License. + */ + +package org.staticwiki.wiki; + +/** + * In case of problems during wiki rendering + * + * @author <a href="mailto:jo...@pr...">Joachim Van der Auwera</a> + */ +public class WikiException + extends Exception +{ + public WikiException() + { + } + + public WikiException( String string ) + { + super( string ); + } + + public WikiException( String string, Throwable throwable ) + { + super( string, throwable ); + } + + public WikiException( Throwable throwable ) + { + super( throwable ); + } +} Added: trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/WikiFactory.java =================================================================== --- trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/WikiFactory.java (rev 0) +++ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/WikiFactory.java 2007-07-04 05:35:50 UTC (rev 3) @@ -0,0 +1,74 @@ +/** + * This file is part of the staticwiki project. + * + * The contents of this file are subject to the GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * (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.fsf.org/licenses/lgpl.html + * + * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF + * ANY KIND, either express or implied. See the License for the specific language governing rights and + * limitations under the License. + */ + +package org.staticwiki.wiki; + +import org.staticwiki.wiki.renderer.WikiSubRenderer; + +import java.io.InputStream; +import java.io.Reader; +import java.io.InputStreamReader; + +/** + * Factory class to get a wiki renderer + * + * @author <a href="mailto:jo...@pr...">Joachim Van der Auwera</a> + */ +public class WikiFactory +{ + public static WikiRenderer getWikiRenderer() + throws WikiException + { + return getWikiRenderer( "org/staticwiki/wiki/WikiRenderPipeline.txt", new ResourceHandlerAdapter() ); + } + + public static WikiRenderer getWikiRenderer( ResourceHandler resourceHandler ) + throws WikiException + { + return getWikiRenderer( "org/staticwiki/wiki/WikiRenderPipeline.txt", resourceHandler ); + } + + public static WikiRenderer getWikiRenderer( String pipelineResource ) + throws WikiException + { + return getWikiRenderer( pipelineResource, new ResourceHandlerAdapter() ); + } + + public static WikiRenderer getWikiRenderer( String pipelineResource, ResourceHandler resourceHandler ) + throws WikiException + { + DefaultWikiContext context = new DefaultWikiContext(); + context.setRenderPipeline( getRenderPipeline( pipelineResource ) ); + context.setResourceHandler( resourceHandler ); + return getWikiRenderer( context ); + } + + public static WikiRenderer getWikiRenderer( WikiContext context ) + { + return new DefaultWikiRenderer( context ); + } + + private static WikiSubRenderer getRenderPipeline( String pipelineResource ) + throws WikiException + { + InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream( pipelineResource ); + if ( stream == null ) + { + throw new WikiException( "Render pipeline description " + pipelineResource + " not found on classpath." ); + } + Reader reader = new InputStreamReader( stream ); + ConfigReader cr = new ConfigReader(); + return cr.buildRenderPipeline( reader ); + } + + +} Added: trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/WikiRenderer.java =================================================================== --- trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/WikiRenderer.java (rev 0) +++ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/WikiRenderer.java 2007-07-04 05:35:50 UTC (rev 3) @@ -0,0 +1,65 @@ +/** + * This file is part of the staticwiki project. + * + * The contents of this file are subject to the GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * (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.fsf.org/licenses/lgpl.html + * + * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF + * ANY KIND, either express or implied. See the License for the specific language governing rights and + * limitations under the License. + */ + +package org.staticwiki.wiki; + +import java.io.Reader; +import java.io.Writer; +import java.io.IOException; + +/** + * @author <a href="mailto:jo...@pr...">Joachim Van der Auwera</a> + */ +public interface WikiRenderer +{ + /** + * Get the rendered ourtput as string (with input given as string). + * + * @param input wiki string + * @param writer writer for output + * @throws WikiException wiki render problem + * @throws IOException read/write problem + */ + void render( CharSequence input, Writer writer ) + throws WikiException, IOException; + + /** + * Get the rendered output as CHarSequence (with input given as CharSequence). + * + * @param input wiki string + * @return rendered output + * @throws WikiException wiki render problem + */ + CharSequence render( CharSequence input ) + throws WikiException; + + /** + * Get the rendered output as string (with input given as string). + * + * @param input wiki string + * @return rendered output + * @throws WikiException wiki render problem + */ + String render( String input ) + throws WikiException; + + /** + * Render a wiki string, passed in the reader into the given writer. + * + * @param reader reader with wiki string + * @param writer writer for output + * @throws WikiException wiki render problem + * @throws IOException read/write problem + */ + void render( Reader reader, Writer writer ) + throws WikiException, IOException; +} Added: trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/WikiRendererAdapter.java =================================================================== --- trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/WikiRendererAdapter.java (rev 0) +++ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/WikiRendererAdapter.java 2007-07-04 05:35:50 UTC (rev 3) @@ -0,0 +1,61 @@ +/** + * This file is part of the staticwiki project. + * + * The contents of this file are subject to the GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * (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.fsf.org/licenses/lgpl.html + * + * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF + * ANY KIND, either express or implied. See the License for the specific language governing rights and + * limitations under the License. + */ + +package org.staticwiki.wiki; + +import javolution.lang.TextBuilder; +import javolution.lang.Text; + +import java.io.Reader; +import java.io.Writer; +import java.io.StringWriter; +import java.io.IOException; + +/** + * Renderer which can be extended to avoid duplicating convenience methods. + * + * @author <a href="mailto:jo...@pr...">Joachim Van der Auwera</a> + */ +public abstract class WikiRendererAdapter + implements WikiRenderer +{ + public String render( String input ) + throws WikiException + { + return render( Text.valueOf( input ) ).toString(); + } + + public CharSequence render( CharSequence input ) + throws WikiException + { + StringWriter writer = new StringWriter(); + try + { + render( input, writer ); + writer.close(); + } + catch ( IOException ioe ) + { + // should not happen as this is in-memory + throw new WikiException( ioe ); + } + return writer.getBuffer(); + } + + public void render( Reader reader, Writer writer ) + throws WikiException, IOException + { + TextBuilder tb = TextBuilder.newInstance(); + + render( tb, writer ); + } +} Added: trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/macro/DefaultMacroLoader.java =================================================================== --- trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/macro/DefaultMacroLoader.java (rev 0) +++ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/macro/DefaultMacroLoader.java 2007-07-04 05:35:50 UTC (rev 3) @@ -0,0 +1,48 @@ +/** + * This file is part of the staticwiki project. + * + * The contents of this file are subject to the GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * (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.fsf.org/licenses/lgpl.html + * + * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF + * ANY KIND, either express or implied. See the License for the specific language governing rights and + * limitations under the License. + */ + +package org.staticwiki.wiki.macro; + +import org.staticwiki.wiki.WikiException; + +import java.util.Properties; +import java.io.InputStream; +import java.io.IOException; + +/** + * Macro loader which gets the macro definitions from the classpath (org/staticwiki/wiki/macro/xxx.properties + * + * @author <a href="mailto:jo...@pr...">Joachim Van der Auwera</a> + */ +public class DefaultMacroLoader + implements MacroLoader +{ + public WikiMacro load( CharSequence macroName ) + throws WikiException + { + Properties prop = new Properties(); + String name = "org/staticwiki/wiki/macro/" + macroName + ".properties"; + InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream( name ); + if ( stream == null ) return null; + try + { + prop.load( stream ); + } + catch ( IOException ioe ) + { + throw new WikiException( ioe ); + } + boolean hasBody = "true".equals( prop.get( "hasBody" ) ); + String template = (String) prop.get( "template" ); + return new DefaultWikiMacro( macroName.toString(), hasBody, template ); + } +} Added: trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/macro/DefaultMacroSplitter.java =================================================================== --- trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/macro/DefaultMacroSplitter.java (rev 0) +++ trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/macro/DefaultMacroSplitter.java 2007-07-04 05:35:50 UTC (rev 3) @@ -0,0 +1,264 @@ +/** + * This file is part of the staticwiki project. + * + * The contents of this file are subject to the GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * (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.fsf.org/licenses/lgpl.html + * + * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF + * ANY KIND, either express or implied. See the License for the specific language governing rights and + * limitations under the License. + */ + +package org.staticwiki.wiki.macro; + +import org.staticwiki.wiki.WikiContext; +import org.staticwiki.wiki.WikiException; + +import java.util.Iterator; +import java.util.NoSuchElementException; +import java.util.HashMap; +import java.util.Map; + +import javolution.lang.Text; + +/** + * Split input according to Radeox/Confluence syntax. + * For example : "{panel:type=info,color=red}blabla{panel}" + * + * @author <a href="mailto:jo...@pr...">Joachim Van der Auwera</a> + * @version $Revision $ + */ +public class DefaultMacroSplitter + implements MacroSplitter +{ + private static final char START = '{'; + private static final char END = '}'; + private static final char STARTPARAM = ':'; + private static final char BETWEENPARAM = ','; + private static final char NAMEVALUEPARAM = '='; + private static final char ESCAPE = '\\'; + + private WikiContext context; + private Text data; + + // when scanning for MacroPart pieces, the system searches for a preamble (before the next macro) and + // the actual following macro part + private int startPos, endPos; // start and end of current (scanned) part (inc decl) + private int macroStart; // start of macro (if<endPos) (inc decl) + private int endStartPos, startEndPos; // start and end of current macro body (excl decl) + + private boolean gotNext; // is the next position known + private WikiMacro macro; // macro or null if not inside macro + private Map<String, String> params = new HashMap<String, String>(); + + public DefaultMacroSplitter( WikiContext wc, CharSequence input ) + { + context = wc; + data = Text.valueOf( input ); + } + + /** + * reset internal variables for calculating next part + */ + private void resetForNext() + { + gotNext = false; + params = new HashMap<String, String>(); + macro = null; + startPos = endPos; + } + + /** + * Indicate whether the character at the given index is escaped. + * The character is escaped is preceded by an odd number of esscape characters + * + * @param index index of character to test + * @return escaped status + */ + private boolean isEscaped( int index ) + { + int count = 0; + while ( index > 0 && ESCAPE == data.charAt( --index ) ) count++; + return ( count & 1 ) == 1; + } + + private void calcPreambleAndOrMacro() + { + // scan for macro start + macroStart = startPos; + while ( !gotNext ) + { + // search start of macro definition + while ( !gotNext && macroStart != -1 ) + { + macroStart = data.indexOf( START, macroStart ); + if ( macroStart != -1 ) + { + if ( macroStart >= startPos && !isEscaped( macroStart ) ) gotNext = true; + macroStart++; // prevent loops for escaped START, is corrected again later + } + } + if ( macroStart == -1 ) + { + setLastPart(); + } + else + { + // search end of macro definition + endStartPos = data.indexOf( END, macroStart ); + if ( endStartPos == -1 ) + { + setLastPart(); + return; + } + // and trackback to start of macro again + macroStart = data.lastIndexOf( START, endStartPos ); + processMacroParameters(); + if ( macro == null ) + { + markAsError(); + } + else + { + if ( macro.hasBody() ) + { + Text endTag = Text.valueOf( START ).plus( macro.getName() ).plus( END ); + startEndPos = data.indexOf( endTag, macroStart+1 ); + if ( startEndPos != -1 ) + { + endPos = startEndPos + endTag.length(); + } + else + { + markAsError(); + } + } + else + { + startEndPos = endStartPos; + endPos = endStartPos; + } + } + } + } + } + + private WikiMacro loadMacro( CharSequence name ) + { + try + { + return context.getMacroLoader().load( name ); + } + catch ( WikiException we ) + { + return null; + } + } + + private void processMacroParameters() + { + Text def = data.subtext( macroStart + 1, endStartPos ); + Text name; + endStartPos++; // endStartPos should be start of body instead of end of declaration + int sepPos = def.indexOf( STARTPARAM, 0 ); + if ( sepPos != -1 ) + { + name = def.subtext( 0, sepPos ); + def = def.subtext( sepPos + 1 ); + int paramCount = 1; + for ( sepPos = def.indexOf( BETWEENPARAM, 0 ); sepPos != -1; paramCount++ ) + { + setParam( def.subtext( 0, sepPos ), paramCount ); + def = def.subtext( sepPos + 1 ); + sepPos = def.indexOf( BETWEENPARAM, 0 ); + } + setParam( def, paramCount ); + } + else + { + name = def; + } + macro = loadMacro( name ); + } + + private void setParam( Text param, int index ) + { + int pos = param.indexOf( NAMEVALUEPARAM, 0 ); + if ( pos == -1 ) + { + params.put( Integer.toString( index ), param.toString() ); + } + else + { + params.put( param.subtext( 0, pos ).toString(), param.subtext( pos + 1 ).toString() ); + } + } + + private void markAsError() + { + macro = loadMacro( "ERROR" ); + if ( macro == null ) + { + // oops, no error macro, just ignore + macroStart = endStartPos; + gotNext = false; + } + else + { + endPos = endStartPos; + startEndPos = endStartPos; + endStartPos = macroStart; + gotNext = true; + } + } + + private void setLastPart() + { + endPos = data.length(); + macroStart = endPos; + gotNext = true; + } + + public boolean hasNext() + { + if ( gotNext ) return true; + if ( startPos == endPos && startPos >= data.length() ) return false; + calcPreambleAndOrMacro(); + return true; + } + + public MacroPart next() + { + if ( !hasNext() ) throw new NoSuchElementException(); + MacroPart res = new MacroPart(); + if ( macroStart > startPos ) + { + // return preamble (not inside macro) + res.setBody( Text.valueOf( data, startPos, macroStart ) ); + res.setCanContainMacros( false ); + startPos = macroStart; + if ( startPos == endPos ) resetForNext(); + } + else + { + // return macro + res.setBody( Text.valueOf( data, endStartPos, startEndPos ) ); + res.setCanContainMacros( true ); + res.setMacro( macro ); + res.setParameters( params ); + resetForNext(); + } + return res; + } + + public void remove() + { + throw new UnsupportedOperationException(); + } + + public Iterator<MacroPart> iterator() + { + return this; + } +} Added: trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/macro/DefaultWikiMacro.java =================================================================== --- trunk/staticwiki-renderer/src/main/java/org/staticwiki/wiki/macro/DefaultWikiMacro.java (rev 0) +++ trunk/staticwiki-renderer/src/main/java/org/sta... [truncated message content] |
From: <tri...@us...> - 2007-06-27 07:17:14
|
Revision: 2 http://staticwiki.svn.sourceforge.net/staticwiki/?rev=2&view=rev Author: triathlon98 Date: 2007-06-27 00:17:09 -0700 (Wed, 27 Jun 2007) Log Message: ----------- some initial files Added Paths: ----------- trunk/LICENSE.txt trunk/README.txt trunk/pom.xml Added: trunk/LICENSE.txt =================================================================== --- trunk/LICENSE.txt (rev 0) +++ trunk/LICENSE.txt 2007-06-27 07:17:09 UTC (rev 2) @@ -0,0 +1,502 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + <one line to give the library's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + <signature of Ty Coon>, 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! Added: trunk/README.txt =================================================================== --- trunk/README.txt (rev 0) +++ trunk/README.txt 2007-06-27 07:17:09 UTC (rev 2) @@ -0,0 +1,7 @@ +This is the staticwiki tool, an open source wiki rendering engine, +released under the LGPL license. + +Tool build the project : download and install maven2 +see http://maven.apache.org/ +then from the home directory type "mvn install" + Added: trunk/pom.xml =================================================================== --- trunk/pom.xml (rev 0) +++ trunk/pom.xml 2007-06-27 07:17:09 UTC (rev 2) @@ -0,0 +1,178 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>org.staticwiki</groupId> + <artifactId>staticwiki</artifactId> + <packaging>pom</packaging> + + <version>1.0-SNAPSHOT</version> + + <name>staticwiki</name> + <description> + staticwiki is an tool to generate a static wiki site. + </description> + <modules> + <module>staticwiki-util</module> + <module>staticwiki-renderer</module> + </modules> + <licenses> + <license> + <name>LGPL</name> + <url>http://www.fsf.org/licenses/lgpl.html</url> + <comments>v2.1 or higher</comments> + </license> + </licenses> + <url>http://staticwiki.org</url> + + <developers> + <developer> + <name>Joachim Van der Auwera</name> + <id>triathlon98</id> + <email>tri...@us...</email> + <timezone>+1</timezone> + <roles> + <role>project lead</role> + <role>architect</role> + <role>developer</role> + </roles> + </developer> + </developers> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <source>1.5</source> + <target>1.5</target> + </configuration> + </plugin> + </plugins> + </build> + <reporting> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-report-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <configuration> + <links> + <link>http://java.sun.com/j2se/1.5.0/docs/api/</link> + </links> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jxr-plugin</artifactId> + </plugin> + <!-- + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-checkstyle-plugin</artifactId> + <configuration> + <configLocation>config/maven_checks.xml</configLocation> + </configuration> + </plugin> + --> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>cobertura-maven-plugin</artifactId> + <version>2.0</version> + <configuration> + <instrumentation></instrumentation> + </configuration> + <!--<executions> + <execution> + <goals> + <goal>clean</goal> + </goals> + </execution> + </executions> + --> + </plugin> + </plugins> + </reporting> + <dependencyManagement> + <dependencies> + <dependency> + <groupId>org.javolution</groupId> + <artifactId>javolution</artifactId> + <version>3.7.10</version> + </dependency> + <dependency> + <groupId>org.staticwiki</groupId> + <artifactId>staticwiki-util</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.staticwiki</groupId> + <artifactId>staticwiki-renderer</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>3.8.1</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + <version>1.2.8</version> + </dependency> + <dependency> + <groupId>velocity</groupId> + <artifactId>velocity-dep</artifactId> + <version>1.4</version> + </dependency> + <dependency> + <groupId>ant</groupId> + <artifactId>ant</artifactId> + <version>1.6.5</version> + </dependency> + <dependency> + <groupId>xerces</groupId> + <artifactId>xercesImpl</artifactId> + <version>2.4.0</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-plugin-api</artifactId> + <version>2.0.4</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-project</artifactId> + <version>2.0.4</version> + </dependency> + <dependency> + <groupId>joda-time</groupId> + <artifactId>joda-time</artifactId> + <version>1.4</version> + </dependency> + </dependencies> + </dependencyManagement> + <repositories> + <repository> + <id>staticwiki</id> + <url>http://staticwiki.sourceforge.net/m2repo</url> + </repository> + </repositories> + <distributionManagement> + <snapshotRepository> + <id>snapshotrepo</id> + <name>Repository Name</name> + <url>scp://shell.sf.net/home/groups/s/st/staticwiki/htdocs/m2repo</url> + </snapshotRepository> + <site> + <id>website</id> + <url>scp://shell.sf.net/home/groups/s/st/staticwiki/htdocs/</url> + </site> + </distributionManagement> + +</project> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tri...@us...> - 2007-06-27 06:53:16
|
Revision: 1 http://staticwiki.svn.sourceforge.net/staticwiki/?rev=1&view=rev Author: triathlon98 Date: 2007-06-26 23:53:14 -0700 (Tue, 26 Jun 2007) Log Message: ----------- create trunk Added Paths: ----------- trunk/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |