protected String convertAttachments()

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;
	}