Software Freedom Law Center

Changeset 166

Show
Ignore:
Timestamp:
07/02/08 00:22:40 (3 months ago)
Author:
landon
Message:

Bot can now handle messages of the form: On Friday: 3:30 am to 4:30 pm

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/antimatter/luke/myplugs/libtracker/timeparser.py

    r165 r166  
    3838    OUTPUT: TimeAdjustment 
    3939    """ 
     40    #TODO: 
     41    #   clean parser up 
     42    #   seperate the conetnts into functions 
     43 
    4044    #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() 
    4248 
     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 (.*))?$" 
    4360    #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'] 
    4965        adjustment = dt.timedelta(days=0) 
    5066        weekdays = ['monday','tuesday','wednesday','thursday','friday','saturday','sunday'] 
     
    5268            adjustment = dt.timedelta(days=7) 
    5369        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))) 
    5572        reply = "Worked on: " + date.ctime() + " for " + time 
    5673        ievent.reply(reply) 

SFLC Main Page

[frdm] Support SFLC