1.1 --- a/EventAggregatorSupport/Types.py Sat Jan 25 23:40:30 2014 +0100
1.2 +++ b/EventAggregatorSupport/Types.py Tue Jan 28 01:44:23 2014 +0100
1.3 @@ -68,11 +68,31 @@
1.4
1.5 def parseEventsInCalendar(text):
1.6
1.7 - # Make a Unicode-capable StringIO.
1.8 + """
1.9 + Parse events in iCalendar format from the given 'text'.
1.10 + """
1.11 +
1.12 + # Fill the StringIO with encoded plain string data.
1.13 +
1.14 + encoding = "utf-8"
1.15 + calendar = parseEventsInCalendarFromResource(StringIO(text.encode(encoding)), encoding)
1.16 + return calendar.getEvents()
1.17 +
1.18 +def parseEventsInCalendarFromResource(f, encoding=None, url=None, metadata=None):
1.19
1.20 - f = getreader("utf-8")(StringIO(text.encode("utf-8")))
1.21 - calendar = EventCalendar("", vCalendar.parse(f), {})
1.22 - return calendar.getEvents()
1.23 + """
1.24 + Parse events in iCalendar format from the given file-like object 'f', with
1.25 + content having any specified 'encoding' and being described by the given
1.26 + 'url' and 'metadata'.
1.27 + """
1.28 +
1.29 + # Read Unicode from the resource.
1.30 +
1.31 + uf = getreader(encoding or "utf-8")(f)
1.32 + try:
1.33 + return EventCalendar(url or "", vCalendar.parse(uf), metadata or {})
1.34 + finally:
1.35 + uf.close()
1.36
1.37 def parseEvents(text, event_page, fragment=None):
1.38