[jboss-cvs] jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine ...
Christian Bauer
christian at hibernate.org
Sat Dec 29 21:33:23 EST 2007
User: cbauer
Date: 07/12/29 21:33:23
Modified: examples/wiki/src/main/org/jboss/seam/wiki/core/engine
MacroWikiTextRenderer.java WikiTextRenderer.java
NullWikiTextRenderer.java
DefaultWikiTextRenderer.java WikiTextParser.java
Added: examples/wiki/src/main/org/jboss/seam/wiki/core/engine
WikiMacro.java
Log:
Complete overhaul of the preferences system
Revision Changes Path
1.2 +3 -8 jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/MacroWikiTextRenderer.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: MacroWikiTextRenderer.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/MacroWikiTextRenderer.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- MacroWikiTextRenderer.java 19 Dec 2007 04:29:18 -0000 1.1
+++ MacroWikiTextRenderer.java 30 Dec 2007 02:33:23 -0000 1.2
@@ -1,8 +1,5 @@
package org.jboss.seam.wiki.core.engine;
-import org.jboss.seam.wiki.core.model.WikiMacro;
-import org.jboss.seam.Component;
-
import java.util.Set;
import java.util.LinkedHashSet;
@@ -14,9 +11,10 @@
private Set<WikiMacro> macros = new LinkedHashSet<WikiMacro>();
private StringBuilder macrosString = new StringBuilder();
- public void addMacro(WikiMacro macro) {
+ public String renderMacro(WikiMacro macro) {
macros.add(macro);
macrosString.append(macro.getName()).append(" ");
+ return null;
}
public Set<WikiMacro> getMacros() {
@@ -27,14 +25,11 @@
return macrosString.toString();
}
- public static MacroWikiTextRenderer renderMacros(Long areaNumber, String wikiText) {
+ public static MacroWikiTextRenderer renderMacros(String wikiText) {
WikiTextParser parser = new WikiTextParser(wikiText, false, false);
- parser.setCurrentAreaNumber(areaNumber);
- parser.setResolver((WikiLinkResolver) Component.getInstance("wikiLinkResolver"));
MacroWikiTextRenderer renderer = new MacroWikiTextRenderer();
try {
parser.setRenderer(renderer).parse();
-
} catch (RecognitionException rex) {
// Swallowing, we don't really care if there was a parse error
} catch (ANTLRException ex) {
1.7 +2 -3 jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/WikiTextRenderer.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: WikiTextRenderer.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/WikiTextRenderer.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- WikiTextRenderer.java 19 Dec 2007 15:07:39 -0000 1.6
+++ WikiTextRenderer.java 30 Dec 2007 02:33:23 -0000 1.7
@@ -1,6 +1,6 @@
package org.jboss.seam.wiki.core.engine;
-import org.jboss.seam.wiki.core.model.WikiMacro;
+import org.jboss.seam.wiki.core.engine.WikiMacro;
import java.util.List;
@@ -15,8 +15,7 @@
public String renderExternalLink(WikiLink externalLink);
public String renderThumbnailImageInlineLink(WikiLink inlineLink);
public String renderFileAttachmentLink(int attachmentNumber, WikiLink attachmentLink);
- public String renderMacro(String macroName);
- public void addMacro(WikiMacro macro);
+ public String renderMacro(WikiMacro macro);
public String renderParagraphOpenTag();
public String renderPreformattedOpenTag();
1.4 +2 -3 jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/NullWikiTextRenderer.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: NullWikiTextRenderer.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/NullWikiTextRenderer.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- NullWikiTextRenderer.java 19 Dec 2007 15:07:39 -0000 1.3
+++ NullWikiTextRenderer.java 30 Dec 2007 02:33:23 -0000 1.4
@@ -1,6 +1,6 @@
package org.jboss.seam.wiki.core.engine;
-import org.jboss.seam.wiki.core.model.WikiMacro;
+import org.jboss.seam.wiki.core.engine.WikiMacro;
import java.util.List;
@@ -17,8 +17,7 @@
public String renderThumbnailImageInlineLink(WikiLink inlineLink) { return null; }
public void setAttachmentLinks(List<WikiLink> attachmentLinks) {}
public void setExternalLinks(List<WikiLink> externalLinks) {}
- public String renderMacro(String macroName) { return null; }
- public void addMacro(WikiMacro macro) {}
+ public String renderMacro(WikiMacro macro) { return null; }
public String renderParagraphOpenTag() { return "<p>\n"; }
public String renderPreformattedOpenTag() { return "<pre>\n"; }
public String renderBlockquoteOpenTag() { return "<blockquote>\n"; }
1.5 +2 -4 jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/DefaultWikiTextRenderer.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: DefaultWikiTextRenderer.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/DefaultWikiTextRenderer.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- DefaultWikiTextRenderer.java 19 Dec 2007 15:07:39 -0000 1.4
+++ DefaultWikiTextRenderer.java 30 Dec 2007 02:33:23 -0000 1.5
@@ -1,7 +1,7 @@
package org.jboss.seam.wiki.core.engine;
import org.jboss.seam.wiki.util.WikiUtil;
-import org.jboss.seam.wiki.core.model.WikiMacro;
+import org.jboss.seam.wiki.core.engine.WikiMacro;
import java.util.List;
@@ -37,12 +37,10 @@
return "[Embedded Image]";
}
- public String renderMacro(String macroName) {
+ public String renderMacro(WikiMacro macro) {
return "[Macro]";
}
- public void addMacro(WikiMacro macro) {}
-
public void setAttachmentLinks(List<WikiLink> attachmentLinks) {}
public void setExternalLinks(List<WikiLink> externalLinks) {}
1.13 +16 -10 jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/WikiTextParser.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: WikiTextParser.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/WikiTextParser.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- WikiTextParser.java 19 Dec 2007 15:07:39 -0000 1.12
+++ WikiTextParser.java 30 Dec 2007 02:33:23 -0000 1.13
@@ -31,9 +31,12 @@
*/
public class WikiTextParser extends SeamTextParser {
+ private int macroPosition = 0;
private int linkCounter = 0;
private WikiTextRenderer renderer;
+
+ private boolean resolveLinks;
private WikiLinkResolver resolver;
private Long currentAreaNumber;
@@ -42,7 +45,6 @@
private List<WikiLink> externalLinks = new ArrayList<WikiLink>();
private Set<String> macroNames = new HashSet<String>();
private boolean renderDuplicateMacros;
- private boolean resolveLinks;
public WikiTextParser(String wikiText, boolean renderDuplicateMacros, boolean resolveLinks) {
super(new SeamTextLexer(new StringReader(wikiText)));
@@ -87,9 +89,12 @@
* @throws ANTLRException if lexer or parser errors occur, see
*/
public void parse() throws ANTLRException {
- if (resolver == null) throw new IllegalStateException("WikiTextParser requires not null setResolver()");
if (renderer == null) throw new IllegalStateException("WikiTextParser requires not null setRenderer()");
+
+ if (resolveLinks) {
+ if (resolver == null) throw new IllegalStateException("WikiTextParser requires not null setResolver()");
if (currentAreaNumber == null) throw new IllegalStateException("WikiTextParser requires not null setCurrentAreaNumber()");
+ }
startRule();
@@ -193,18 +198,19 @@
return renderer.renderEmphasisCloseTag();
}
- protected String macroInclude(SeamTextMacro macro) {
- // Filter out any dangerous characters
- String filteredName = macro.name.replaceAll("[^\\p{Alnum}]+", "");
- if ( (macroNames.contains(filteredName) && renderDuplicateMacros) || !macroNames.contains(filteredName)) {
- macroNames.add(filteredName);
+ protected String macroInclude(Macro macro) {
+ if (macro.name == null || macro.name.length() == 0) return "";
+
+ if ( (macroNames.contains(macro.name) && renderDuplicateMacros) || !macroNames.contains(macro.name)) {
+ macroNames.add(macro.name);
WikiMacro wikiMacro = new WikiMacro(macro.name);
wikiMacro.setParams(macro.params);
- renderer.addMacro(wikiMacro);
+ wikiMacro.setPosition(macroPosition++);
- return renderer.renderMacro(filteredName);
+ return renderer.renderMacro(wikiMacro);
} else {
+ macroPosition++;
return "[Can't use the same macro twice!]";
}
}
1.1 date: 2007/12/30 02:33:23; author: cbauer; state: Exp;jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/engine/WikiMacro.java
Index: WikiMacro.java
===================================================================
package org.jboss.seam.wiki.core.engine;
import java.io.Serializable;
import java.util.SortedMap;
import java.util.TreeMap;
public class WikiMacro implements Serializable {
/* TODO: Extract metadata and build macro framework
protected String[] skins = {"d", "m"}
protected long accessLevel = 0;
protected boolean documentDiscriminator = false;
protected boolean reentrant = true;
protected boolean renderedOnce = false;
protected boolean affectsRenderingOnly = true;
protected boolean appliesToHeader = false;
protected boolean appliesToContent = true;
protected boolean appliesToFooter = false;
protected boolean displayedInPreview = true;
*/
private Integer position;
private String clientId;
private String name;
private SortedMap<String,String> params = new TreeMap<String,String>();
public WikiMacro(String name) {
this.name = name;
}
public Integer getPosition() {
return position;
}
public void setPosition(Integer position) {
this.position = position;
}
public String getClientId() {
return clientId;
}
public void setClientId(String clientId) {
this.clientId = clientId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public SortedMap<String, String> getParams() {
return params;
}
public void setParams(SortedMap<String, String> params) {
this.params = params;
}
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
WikiMacro wikiMacro = (WikiMacro) o;
if (!name.equals(wikiMacro.name)) return false;
if (position != null ? !position.equals(wikiMacro.position) : wikiMacro.position != null) return false;
return true;
}
public int hashCode() {
int result;
result = (position != null ? position.hashCode() : 0);
result = 31 * result + name.hashCode();
return result;
}
public String toString() {
return "WikiMacro (" + getPosition() + "): " + getName() + " Params: " + getParams().size();
}
}
More information about the jboss-cvs-commits
mailing list