Cleaned up some of the title parsing code

pull/14/head
Sam Bosley 14 years ago
parent 86298cbdb6
commit bb272ef947

@ -348,7 +348,7 @@ public class TaskService {
@SuppressWarnings("nls") @SuppressWarnings("nls")
public static void parseQuickAddMarkup(Task task, ArrayList<String> tags) { public static void parseQuickAddMarkup(Task task, ArrayList<String> tags) {
TitleParser parse = new TitleParser(task, tags); new TitleParser(task, tags).parse();
} }

@ -19,10 +19,9 @@ public class TitleParser {
public TitleParser(Task task, ArrayList<String> tags){ public TitleParser(Task task, ArrayList<String> tags){
this.task = task; this.task = task;
this.tags = tags; this.tags = tags;
runAllHelpers();
} }
private void runAllHelpers(){ public void parse(){
repeatHelper(task); repeatHelper(task);
dayHelper(task); dayHelper(task);
listHelper(task,tags); listHelper(task,tags);
@ -52,15 +51,16 @@ public class TitleParser {
} }
//helper method for priorityHelper. converts the string to a Task Importance //helper method for priorityHelper. converts the string to a Task Importance
@SuppressWarnings("nls")
private static int str_to_priority(String priority_str) { private static int str_to_priority(String priority_str) {
if (priority_str!=null) if (priority_str!=null)
priority_str.toLowerCase().trim(); priority_str.toLowerCase().trim();
int priority = Task.IMPORTANCE_DO_OR_DIE; int priority = Task.IMPORTANCE_DO_OR_DIE;
if (priority_str.equals ("0") || priority_str.equals ("!0") || priority_str.equals("least") || priority_str.equals("lowest")) if ("0".equals(priority_str) || "!0".equals(priority_str) || "least".equals(priority_str) || "lowest".equals(priority_str))
priority = Task.IMPORTANCE_NONE; priority = Task.IMPORTANCE_NONE;
if (priority_str.equals ("!") || priority_str.equals ("!1") || priority_str.equals("bang") || priority_str.equals("1") || priority_str.equals("low")) if ("!".equals(priority_str) || "!1".equals(priority_str) || "bang".equals(priority_str) || "1".equals(priority_str) || "low".equals(priority_str))
priority = Task.IMPORTANCE_SHOULD_DO; priority = Task.IMPORTANCE_SHOULD_DO;
if (priority_str.equals("!!") || priority_str.equals ("!2") || priority_str.equals("bang bang") || priority_str.equals("2") || priority_str.equals("high")) if ("!!".equals(priority_str) || "!2".equals(priority_str) || "bang bang".equals(priority_str) || "2".equals(priority_str) || "high".equals(priority_str))
priority = Task.IMPORTANCE_MUST_DO; priority = Task.IMPORTANCE_MUST_DO;
return priority; return priority;
} }
@ -108,6 +108,7 @@ public class TitleParser {
//Handles setting the task's date. //Handles setting the task's date.
//Day of week (e.g. Monday, Tuesday,..) is overridden by a set date (e.g. October 23 2013). //Day of week (e.g. Monday, Tuesday,..) is overridden by a set date (e.g. October 23 2013).
//Vague times (e.g. breakfast, night) are overridden by a set time (9 am, at 10, 17:00) //Vague times (e.g. breakfast, night) are overridden by a set time (9 am, at 10, 17:00)
@SuppressWarnings("nls")
private static void dayHelper(Task task ) { private static void dayHelper(Task task ) {
String inputText = task.getValue(Task.TITLE); String inputText = task.getValue(Task.TITLE);
Calendar cal = null; Calendar cal = null;
@ -133,7 +134,6 @@ public class TitleParser {
} }
} }
String ds = "3[0-1]|[0-2]?[0-9]"; //day string for date regexes
String[] dates = { String[] dates = {
"(?i)\\b(jan(\\.|uary))(\\s(3[0-1]|[0-2]?[0-9])),?( (\\d{4}|\\d{2}))?", "(?i)\\b(jan(\\.|uary))(\\s(3[0-1]|[0-2]?[0-9])),?( (\\d{4}|\\d{2}))?",
"(?i)\\b(feb(\\.|ruary))(\\s(3[0-1]|[0-2]?[0-9])),?( (\\d{4}|\\d{2}))?", "(?i)\\b(feb(\\.|ruary))(\\s(3[0-1]|[0-2]?[0-9])),?( (\\d{4}|\\d{2}))?",
@ -203,7 +203,7 @@ public class TitleParser {
} }
} }
HashMap<String, Integer> dayTimes = new HashMap(); HashMap<String, Integer> dayTimes = new HashMap<String, Integer>();
dayTimes.put("(?i)\\bbreakfast\\b", 8); dayTimes.put("(?i)\\bbreakfast\\b", 8);
dayTimes.put("(?i)\\blunch\\b", 12); dayTimes.put("(?i)\\blunch\\b", 12);
dayTimes.put("(?i)\\bsupper\\b" ,18); dayTimes.put("(?i)\\bsupper\\b" ,18);
@ -213,7 +213,7 @@ public class TitleParser {
dayTimes.put("(?i)\\bafternoon\\b", 15); dayTimes.put("(?i)\\bafternoon\\b", 15);
dayTimes.put("(?i)\\bevening\\b" , 19); dayTimes.put("(?i)\\bevening\\b" , 19);
dayTimes.put("(?i)\\bnight\\b" , 19); dayTimes.put("(?i)\\bnight\\b" , 19);
dayTimes.put("(?i)\\bmidnight\\b" , 24); dayTimes.put("(?i)\\bmidnight\\b" , 0);
dayTimes.put("(?i)\\bnoon\\b" , 12); dayTimes.put("(?i)\\bnoon\\b" , 12);
for (String dayTime: dayTimes.keySet()){ for (String dayTime: dayTimes.keySet()){
@ -297,23 +297,21 @@ public class TitleParser {
if( cal!= null ){ //if at least one of the above has been called, write to task. else do nothing. if( cal!= null ){ //if at least one of the above has been called, write to task. else do nothing.
if (containsSpecificTime) { if (containsSpecificTime) {
Long dueDate = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, cal.getTime().getTime()); task.setValue(Task.DUE_DATE, Task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, cal.getTime().getTime()));
task.setValue(Task.DUE_DATE, dueDate); } else {
} task.setValue(Task.DUE_DATE, Task.createDueDate(Task.URGENCY_SPECIFIC_DAY, cal.getTime().getTime()));
else {
Long dueDate = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY, cal.getTime().getTime());
task.setValue(Task.DUE_DATE, dueDate);
} }
} }
} }
//---------------------DATE-------------------------- //---------------------DATE--------------------------
//Parses through the text and sets the frequency of the task. //Parses through the text and sets the frequency of the task.
@SuppressWarnings("nls")
private static void repeatHelper(Task task) { private static void repeatHelper(Task task) {
String inputText = task.getValue(Task.TITLE); String inputText = task.getValue(Task.TITLE);
HashMap<String, Frequency> repeatTimes = new HashMap(); HashMap<String, Frequency> repeatTimes = new HashMap<String, Frequency>();
repeatTimes.put("(?i)\\bevery ?\\w{0,6} days?\\b" , Frequency.DAILY); repeatTimes.put("(?i)\\bevery ?\\w{0,6} days?\\b" , Frequency.DAILY);
repeatTimes.put("(?i)\\bevery ?\\w{0,6} nights?\\b" , Frequency.DAILY); repeatTimes.put("(?i)\\bevery ?\\w{0,6} ?nights?\\b" , Frequency.DAILY);
repeatTimes.put("(?i)\\bevery ?\\w{0,6} ?mornings?\\b" , Frequency.DAILY); repeatTimes.put("(?i)\\bevery ?\\w{0,6} ?mornings?\\b" , Frequency.DAILY);
repeatTimes.put("(?i)\\bevery ?\\w{0,6} ?evenings?\\b" , Frequency.DAILY); repeatTimes.put("(?i)\\bevery ?\\w{0,6} ?evenings?\\b" , Frequency.DAILY);
repeatTimes.put("(?i)\\bevery ?\\w{0,6} ?afternoons?\\b" , Frequency.DAILY); repeatTimes.put("(?i)\\bevery ?\\w{0,6} ?afternoons?\\b" , Frequency.DAILY);
@ -322,7 +320,7 @@ public class TitleParser {
repeatTimes.put("(?i)\\bevery \\w{0,6} ?months?\\b", Frequency.MONTHLY); repeatTimes.put("(?i)\\bevery \\w{0,6} ?months?\\b", Frequency.MONTHLY);
repeatTimes.put("(?i)\\bevery \\w{0,6} ?years?\\b", Frequency.YEARLY); repeatTimes.put("(?i)\\bevery \\w{0,6} ?years?\\b", Frequency.YEARLY);
HashMap<String, Frequency> repeatTimesIntervalOne = new HashMap(); HashMap<String, Frequency> repeatTimesIntervalOne = new HashMap<String, Frequency>();
//pre-determined intervals of 1 //pre-determined intervals of 1
repeatTimesIntervalOne.put( "(?i)\\bdaily\\b" , Frequency.DAILY); repeatTimesIntervalOne.put( "(?i)\\bdaily\\b" , Frequency.DAILY);
repeatTimesIntervalOne.put( "(?i)\\beveryday\\b" , Frequency.DAILY); repeatTimesIntervalOne.put( "(?i)\\beveryday\\b" , Frequency.DAILY);
@ -339,6 +337,7 @@ public class TitleParser {
rrule.setFreq(rtime); rrule.setFreq(rtime);
rrule.setInterval(findInterval(inputText)); rrule.setInterval(findInterval(inputText));
task.setValue(Task.RECURRENCE, rrule.toIcal()); task.setValue(Task.RECURRENCE, rrule.toIcal());
return;
} }
} }
@ -352,6 +351,7 @@ public class TitleParser {
rrule.setInterval(1); rrule.setInterval(1);
String thing = rrule.toIcal(); String thing = rrule.toIcal();
task.setValue(Task.RECURRENCE, thing); task.setValue(Task.RECURRENCE, thing);
return;
} }
} }
} }
@ -376,6 +376,13 @@ public class TitleParser {
String interval_str = m.group(1); String interval_str = m.group(1);
if (words_to_num.containsKey(interval_str)) if (words_to_num.containsKey(interval_str))
interval = words_to_num.get(interval_str); interval = words_to_num.get(interval_str);
else {
try {
interval = Integer.parseInt(interval_str);
} catch (NumberFormatException e) {
// Ah well
}
}
} }
return interval; return interval;
} }

@ -3,5 +3,6 @@
<classpathentry kind="src" path="src"/> <classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="gen"/> <classpathentry kind="src" path="gen"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/> <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry kind="output" path="bin/classes"/> <classpathentry kind="output" path="bin/classes"/>
</classpath> </classpath>

Loading…
Cancel
Save