![](https://secure.gravatar.com/avatar/8ac615df352a970211b0e3d94a307c6d.jpg?s=120&d=mm&r=g)
Author: david.goodger Date: Tue Jan 31 16:25:23 2006 New Revision: 42208 Modified: sandbox/trunk/pycon/parse-sched.py Log: parameterized parse(); partially fixed plenary logic; added talk number to rendered title; whitespace Modified: sandbox/trunk/pycon/parse-sched.py ============================================================================== --- sandbox/trunk/pycon/parse-sched.py (original) +++ sandbox/trunk/pycon/parse-sched.py Tue Jan 31 16:25:23 2006 @@ -3,7 +3,7 @@ # Reads a page with a wiki-format table # Basic data structure of dictionary: -# {(year, month, day) -> [(time, duration, title)] +# {(year, month, day) -> [(room, time, duration, title)] import sys, optparse import re, string @@ -16,18 +16,17 @@ line_pat = re.compile('[|]{2}.*[|]{2}\s*$') talk_pat = re.compile('#(\d+)') -def parse (): - lines = sys.stdin.readlines() +def parse (lines): lines = map(string.strip, lines) d = {} date = None - + for line in lines: m = date_pat.match(line) if m: date = [int(value) for value in m.group(1,2,3)] date = tuple(date) - + m = line_pat.match(line) if m: if date is None: @@ -71,7 +70,7 @@ L[1] = '%02i:%02i' % (hour, min) L[2] = int(L[2]) return tuple(L) - + # @@ -98,8 +97,8 @@ if span == len(time_list): return 1 return span+1 - - + + def format_day (day, output): # Figure out unique rooms rooms = [] @@ -127,7 +126,7 @@ print >>output, '<th>%s</th>' % room, print >>output, '</tr>' print >>output, "</thead>" - + # Sort list time_dict = {} for room, time, duration, title in day: @@ -145,7 +144,7 @@ if end_time <= time: del active[act_room] print >>output, '<th>%s</th>' % time, - plenary = (len(room_dict) == 1) + plenary = (len(room_dict) == 1 and room_dict.keys()[0] == '---') if plenary: # Plenary session of some sort duration, title = room_dict.values()[0] @@ -153,7 +152,7 @@ print >>output, '<td align="center" colspan=%i>%s</td>' % (colspan, title), print >>output, '</tr>' continue - + for room in rooms: # Room still occupied, so skip it if room in active: @@ -174,13 +173,17 @@ if m is not None: talk_num = int(m.group(1)) title = talks.get_title(talk_num) + url = ('http://wiki.python.org/moin/PyCon2006/Talks#%s' + % talk_num) + title = '%s (<a href="%s">%s</a>)' % (cgi.escape(title), + url, talk_num) else: title = cgi.escape(title) - + print >>output, '<td rowspan="%i">' % rowspan, print >>output, title, print >>output, '</td>', - + print >>output, '</tr>' print '</tbody>' @@ -195,7 +198,7 @@ print >>output, date.strftime('<h3>%A, %B %d %Y</h3>') format_day(day_data, output) - + def main (): parser = optparse.OptionParser(usage="usage: %prog [options] < final-schedule") parser.add_option('--format', @@ -206,7 +209,7 @@ help = "Select output format") options, args = parser.parse_args() - d = parse() + d = parse(lines=sys.stdin.readlines()) fmt = options.format if fmt == 'print': pprint.pprint(d) @@ -221,12 +224,6 @@ else: print >>sys.stderr, "Unknown format %r" % fmt sys.exit(1) - + if __name__ == '__main__': main() - - - - - -
participants (1)
-
david.goodger