package org.wikibrain.parser.wiki;
import org.wikibrain.core.lang.Language;
import org.wikibrain.core.lang.LanguageInfo;
import org.wikibrain.core.model.Title;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
*/
public class RedirectParser {
private final LanguageInfo language;
private static final Pattern redirectPattern = Pattern.compile("<redirect title=\"(.*?)\" />");
public RedirectParser(Language language) {
this.language = LanguageInfo.getByLanguage(language);
}
public boolean isRedirect(String body) {
return extractSingleString(redirectPattern, body, 1) != null;
}
public Title getRedirect(String body) {
String title = extractSingleString(redirectPattern, body, 1);
return new Title(title, language);
}
private static String extractSingleString(Pattern patternToMatch, String body, int matchNum){
if (patternToMatch == null || body == null) {
return null;
}
Matcher matcher = patternToMatch.matcher(body);
int counter = 0;
String curGroup = null;
while (matcher.find() && counter < matchNum){
curGroup = matcher.group(1);
counter++;
}
return curGroup;
}
}