package org.plog4u.wiki.filter;
-import java.io.IOException;
-import java.io.Writer;
import java.util.ArrayList;
import java.util.NoSuchElementException;
import java.util.Stack;
import java.util.StringTokenizer;
-//import org.apache.commons.logging.Log;
-//import org.apache.commons.logging.LogFactory;
import org.plog4u.wiki.filter.WikipediaFilter.InvalidInputException;
import org.plog4u.wiki.filter.tags.AbstractTag;
import org.plog4u.wiki.filter.tags.CloseTagToken;
import org.radeox.api.engine.RenderEngine;
import org.radeox.api.engine.WikiRenderEngine;
import org.radeox.filter.context.FilterContext;
-import org.radeox.filter.interwiki.InterWiki;
import org.radeox.macro.Macro;
import org.radeox.macro.MacroRepository;
import org.radeox.macro.parameter.MacroParameter;
-import org.radeox.util.Encoder;
import org.radeox.util.StringBufferWriter;
/**
} else {
lastIndex++;
}
- fResultBuffer.append("&");
+ fResultBuffer.append("&");
break;
case '\'': // special html escape character
if (lastIndex < (currentIndex - 1)) {
} else {
lastIndex++;
}
- fResultBuffer.append(""");
+ fResultBuffer.append(""");
break;
}
}
fResultBuffer.append(text.substring(lastIndex, currentIndex - 1));
lastIndex = currentIndex;
}
- fResultBuffer.append("<");
+ fResultBuffer.append("<");
break;
case '>': // special html escape character
if (lastIndex < (currentIndex - 1)) {
} else {
lastIndex++;
}
- fResultBuffer.append(">");
+ fResultBuffer.append(">");
break;
case '&': // special html escape character
if (lastIndex < (currentIndex - 1)) {
} else {
lastIndex++;
}
- fResultBuffer.append("&");
+ fResultBuffer.append("&");
break;
case '\'': // special html escape character
if (lastIndex < (currentIndex - 1)) {
} else {
lastIndex++;
}
- fResultBuffer.append(""");
+ fResultBuffer.append(""");
break;
}
}
copyWhite(fWhiteStart, fWhiteStartPosition, 1);
fWhiteStart = false;
- int startHeadPosition = fCurrentPosition-1;
+ int startHeadPosition = fCurrentPosition - 1;
if (readUntilEOL()) {
// TODO not correct - improve this
String head = new String(fSource, startHeadPosition, fCurrentPosition - startHeadPosition);
if (foundUrl) {
String urlString = new String(fSource, urlStartPosition - 1, fCurrentPosition - urlStartPosition);
fCurrentPosition--;
- WikipediaFilter.createExternalLink(fResultBuffer, fWikiEngine, urlString);
+ createExternalLink(urlString);
continue;
}
break;
// table
// syntax
continue;
-// } else {
-// SnipSnap / Radeox Macro Syntax
-// if (readUntilChar('}')) {
-// String macroStartTag;
-//
-// macroStartTag = new String(fSource, startMacroPosition, fCurrentPosition - startMacroPosition - 1);
-// if (macroStartTag != null) {
-// createMacro(startMacroPosition, macroStartTag);
-// continue;
-// }
-// }
+ // } else {
+ // SnipSnap / Radeox Macro Syntax
+ // if (readUntilChar('}')) {
+ // String macroStartTag;
+ //
+ // macroStartTag = new String(fSource, startMacroPosition, fCurrentPosition - startMacroPosition - 1);
+ // if (macroStartTag != null) {
+ // createMacro(startMacroPosition, macroStartTag);
+ // continue;
+ // }
+ // }
}
break;
case '<':
}
fResultBuffer.append("<span class=\"nobr\">");
fResultBuffer.append("<a href=\"");
- fResultBuffer.append(Encoder.escape(urlString));
+// fResultBuffer.append(Encoder.escape(urlString));
+ copyWhite(urlString);
fResultBuffer.append("\">");
- fResultBuffer.append(Encoder.toEntity(alias.charAt(0)) + alias.substring(1));
+// fResultBuffer.append(Encoder.toEntity(alias.charAt(0)) + alias.substring(1));
+ copyWhite(alias);
fResultBuffer.append("</a></span>");
}
// else {
// fCurrentPosition = temp - 1;
// return false;
// }
+ public void createExternalLink(String urlString) {
+ // Does our engine know images?
+ if (fWikiEngine instanceof ImageRenderEngine) {
+ fResultBuffer.append(((ImageRenderEngine) fWikiEngine).getExternalImageLink());
+ }
+ fResultBuffer.append("<span class=\"nobr\">");
+ fResultBuffer.append("<a href=\"");
+// fResultBuffer.append(Encoder.escape(urlString));
+ copyWhite(urlString);
+ fResultBuffer.append("\">");
+// fResultBuffer.append(Encoder.escape(urlString));
+ copyWhite(urlString);
+ fResultBuffer.append("</a></span>");
+ }
+
private void handleWikipediaLink(String linkText, String suffix) {
String name = linkText;
if (name != null) {
// Configuration probably wrote [http://radeox.org] instead of
// http://radeox.org
if (index != -1) {
- WikipediaFilter.createExternalLink(fResultBuffer, fWikiEngine, name.substring(index));
+ createExternalLink(name.substring(index));
// show error
// fResult.append("<div class=\"error\">Do not surround URLs
// with [...].</div>");
// name = name.substring(colonIndex + 1);
// }
- int atIndex = name.lastIndexOf('@');
+// int atIndex = name.lastIndexOf('@');
// InterWiki link ?
- if (-1 != atIndex) {
- String extSpace = name.substring(atIndex + 1);
- // known extarnal space ?
- InterWiki interWiki = InterWiki.getInstance();
- if (interWiki.contains(extSpace)) {
- name = name.substring(0, atIndex);
- Writer writer = new StringBufferWriter(fResultBuffer);
- try {
- if (-1 != hashIndex) {
- interWiki.expand(writer, extSpace, name, hash);
- } else {
- interWiki.expand(writer, extSpace, name, "");
- }
- } catch (IOException e) {
- // log.debug("InterWiki " + extSpace + " not found.");
- }
- } else {
- fResultBuffer.append("[<span class=\"error\">");
- fResultBuffer.append(name);
- fResultBuffer.append("?</span>]");
- }
- } else {
+// if (-1 != atIndex) {
+// String extSpace = name.substring(atIndex + 1);
+// // known extarnal space ?
+// InterWiki interWiki = InterWiki.getInstance();
+// if (interWiki.contains(extSpace)) {
+// name = name.substring(0, atIndex);
+// Writer writer = new StringBufferWriter(fResultBuffer);
+// try {
+// if (-1 != hashIndex) {
+// interWiki.expand(writer, extSpace, name, hash);
+// } else {
+// interWiki.expand(writer, extSpace, name, "");
+// }
+// } catch (IOException e) {
+// // log.debug("InterWiki " + extSpace + " not found.");
+// }
+// } else {
+// fResultBuffer.append("[<span class=\"error\">");
+// fResultBuffer.append(name);
+// fResultBuffer.append("?</span>]");
+// }
+// } else {
// internal link
+ name = Encoder.escape(name);
if (name.startsWith("Image:") && (fWikiEngine instanceof ImageRenderEngine)) {
// server part of rendering images
ImageRenderEngine imageEngine = (ImageRenderEngine) fWikiEngine;
// cannot display/create wiki, so just display the text
fResultBuffer.append(name);
}
- }
+// }
}
}
}