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 attrs = parseAttributes(kw.get("format_args", ""), False) 36 37 self.fragment = attrs.get("fragment") 38 39 def format(self, fmt, write=None): 40 41 """ 42 Format an event using the given formatter 'fmt'. If the 'write' 43 parameter is specified, use it to write output; otherwise, write output 44 using the request. 45 """ 46 47 events = parseEvents(self.raw, EventPage(self.request.page), self.fragment) 48 49 for event in events: 50 formatEvent(event, self.request, fmt, write=write) 51 52 # Extra API methods. 53 54 def formatForOutputType(self, mimetype, write=None): 55 56 """ 57 Format an event for the given 'mimetype'. If the 'write' parameter is 58 specified, use it to write output; otherwise, write output using the 59 request. 60 """ 61 62 events = parseEvents(self.raw, EventPage(self.request.page), self.fragment) 63 formatEventsForOutputType(events, self.request, mimetype, write=write) 64 65 # Class methods. 66 67 def getOutputTypes(self): 68 return self.output_mimetypes 69 70 getOutputTypes = classmethod(getOutputTypes) 71 72 # vim: tabstop=4 expandtab shiftwidth=4