package org.jabref.logic.msbib;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
public class PageNumbers {
private static final Pattern PAGE_PATTERN = Pattern.compile("\\s*(\\d+)\\s*-{1,2}\\s*(\\d+)\\s*");
private String freeform;
private int start;
private int end;
public PageNumbers(String pages) {
parsePageNums(pages);
}
private void parsePageNums(String pages) {
Matcher matcher = PAGE_PATTERN.matcher(pages);
if (matcher.matches()) {
start = Integer.parseInt(matcher.group(1));
end = Integer.parseInt(matcher.group(2));
} else {
freeform = pages;
}
}
public Element getDOMrepresentation(Document document) {
Element result = document.createElement("extent");
result.setAttribute("unit", "page");
if (freeform == null) {
Element tmpStart = document.createElement("start");
Element tmpEnd = document.createElement("end");
tmpStart.appendChild(document.createTextNode(String.valueOf(this.start)));
tmpEnd.appendChild(document.createTextNode(String.valueOf(this.end)));
result.appendChild(tmpStart);
result.appendChild(tmpEnd);
} else {
Node textNode = document.createTextNode(freeform);
result.appendChild(textNode);
}
return result;
}
public String toString(String separator) {
if (freeform != null) {
return freeform;
}
return start + separator + end;
}
@Override
public String toString() {
return toString("-");
}
}