From: James French Date: Mon, 2 Aug 2010 08:08:15 +0000 (+0800) Subject: Some cleanup X-Git-Tag: 0.7.1~4 X-Git-Url: https://git.ucc.asn.au/?p=frenchie%2Ficalparse.git;a=commitdiff_plain;h=d0370197c1715b2d2eb47ee190dfd92b62dada39 Some cleanup Fixes broken comments Makes the verbose option actually verbose --- diff --git a/icalparse.py b/icalparse.py index 3057560..653d559 100755 --- a/icalparse.py +++ b/icalparse.py @@ -26,10 +26,8 @@ import os class InvalidICS(Exception): pass -class notJoined(Exception): pass class IncompleteICS(InvalidICS): pass - def lineJoiner(oldcal): '''Takes a string containing a calendar and returns an array of its lines''' @@ -72,7 +70,8 @@ def lineFolder(oldcal, length=75): def splitFields(cal): - '''Takes a list of lines in a calendar file and returns a list of key, value pairs''' + '''Takes a list of lines in a calendar file and returns a list of tuples + as (key, value) pairs''' ical = [tuple(x.split(':',1)) for x in cal] @@ -85,7 +84,8 @@ def splitFields(cal): def joinFields(ical): - '''Takes a list of tuples that make up a calendar file and returns a list of lines''' + '''Takes a list of tuples that make up a calendar file and returns it to a + list of lines''' return [':'.join(x) for x in ical] @@ -125,9 +125,7 @@ def getContent(url='',stdin=False): def getHTTPContent(url='',cache='.httplib2-cache'): '''This function attempts to play nice when retrieving content from HTTP - services. It's what you should use in a CGI script. It will (by default) - slurp the first 20 bytes of the file and check that we are indeed looking - at an ICS file before going for broke.''' + services. It's what you should use in a CGI script.''' try: import httplib2 @@ -234,6 +232,8 @@ if __name__ == '__main__': parser = OptionParser('usage: %prog [options] url') parser.add_option('-s', '--stdin', action='store_true', dest='stdin', default=False, help='Take a calendar from standard input') + parser.add_option('-v', '--verbose', action='store_true', dest='verbose', + default=False, help='Be verbose when rules are being applied') parser.add_option('-o', '--output', dest='outfile', default='', help='Specify output file (defaults to standard output)') @@ -249,6 +249,6 @@ if __name__ == '__main__': content = getContent(url, options.stdin) cal = lineJoiner(content) - ical = applyRules(splitFields(cal), generateRules()) + ical = applyRules(splitFields(cal), generateRules(), options.verbose) output = lineFolder(joinFields(ical)) writeOutput(output, options.outfile) diff --git a/parserrules.py b/parserrules.py index 4f71e62..98405f3 100644 --- a/parserrules.py +++ b/parserrules.py @@ -22,13 +22,16 @@ # This file describes a series of rules which will be called on an ics file as # rule(key, value) -# Your functions are expected to return a (key, value) tuple or they will be treated as -# if they don't exist (ie, the line will go through unhindered). Returning an value which -# is boolean False will remove the offending line from the final ICS (unless it's a None). +# Your functions are expected to return a (key, value) tuple or they will be +# treated as if they don't exist (ie, the line will go through unhindered). +# Returning any boolean false value other than a None will return the line from +# the final iCalendar file -# The doc string will be presented to the user when run as verbose, so please be polite +# The doc string will be presented to the user when run as verbose, so +# please be polite def markEventsPublic(key, value): '''Marking private events public''' - # Required as google are strict about the CLASS:PRIVATE/CLASS:CONFIDENTIAL lines + # Required as google are strict about the CLASS:PRIVATE/CLASS:CONFIDENTIAL + # lines and Facebook like to set them if key == 'CLASS': return (key, 'PUBLIC')