diff options
Diffstat (limited to 'parsers/Links.java')
-rw-r--r-- | parsers/Links.java | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/parsers/Links.java b/parsers/Links.java index caa258d..87e4109 100644 --- a/parsers/Links.java +++ b/parsers/Links.java @@ -3,13 +3,26 @@ package scruf.parsers; import java.util.regex.*; public class Links implements Parser { + // set of strings to build the html link + private String openTag = "<a href=\"$1\" target=\"_blank\">"; + private String closeTag = "</a>"; public String parse(String fileContent) { - Pattern pattern = Pattern.compile("\\[\\[(.+?)\\|(.+?)\\]\\]"); + Pattern pattern = Pattern.compile("\\[\\[(.+?)(\\|(.+?))\\]\\]", Pattern.DOTALL); Matcher matcher = pattern.matcher(fileContent); StringBuffer sbuffer = new StringBuffer(); - String replacementString = "<a href=\"$1\" target=\"_blank\">$2</a>"; + StringBuilder replacementString = new StringBuilder(); while(matcher.find()) { - matcher.appendReplacement(sbuffer,replacementString); + // delete text already there. + replacementString.delete(0,replacementString.length()); + // start the <a> tag. + replacementString.append(openTag); + // add link name, if given + if(matcher.group(3)!=null) { + replacementString.append(matcher.group(3)); + } + // close the <a> tag + replacementString.append(closeTag); + matcher.appendReplacement(sbuffer,replacementString.toString()); } matcher.appendTail(sbuffer); return sbuffer.toString(); |