[xwiki-notifications] r10965 - in xwiki-platform/core/trunk/xwiki-rendering: xwiki-rendering-api/src/main/java/org/xwiki/rendering/listener xwiki-rendering-wikimodel/src/main/java/org/xwiki/rendering/wikimodel xwiki-rendering-wikimodel/src/main/java/org/xwiki/rendering/wikimodel/internal xwiki-rendering-wikimodel/src/main/java/org/xwiki/rendering/wikimodel/renderer

vmassol (SVN) notifications at xwiki.org
Tue Jul 1 11:28:55 CEST 2008


Author: vmassol
Date: 2008-07-01 11:28:55 +0200 (Tue, 01 Jul 2008)
New Revision: 10965

Added:
   xwiki-platform/core/trunk/xwiki-rendering/xwiki-rendering-api/src/main/java/org/xwiki/rendering/listener/ListenerDelegate.java
   xwiki-platform/core/trunk/xwiki-rendering/xwiki-rendering-wikimodel/src/main/java/org/xwiki/rendering/wikimodel/internal/WikiModelGeneratorListener.java
   xwiki-platform/core/trunk/xwiki-rendering/xwiki-rendering-wikimodel/src/main/java/org/xwiki/rendering/wikimodel/internal/XWikiPrinter.java
   xwiki-platform/core/trunk/xwiki-rendering/xwiki-rendering-wikimodel/src/main/java/org/xwiki/rendering/wikimodel/renderer/
   xwiki-platform/core/trunk/xwiki-rendering/xwiki-rendering-wikimodel/src/main/java/org/xwiki/rendering/wikimodel/renderer/TexRenderer.java
Log:
XWIKI-2508: Firm up the new rendering module implementation

* Started adding a TeX Renderer based on wikimodel's Tex Serializer implementation.


Added: xwiki-platform/core/trunk/xwiki-rendering/xwiki-rendering-api/src/main/java/org/xwiki/rendering/listener/ListenerDelegate.java
===================================================================
--- xwiki-platform/core/trunk/xwiki-rendering/xwiki-rendering-api/src/main/java/org/xwiki/rendering/listener/ListenerDelegate.java	                        (rev 0)
+++ xwiki-platform/core/trunk/xwiki-rendering/xwiki-rendering-api/src/main/java/org/xwiki/rendering/listener/ListenerDelegate.java	2008-07-01 09:28:55 UTC (rev 10965)
@@ -0,0 +1,148 @@
+package org.xwiki.rendering.listener;
+
+import java.util.Map;
+
+public class ListenerDelegate implements Listener
+{
+	private Listener listener;
+
+	public void setWrappedListener(Listener listener)
+	{
+		this.listener = listener;
+	}
+	
+	public Listener getWrappedListener()
+	{
+		return this.listener;
+	}
+	
+	public void beginDocument()
+	{
+		this.listener.beginDocument();
+	}
+
+	public void endDocument()
+	{
+		this.listener.endDocument();
+	}
+
+	public void beginBold()
+	{
+		this.listener.beginBold();
+	}
+
+	public void beginItalic()
+	{
+		this.listener.beginItalic();
+	}
+
+	public void beginList(ListType listType)
+	{
+		this.listener.beginList(listType);
+	}
+
+	public void beginListItem()
+	{
+		this.listener.beginListItem();
+	}
+
+	public void beginMacroMarker(String name, Map<String, String> parameters, String content)
+	{
+		this.listener.beginMacroMarker(name, parameters, content);
+	}
+
+	public void beginParagraph()
+	{
+		this.listener.beginParagraph();
+	}
+
+	public void beginSection(SectionLevel level)
+	{
+		this.listener.beginSection(level);
+	}
+
+	public void beginXMLElement(String name, Map<String, String> attributes)
+	{
+		this.listener.beginXMLElement(name, attributes);
+	}
+
+	public void endBold()
+	{
+		this.listener.endBold();
+	}
+
+	public void endItalic()
+	{
+		this.listener.endItalic();
+	}
+
+	public void endList(ListType listType)
+	{
+		this.listener.endList(listType);
+	}
+
+	public void endListItem()
+	{
+		this.listener.endListItem();
+	}
+
+	public void endMacroMarker(String name, Map<String, String> parameters, String content)
+	{
+		this.listener.endMacroMarker(name, parameters, content);
+	}
+
+	public void endParagraph()
+	{
+		this.listener.endParagraph();
+	}
+
+	public void endSection(SectionLevel level)
+	{
+		this.listener.endSection(level);
+	}
+
+	public void endXMLElement(String name, Map<String, String> attributes)
+	{
+		this.listener.endXMLElement(name, attributes);
+	}
+
+	public void onEscape(String escapedString)
+	{
+		this.listener.onEscape(escapedString);
+	}
+
+	public void onLineBreak()
+	{
+		this.listener.onLineBreak();
+	}
+
+	public void onLink(Link link)
+	{
+		this.listener.onLink(link);
+	}
+
+	public void onMacro(String name, Map<String, String> parameters, String content)
+	{
+		this.listener.onMacro(name, parameters, content);
+	}
+
+	public void onNewLine()
+	{
+		this.listener.onNewLine();
+	}
+
+	public void onSpace()
+	{
+		this.listener.onSpace();
+	}
+
+	public void onSpecialSymbol(String symbol)
+	{
+		this.listener.onSpecialSymbol(symbol);
+	}
+
+	public void onWord(String word)
+	{
+		this.listener.onWord(word);
+	}
+}


Property changes on: xwiki-platform/core/trunk/xwiki-rendering/xwiki-rendering-api/src/main/java/org/xwiki/rendering/listener/ListenerDelegate.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: xwiki-platform/core/trunk/xwiki-rendering/xwiki-rendering-wikimodel/src/main/java/org/xwiki/rendering/wikimodel/internal/WikiModelGeneratorListener.java
===================================================================
--- xwiki-platform/core/trunk/xwiki-rendering/xwiki-rendering-wikimodel/src/main/java/org/xwiki/rendering/wikimodel/internal/WikiModelGeneratorListener.java	                        (rev 0)
+++ xwiki-platform/core/trunk/xwiki-rendering/xwiki-rendering-wikimodel/src/main/java/org/xwiki/rendering/wikimodel/internal/WikiModelGeneratorListener.java	2008-07-01 09:28:55 UTC (rev 10965)
@@ -0,0 +1,186 @@
+/*
+ * See the NOTICE file distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This 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 software 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 software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.xwiki.rendering.wikimodel.internal;
+
+import java.util.Map;
+
+import org.wikimodel.wem.IWemConstants;
+import org.wikimodel.wem.IWemListener;
+import org.wikimodel.wem.WikiFormat;
+import org.xwiki.rendering.listener.Link;
+import org.xwiki.rendering.listener.ListType;
+import org.xwiki.rendering.listener.Listener;
+import org.xwiki.rendering.listener.SectionLevel;
+
+/**
+ * Map XWiki Listener events on to WikiModel events.
+ * 
+ * @version $Id: $
+ * @since 1.5RC1
+ */
+public class WikiModelGeneratorListener implements Listener
+{
+	private IWemListener wikimodelListener;
+	
+	public WikiModelGeneratorListener(IWemListener wikimodelListener)
+	{
+		this.wikimodelListener = wikimodelListener;
+	}
+	
+	public void beginDocument()
+	{
+		this.wikimodelListener.beginDocument();
+	}
+
+	public void endDocument()
+	{
+		this.wikimodelListener.endDocument();
+	}
+
+	public void beginBold()
+	{
+		this.wikimodelListener.beginFormat(new WikiFormat(IWemConstants.STRONG));
+	}
+
+	public void beginItalic()
+	{
+		this.wikimodelListener.beginFormat(new WikiFormat(IWemConstants.EM));
+	}
+
+	public void beginList(ListType listType)
+	{
+		this.wikimodelListener.beginList(null, false);
+	}
+
+	public void beginListItem()
+	{
+		this.wikimodelListener.beginListItem();
+	}
+
+	public void beginMacroMarker(String name, Map<String, String> parameters, String content)
+	{
+		// Don't do anything since there's no notion of Macro marker in WikiModel and anyway
+		// there's nothing to render for a marker...
+	}
+
+	public void beginParagraph()
+	{
+		this.wikimodelListener.beginParagraph(null);
+	}
+
+	public void beginSection(SectionLevel level)
+	{
+		this.wikimodelListener.beginHeader(level.getAsInt(), null);
+	}
+
+	public void beginXMLElement(String name, Map<String, String> attributes)
+	{
+		// TODO: Find what to do... For now don't render XML elements
+	}
+
+	public void endBold()
+	{
+		this.wikimodelListener.endFormat(new WikiFormat(IWemConstants.STRONG));
+	}
+
+	public void endItalic()
+	{
+		this.wikimodelListener.endFormat(new WikiFormat(IWemConstants.EM));
+	}
+
+	public void endList(ListType listType)
+	{
+		this.wikimodelListener.endList(null, false);
+	}
+
+	public void endListItem()
+	{
+		this.wikimodelListener.endListItem();
+	}
+
+	public void endMacroMarker(String name, Map<String, String> parameters, String content)
+	{
+		// Don't do anything since there's no notion of Macro marker in WikiModel and anyway
+		// there's nothing to render for a marker...
+	}
+
+	public void endParagraph()
+	{
+		this.wikimodelListener.endParagraph(null);
+	}
+
+	public void endSection(SectionLevel level)
+	{
+		this.wikimodelListener.endHeader(level.getAsInt(), null);
+	}
+
+	public void endXMLElement(String name, Map<String, String> attributes)
+	{
+		// TODO: Find what to do... For now don't render XML elements
+	}
+
+	public void onEscape(String escapedString)
+	{
+		this.wikimodelListener.onEscape(escapedString);
+	}
+
+	public void onLineBreak()
+	{
+		this.wikimodelListener.onLineBreak();
+	}
+
+	public void onLink(Link link)
+	{
+		String linkAsString;
+		if (link.getLabel() != null) {
+			linkAsString = link.getLabel();
+		} else {
+			linkAsString = link.getReference();
+		}
+		
+		this.wikimodelListener.onReference(linkAsString, false);
+	}
+
+	public void onMacro(String name, Map<String, String> parameters, String content)
+	{
+		// Don't do anything since macros have already been transformed so this method 
+		// should not be called.
+	}
+
+	public void onNewLine()
+	{
+		this.wikimodelListener.onNewLine();
+	}
+
+	public void onSpace()
+	{
+		this.wikimodelListener.onSpace(" ");
+	}
+
+	public void onSpecialSymbol(String symbol)
+	{
+		this.wikimodelListener.onSpecialSymbol(symbol);
+	}
+
+	public void onWord(String word)
+	{
+		this.wikimodelListener.onWord(word);
+	}
+}


Property changes on: xwiki-platform/core/trunk/xwiki-rendering/xwiki-rendering-wikimodel/src/main/java/org/xwiki/rendering/wikimodel/internal/WikiModelGeneratorListener.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: xwiki-platform/core/trunk/xwiki-rendering/xwiki-rendering-wikimodel/src/main/java/org/xwiki/rendering/wikimodel/internal/XWikiPrinter.java
===================================================================
--- xwiki-platform/core/trunk/xwiki-rendering/xwiki-rendering-wikimodel/src/main/java/org/xwiki/rendering/wikimodel/internal/XWikiPrinter.java	                        (rev 0)
+++ xwiki-platform/core/trunk/xwiki-rendering/xwiki-rendering-wikimodel/src/main/java/org/xwiki/rendering/wikimodel/internal/XWikiPrinter.java	2008-07-01 09:28:55 UTC (rev 10965)
@@ -0,0 +1,25 @@
+package org.xwiki.rendering.wikimodel.internal;
+
+import java.io.PrintWriter;
+
+import org.wikimodel.wem.IWikiPrinter;
+
+public class XWikiPrinter implements IWikiPrinter 
+{
+	private PrintWriter writer;
+	
+	public XWikiPrinter(PrintWriter writer)
+	{
+		this.writer = writer;
+	}
+	
+	public void print(String text)
+	{
+		this.writer.write(text);
+	}
+
+	public void println(String text)
+	{
+		this.writer.write(text + "\n");
+	}
+}


Property changes on: xwiki-platform/core/trunk/xwiki-rendering/xwiki-rendering-wikimodel/src/main/java/org/xwiki/rendering/wikimodel/internal/XWikiPrinter.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: xwiki-platform/core/trunk/xwiki-rendering/xwiki-rendering-wikimodel/src/main/java/org/xwiki/rendering/wikimodel/renderer/TexRenderer.java
===================================================================
--- xwiki-platform/core/trunk/xwiki-rendering/xwiki-rendering-wikimodel/src/main/java/org/xwiki/rendering/wikimodel/renderer/TexRenderer.java	                        (rev 0)
+++ xwiki-platform/core/trunk/xwiki-rendering/xwiki-rendering-wikimodel/src/main/java/org/xwiki/rendering/wikimodel/renderer/TexRenderer.java	2008-07-01 09:28:55 UTC (rev 10965)
@@ -0,0 +1,41 @@
+/*
+ * See the NOTICE file distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This 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 software 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 software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.xwiki.rendering.wikimodel.renderer;
+
+import java.io.PrintWriter;
+import java.io.Writer;
+
+import org.wikimodel.wem.tex.TexSerializer;
+import org.xwiki.rendering.listener.ListenerDelegate;
+import org.xwiki.rendering.renderer.Renderer;
+import org.xwiki.rendering.wikimodel.internal.WikiModelGeneratorListener;
+import org.xwiki.rendering.wikimodel.internal.XWikiPrinter;
+
+public class TexRenderer extends ListenerDelegate implements Renderer
+{
+    private PrintWriter writer;
+
+	public TexRenderer(Writer writer)
+	{
+		this.writer = new PrintWriter(writer);
+		setWrappedListener(new WikiModelGeneratorListener(
+				new TexSerializer(new XWikiPrinter(this.writer))));
+	}
+}


Property changes on: xwiki-platform/core/trunk/xwiki-rendering/xwiki-rendering-wikimodel/src/main/java/org/xwiki/rendering/wikimodel/renderer/TexRenderer.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain



More information about the notifications mailing list