package org.atc.tools.ant.parsers;
import org.atc.tools.ant.Item;
public class GenericItemParser implements ItemParser {
public Item parse(String line) {
//The content of the todo, e.g. "Refactor" in TODO Refactor
String content = "";
Item item = new Item();
//TODO: this was a "simplest implementation" quick hack; make this more scalable and elegant
// It allowed me to unit test and prove it was possible, but it's not brilliant!
//We do tests on the upper-case lines, so we include lower case TODOs or FIXMEs;
//The substrings, however, are performed on the original line so the comments case is preserved
String upperCaseLine = line.toUpperCase();
if (upperCaseLine.contains("TODO")) {
item.setType(Item.ItemType.TODO);
content = line.substring(upperCaseLine.indexOf("TODO") + 4);
} else if (upperCaseLine.contains("FIXME")) {
item.setType(Item.ItemType.FIXME);
content = line.substring(upperCaseLine.indexOf("FIXME") + 5);
}
item.setContent(content);
return item;
}
public boolean containsItem(String line) {
String lineUpperCase = line.toUpperCase();
return (line.contains("//") || line.contains("/*") || line.contains("#") || line.startsWith("*")) &&
(lineUpperCase.contains("TODO") || lineUpperCase.contains("FIXME"));
}
}