Index: PlugIn.java =================================================================== RCS file: /cvsroot/shingetsu/shingetsu-java/net/sourceforge/shingetsu/server/cgi/PlugIn.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- PlugIn.java 4 Nov 2004 14:07:42 -0000 1.10 +++ PlugIn.java 6 Nov 2004 16:47:11 -0000 1.11 @@ -457,6 +457,9 @@ */ public String createBracketLink(String body) throws UnsupportedEncodingException { + StringBuffer buffer = new StringBuffer(); + int lastIndex = 0; + String regex = "\\[\\[([^/]+)\\]\\]"; Matcher matcher = Pattern.compile(regex).matcher(body); @@ -467,12 +470,24 @@ String encodedName = encode(name); String link = "[[" + name + "]]"; - body = matcher.replaceAll(link); + + matcher.appendReplacement(buffer, link); + + StringBuffer tailBuffer = new StringBuffer(buffer.toString()); + matcher.appendTail(tailBuffer); + + lastIndex = matcher.end(); } + matcher.appendTail(buffer); + body = buffer.toString(); + + buffer = new StringBuffer(); + lastIndex = 0; + regex = "\\[\\[([^/]+)/([0-9a-f]+)\\]\\]"; matcher = Pattern.compile(regex).matcher(body); - + while(matcher.find()) { int wholeGroup = 0; int nameGroup = 1; @@ -485,12 +500,24 @@ String encodedName = encode(name); String link = "" + whole + ""; - body = matcher.replaceAll(link); + + matcher.appendReplacement(buffer, link); + + StringBuffer tailBuffer = new StringBuffer(buffer.toString()); + matcher.appendTail(tailBuffer); + + lastIndex = matcher.end(); } + matcher.appendTail(buffer); + body = buffer.toString(); + + buffer = new StringBuffer(); + lastIndex = 0; + regex = "\\[\\[/(" + TYPE_LIST + "|" + TYPE_NOTE + "|" + TYPE_THREAD + ")/([^/\\]]+)\\]\\]"; matcher = Pattern.compile(regex).matcher(body); - + while(matcher.find()) { int wholeGroup = 0; int typeGroup = 1; @@ -503,9 +530,21 @@ String encodedName = encode(name); String link = "" + whole + ""; - body = matcher.replaceAll(link); + + matcher.appendReplacement(buffer, link); + + StringBuffer tailBuffer = new StringBuffer(buffer.toString()); + matcher.appendTail(tailBuffer); + + lastIndex = matcher.end(); } + matcher.appendTail(buffer); + body = buffer.toString(); + + buffer = new StringBuffer(); + lastIndex = 0; + regex = "\\[\\[/(" + TYPE_LIST + "|" + TYPE_NOTE + "|" + TYPE_THREAD + ")/([^\\]]+)/([0-9a-f]+)\\]\\]"; @@ -526,8 +565,17 @@ String link = "" + whole + ""; - body = matcher.replaceAll(link); - } + + matcher.appendReplacement(buffer, link); + + StringBuffer tailBuffer = new StringBuffer(buffer.toString()); + matcher.appendTail(tailBuffer); + + lastIndex = matcher.end(); + } + + matcher.appendTail(buffer); + body = buffer.toString(); return body; }