in src/main/java/com/atlassian/uwc/converters/jspwiki/ImageConverter.java [189:251]
protected String convertAttachments(String input, String thisPagename) {
String pagedir = getPageDir();
Matcher attachmentsFinder = attachmentsPattern.matcher(input);
StringBuffer sb = new StringBuffer();
boolean found = false;
//find attachment
while (attachmentsFinder.find()) {
found = true;
String leftOfDot = attachmentsFinder.group(1);
String extension = attachmentsFinder.group(2);
//is this supposed to be escaped?
if (pagedir != null && isPage(pagedir, leftOfDot+extension)) continue;
if (extension.length() > 5) continue; //Extensions are period + 1-4 chars
if (notLink(leftOfDot)) continue;
//is there an alias?
Matcher attachmentsWithAliasFinder =
attachmentsWithAliasPattern.matcher(leftOfDot);
String alias = "";
String filename = leftOfDot;
if (attachmentsWithAliasFinder.matches()) {
alias = attachmentsWithAliasFinder.group(1);
filename = attachmentsWithAliasFinder.group(2);
}
if (hasProtocol(filename)) continue;
//check for pagename
String pagename = "";
Matcher attachmentsWithPagenameFinder =
attachmentsWithPagenamePattern.matcher(filename);
if (attachmentsWithPagenameFinder.matches()) {
pagename = attachmentsWithPagenameFinder.group(1);
filename = attachmentsWithPagenameFinder.group(2);
filename = filename.replaceAll("[+]", " ");
}
//check to see if we don't need the pagename
Matcher extensionFinder = extractExtension.matcher(thisPagename);
if (extensionFinder.matches()) thisPagename = extensionFinder.group(1);
if (thisPagename != null && thisPagename.equals(pagename))
pagename = "";
//check for external link
if (hasProtocol(pagename)) continue;
//check for imageness
String replacement = "";
if (isImage(extension)) {
filename += extension;
if (!"".equals(pagename)) pagename += "^";
replacement = "!" + pagename + filename + "!";
}
else {
filename += extension;
replacement = "[" + alias + pagename + "^" + filename + "]";
}
log.debug("replacement = " + replacement);
attachmentsFinder.appendReplacement(sb, replacement);
}
if (found) {
attachmentsFinder.appendTail(sb);
return sb.toString();
}
return input;
}