Code Search for Developers
 
 
  

WookiLinkFilter.java from PeerWriter at Krugle


Show WookiLinkFilter.java syntax highlighted

package fr.loria.ecoo.wooki.web.wiki;

import org.radeox.filter.CacheFilter;
import org.radeox.filter.context.FilterContext;
import org.radeox.filter.regex.MatchResult;
import org.radeox.filter.regex.RegexTokenFilter;

import fr.loria.ecoo.wooki.web.Wooki;

/**
 * WookiLinkFilter finds [pageName|label] patterns
 */
public class WookiLinkFilter extends RegexTokenFilter implements CacheFilter {
	private String serverUrl;

	public WookiLinkFilter() throws Exception {
		super("\\[[^\\[\\]]*\\]", false);
		serverUrl = Wooki.getInstance().getWootSite().getId();
	}

	public void handleMatch(StringBuffer sb, MatchResult result, FilterContext ctx) {
		String content = result.group(0).substring(1, result.group(0).length() - 1);
		String link;
		String label;

		if (content.indexOf("|") == -1) {
			link = content;
			label = null;
		} else {
			link = content.substring(0, content.indexOf("|"));
			label = content.substring(content.indexOf("|") + 1);
		}

		String httpLinkPattern = "([^\"'=]|^)((http|ftp)s?://(%[\\p{Digit}A-Fa-f][\\p{Digit}A-Fa-f]|[-_.!~*';/?:@#&=+$,\\p{Alnum}])+)";

		try {
			if (link.matches(httpLinkPattern)) {
				sb.append("<a class=\"externalLink\" href=\"" + link + "\">" + ((label == null) ? link : label) + "</a>");

				return;
			}

			sb.append("<a class=\"wookiLink\" href=\"" + serverUrl + "/ViewPage?page=" + link + "\">" + ((label == null) ? link : label) + "</a>");
			return;
		} catch (Exception e) {
			sb.append("<span class=\"error\">invalid link : " + link + "(" + e.getMessage() + ")</span>");
		}
	}
}




See more files for this project here

PeerWriter

PeerWriter is a collaborative text editor. Multiple peers can edit the same document while they see overall changes in real-time. PeerWriter is based on a decentralized infrastructure, using a non-locking concurrency protocol ensuring global consistency.

Project homepage: http://sourceforge.net/projects/peerwriter
Programming language(s): Java,XML
License: gpl2

  ImageMacro.java
  TagLib.java
  WookiLinkFilter.java