pycalendar.git
11 years agoMANIFEST.in: Add a basic manifest
W. Trevor King [Sun, 30 Jun 2013 17:34:15 +0000 (13:34 -0400)]
MANIFEST.in: Add a basic manifest

We don't have any READMEs under test/ yet, but I imagine we will
eventually.

11 years agosetup.py: Add a boilerplate setup.py
W. Trevor King [Sun, 30 Jun 2013 17:32:23 +0000 (13:32 -0400)]
setup.py: Add a boilerplate setup.py

11 years ago.gitignore: Add the usual suspects
W. Trevor King [Sun, 30 Jun 2013 17:26:08 +0000 (13:26 -0400)]
.gitignore: Add the usual suspects

11 years ago.update-copyright.conf: Add copyright configuration
W. Trevor King [Sun, 30 Jun 2013 17:24:59 +0000 (13:24 -0400)]
.update-copyright.conf: Add copyright configuration

Use my external update-copyright package to maintain copyright blurbs.

http://pypi.python.org/pypi/update-copyright/

11 years agoentry: Make Entry a subclass of dict
W. Trevor King [Sun, 30 Jun 2013 17:19:16 +0000 (13:19 -0400)]
entry: Make Entry a subclass of dict

This gives us the familiar interface, and moves key/value processing
to a one-time-per-entry loop in ._fill_dict().

11 years agoentry: Add Entry.process() and .get*()
W. Trevor King [Sun, 30 Jun 2013 16:19:38 +0000 (12:19 -0400)]
entry: Add Entry.process() and .get*()

Because we will definitely want a Pythonic API to access entry items.

11 years agofeed: Use splitlines() instead of split('\r\n') in Feed.process()
W. Trevor King [Sun, 30 Jun 2013 16:33:48 +0000 (12:33 -0400)]
feed: Use splitlines() instead of split('\r\n') in Feed.process()

The specs require '\r\n', but we don't have to be that strict.

11 years agoaggregator: Escape VERSION and PRODID
W. Trevor King [Sun, 30 Jun 2013 16:09:04 +0000 (12:09 -0400)]
aggregator: Escape VERSION and PRODID

From RFC 5545, sections 3.7.3 (Product Identifier) and 3.7.4
(Version), these are both text fields.

11 years agotext: Add escape() and unescape() for RFC 5545 compliance
W. Trevor King [Sun, 30 Jun 2013 16:04:35 +0000 (12:04 -0400)]
text: Add escape() and unescape() for RFC 5545 compliance

11 years agoaggregator: Add processors field for post-fetch processing hooks
W. Trevor King [Sun, 30 Jun 2013 15:15:10 +0000 (11:15 -0400)]
aggregator: Add processors field for post-fetch processing hooks

11 years agofeed: Turn Feed into a set of entries
W. Trevor King [Sun, 30 Jun 2013 15:07:39 +0000 (11:07 -0400)]
feed: Turn Feed into a set of entries

11 years agoentry: Add an initial Entry implementation
W. Trevor King [Sun, 30 Jun 2013 15:07:18 +0000 (11:07 -0400)]
entry: Add an initial Entry implementation

11 years agofeed: Only fetch if we haven't already (or if we're forcing a fetch)
W. Trevor King [Sun, 30 Jun 2013 14:35:33 +0000 (10:35 -0400)]
feed: Only fetch if we haven't already (or if we're forcing a fetch)

11 years agoaggregator: Add an initial Aggregator implementation
W. Trevor King [Sun, 30 Jun 2013 14:27:44 +0000 (10:27 -0400)]
aggregator: Add an initial Aggregator implementation

Currently broken pending support for `for entry in feed`.  The version
and product identifier fields are required, as specified in RFC 5545,
sections 3.7.3 (Product Identifier) and 3.7.4 (Version).  They'll also
need to have special characters (e.g. commas) escaped, but I'll get to
that later.

11 years agofeed: Implement feed.fetch()
W. Trevor King [Sun, 30 Jun 2013 14:04:48 +0000 (10:04 -0400)]
feed: Implement feed.fetch()

Add __version__, __url__, and USER_AGENT to the package namespace, so
we have a useful user agent to use when fetching.  The fetch code can
hard-code UTF-8 as the feed charset, because RFC 5545, section 6
(Internationalization Considerations) reads:

  Applications MUST generate iCalendar streams in the UTF-8 charset
  and MUST accept an iCalendar stream in the UTF-8 or US-ASCII
  charset.

From a character conversion standpoint, that means we can always use
UTF-8, because US-ASCII is a subset of UTF-8.

11 years agotest/data/geohash.ics: Pull out geohashing example from Feed doctest
W. Trevor King [Sun, 30 Jun 2013 13:41:21 +0000 (09:41 -0400)]
test/data/geohash.ics: Pull out geohashing example from Feed doctest

This makes it easier to reuse the test data in other locations.

Also escape commas in the data.  From RFC 5545, section 3.3.11. Text:

  The "TEXT" property values may also contain special characters that
  are used to signify delimiters, such as a COMMA character for lists
  of values or a SEMICOLON character for structured values.  In order
  to support the inclusion of these special characters in "TEXT"
  property values, they MUST be escaped with a BACKSLASH character.

11 years agofeed: Stub out the Feed class
W. Trevor King [Sun, 30 Jun 2013 13:25:29 +0000 (09:25 -0400)]
feed: Stub out the Feed class

11 years agoBegin versioning under the GPLv3
W. Trevor King [Sun, 30 Jun 2013 12:54:37 +0000 (08:54 -0400)]
Begin versioning under the GPLv3