001
014
015 package com.liferay.portlet.wiki.engines.mediawiki.matchers;
016
017 import com.liferay.portal.kernel.util.CallbackMatcher;
018 import com.liferay.portal.kernel.util.HttpUtil;
019 import com.liferay.portal.kernel.util.StringBundler;
020 import com.liferay.portal.kernel.util.StringPool;
021 import com.liferay.portal.kernel.util.StringUtil;
022
023 import java.util.regex.MatchResult;
024
025
029 public class ImageURLMatcher extends CallbackMatcher {
030
031 public ImageURLMatcher(String attachmentURLPrefix) {
032 _attachmentURLPrefix = attachmentURLPrefix;
033
034 setRegex(_REGEX);
035 }
036
037 public String replaceMatches(CharSequence charSequence) {
038 return replaceMatches(charSequence, _callBack);
039 }
040
041 private static final String _REGEX =
042 "<a href=\"[^\"]*?Special:Upload[^\"]*?topic=Image:([^\"]*?)\".*?</a>";
043
044 private String _attachmentURLPrefix;
045
046 private Callback _callBack = new Callback() {
047
048 public String foundMatch(MatchResult matchResult) {
049 String title = StringUtil.replace(
050 matchResult.group(1), "%5F", StringPool.UNDERLINE);
051
052 String url = _attachmentURLPrefix + HttpUtil.encodeURL(title);
053
054 StringBundler sb = new StringBundler(5);
055
056 sb.append("<img alt=\"");
057 sb.append(title);
058 sb.append("\" class=\"wikiimg\" src=\"");
059 sb.append(url);
060 sb.append("\" />");
061
062 return sb.toString();
063 }
064
065 };
066
067 }