Changeset 166
- Timestamp:
- 07/02/08 00:22:40 (3 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/antimatter/luke/myplugs/libtracker/timeparser.py
r165 r166 38 38 OUTPUT: TimeAdjustment 39 39 """ 40 #TODO: 41 # clean parser up 42 # seperate the conetnts into functions 43 40 44 #First part: On $date: 41 first = r"^(?:(?:on )?(\b\w+\b|\b\d{2,2}\b.\b\d{1,2}\b.\b\d{2,4}\b|\b\w+\b.\b\d{1,2}(?:,.\d{2,4})?).?[,:])?" 45 # where $date is in the form: "Friday", "07-23-1989", or "July 23, 1989" 46 setdate_re = r"^(?:(?:on )?(?P<prefix>\b\w+\b|\b\d{2,2}\b.\b\d{1,2}\b.\b\d{2,4}\b|\b\w+\b.\b\d{1,2}(?:,.\d{2,4})?).?[,:])?" 47 setdate = re.search(setdate_re + r"(?P<rest>.*)", ievent.txt, re.I).groupdict() 42 48 49 if (setdate): 50 day = setdate['prefix'] 51 52 #We will need to check what kind of command this is before parsing, but 53 # this will do for now 54 #Second part: $time to $time 55 # where $time is in the form: "11:30 PM" or "10:30" 56 time_re = r"(?:\d{1,2}(?::\d{2}) ?(?:[ap]m)?)" 57 second = r"(?:(?P<t_one>" + time_re + ") to (?P<t_two>" + time_re + "))" 58 #Last part: for $category 59 last = r"(?: for (.*))?$" 43 60 #setdate = re.findall(r"^on (\b\w+\b).?[,:](.*)", ievent.txt, re.I) 44 setdate = re.findall(first + r"(.*)", ievent.txt, re.I) 45 if (setdate): 46 setdate = setdate[0] 47 day = setdate[0] 48 time = setdate[1] 61 when = re.search(second + last, setdate['rest'], re.I).groupdict() 62 if (when): 63 t_one = when['t_one'] 64 t_two = when['t_two'] 49 65 adjustment = dt.timedelta(days=0) 50 66 weekdays = ['monday','tuesday','wednesday','thursday','friday','saturday','sunday'] … … 52 68 adjustment = dt.timedelta(days=7) 53 69 date = parse(day, fuzzy = True) - adjustment 54 time = repr(relativedelta(parse(time, fuzzy = True), dt.date.today())) 70 #time = repr(relativedelta(parse(time, fuzzy = True), dt.date.today())) 71 time = repr(relativedelta(parse(t_two, fuzzy = True), parse(t_one, fuzzy = True))) 55 72 reply = "Worked on: " + date.ctime() + " for " + time 56 73 ievent.reply(reply)