blob: f0f339bdc4afc7141d808d26a9c520141bb15492 [file] [log] [blame]
package com.atlassian.uwc.converters.dokuwiki;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.atlassian.uwc.converters.BaseConverter;
import com.atlassian.uwc.converters.tikiwiki.RegexUtil;
import com.atlassian.uwc.ui.Page;
public class PrepColSpansConverter extends BaseConverter {
public static final String TOKENKEY = "UWCTOKENCOLSPANS:";
private static final String DELIM = "::";
@Override
public void convert(Page page) {
String input = page.getOriginalText();
String converted = prep(input);
page.setConvertedText(converted);
}
Pattern colspan = Pattern.compile("[|]{2,}");
protected String prep(String input) {
input = removeEmptyColspanLines(input);
Matcher spanFinder = colspan.matcher(input);
StringBuffer sb = new StringBuffer();
boolean found = false;
while (spanFinder.find()) {
found = true;
String spans = spanFinder.group();
int spanlength = spans.length();
String replacement = DELIM +TOKENKEY+spanlength+DELIM +"|";
replacement = RegexUtil.handleEscapesInReplacement(replacement);
spanFinder.appendReplacement(sb, replacement);
}
if (found) {
spanFinder.appendTail(sb);
return sb.toString();
}
return input;
}
Pattern emptycolspan = Pattern.compile("(\n{2,})\\|+(?=\n)");
private String removeEmptyColspanLines(String input) {
Matcher emptyFinder = emptycolspan.matcher(input);
StringBuffer sb = new StringBuffer();
boolean found = false;
while (emptyFinder.find()) {
found = true;
String replacement = emptyFinder.group(1);
replacement = RegexUtil.handleEscapesInReplacement(replacement);
emptyFinder.appendReplacement(sb, replacement);
}
if (found) {
emptyFinder.appendTail(sb);
return sb.toString();
}
return input;
}
}