package com.aperture_software.glados_wiki.markdown; import com.google.common.base.Function; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Created by jhyun on 14. 2. 7. */ public class WikiLinkToMarkdownFunction implements Function<String, String> { private static Logger LOG = LoggerFactory.getLogger(WikiLinkToMarkdownFunction.class); private static class MarkdownLinkGen implements Function<Matcher, String> { private String linkText(final String s) { return s.substring(2, s.length() - 2); } @Override public String apply(Matcher input) { String c = linkText(input.group()); return String.format("[%s](%s)", c, UrlEncoder.encode(c)); } } private EscapableRegexReplaceFunction rrf = new EscapableRegexReplaceFunction(Pattern.compile("\\[\\[(.+?)\\]\\]"), new MarkdownLinkGen(), true); @Override public String apply(String input) { return rrf.apply(input); } }