1 # -*- coding: iso-8859-1 -*- 2 """ 3 MoinMoin - event (EventAggregator) 4 5 @copyright: 2012 by Paul Boddie <paul@boddie.org.uk> 6 @license: GNU GPL (v2 or later), see COPYING.txt for details. 7 """ 8 9 from EventAggregatorSupport import * 10 11 Dependencies = ["pages"] 12 13 # Parser support. 14 15 class Parser: 16 17 "Interpret and show event information in different ways." 18 19 Dependencies = Dependencies 20 extensions = [] 21 22 # Output content types preferred by this parser. 23 24 output_mimetypes = ["text/html", "text/calendar"] 25 26 def __init__(self, raw, request, **kw): 27 28 """ 29 Initialise the parser with the given 'raw' data, 'request' and any 30 keyword arguments that may have been supplied. 31 """ 32 33 self.raw = raw 34 self.request = request 35 #self.attrs = parseAttributes(kw.get("format_args", ""), False) 36 37 def format(self, fmt, write=None): 38 39 """ 40 Format an event using the given formatter 'fmt'. If the 'write' 41 parameter is specified, use it to write output; otherwise, write output 42 using the request. 43 """ 44 45 events = parseEvents(self.raw, EventPage(self.request.page)) 46 47 for event in events: 48 formatEvent(event, self.request, fmt, write=write) 49 50 # Extra API methods. 51 52 def formatForOutputType(self, mimetype, write=None): 53 54 """ 55 Format an event for the given 'mimetype'. If the 'write' parameter is 56 specified, use it to write output; otherwise, write output using the 57 request. 58 """ 59 60 events = parseEvents(self.raw, EventPage(self.request.page)) 61 formatEventsForOutputType(events, self.request, mimetype, write=write) 62 63 # Class methods. 64 65 def getOutputTypes(self): 66 return self.output_mimetypes 67 68 getOutputTypes = classmethod(getOutputTypes) 69 70 # vim: tabstop=4 expandtab shiftwidth=4