blob: d098517c9e31489e37fa008fefadc10389d6a024 [file] [log] [blame]
package com.atlassian.uwc.converters.trac;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.log4j.Logger;
import com.atlassian.uwc.converters.BaseConverter;
import com.atlassian.uwc.converters.tikiwiki.RegexUtil;
import com.atlassian.uwc.ui.Page;
public class ImageParamConverter extends BaseConverter {
Logger log = Logger.getLogger(this.getClass());
public void convert(Page page) {
log.info("Converting Trac Image Parameters -- starting");
String input = page.getOriginalText();
String converted = convertImageParams(input);
page.setConvertedText(converted);
log.info("Converting Trac Image Parameters -- complete");
}
Pattern image = Pattern.compile("(?<!\\\\)!([^!|\n]+\\|)([^!\n]+)(?<!\\\\)!");
protected String convertImageParams(String input) {
Matcher imageFinder = image.matcher(input);
StringBuffer sb = new StringBuffer();
boolean found = false;
while (imageFinder.find()) {
found = true;
String filename = imageFinder.group(1);
String params = imageFinder.group(2);
params = params.replaceAll(" +", ",");
params = handleNoKeyWidth(params);
String replacement = "!" + filename + params +"!";
replacement = RegexUtil.handleEscapesInReplacement(replacement);
imageFinder.appendReplacement(sb, replacement);
}
if (found) {
imageFinder.appendTail(sb);
return sb.toString();
}
return input;
}
Pattern nokey = Pattern.compile("(?<=^|,)\\s*\\d+%?(?=,|$)");
private String handleNoKeyWidth(String input) {
Matcher nokeyFinder = nokey.matcher(input);
StringBuffer sb = new StringBuffer();
boolean found = false;
while (nokeyFinder.find()) {
found = true;
String replacement = "thumbnail";
replacement = RegexUtil.handleEscapesInReplacement(replacement);
nokeyFinder.appendReplacement(sb, replacement);
}
if (found) {
nokeyFinder.appendTail(sb);
return sb.toString();
}
return input;
}
}