summary |
shortlog | log |
commit |
commitdiff |
tree
first ⋅ prev ⋅ next
W. Trevor King [Sun, 30 Jun 2013 20:22:06 +0000 (16:22 -0400)]
test/data/bootcamps: Add a whole bunch of SWC boot camp feeds
This gives us lots of example feeds to aggregate.
W. Trevor King [Sun, 30 Jun 2013 20:07:35 +0000 (16:07 -0400)]
test/data/geohash.ics: Separate lat/lon with a semicolon
From RFC 5545, section 3.8.1.6 (Geographic Position):
Value Type: FLOAT. The value MUST be two SEMICOLON-separated FLOAT
values.
W. Trevor King [Sun, 30 Jun 2013 19:03:03 +0000 (15:03 -0400)]
entry: Die unless we're parsing a version 2.0 iCalendar
RFC 5545, section 3.7.4 (Version) describes this text field. Until I
actually see something using using the (minver ";" maxver) syntax,
I'll just require everything to be version 2.0.
W. Trevor King [Sun, 30 Jun 2013 18:52:12 +0000 (14:52 -0400)]
entry: Adjust entry parsing to handle nested entries (BEGIN & END)
Now Entry can parse a whole VCALENDAR, and return a nested tree of
Entry instances.
This also makes Feed a subclass of Entry. The new entry BEGIN/END
parsing is derived from the old Feed BEGIN/END parsing.
W. Trevor King [Sun, 30 Jun 2013 18:14:08 +0000 (14:14 -0400)]
entry: Hash entries by their UID (when possible)
From RFC 5545, section 3.8.4.7 (Unique Identifier):
Conformance: The property MUST be specified in the "VEVENT",
"VTODO", "VJOURNAL", or "VFREEBUSY" calendar components.
W. Trevor King [Sun, 30 Jun 2013 18:11:18 +0000 (14:11 -0400)]
README: Add installation and testing advice
W. Trevor King [Sun, 30 Jun 2013 17:55:44 +0000 (13:55 -0400)]
README: Flesh out the description with links to other aggregators
Unfortunately, none of the existing aggregators are libraries.
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.
W. Trevor King [Sun, 30 Jun 2013 17:32:23 +0000 (13:32 -0400)]
setup.py: Add a boilerplate setup.py
W. Trevor King [Sun, 30 Jun 2013 17:26:08 +0000 (13:26 -0400)]
.gitignore: Add the usual suspects
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/
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().
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.
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.
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.
W. Trevor King [Sun, 30 Jun 2013 16:04:35 +0000 (12:04 -0400)]
text: Add escape() and unescape() for RFC 5545 compliance
W. Trevor King [Sun, 30 Jun 2013 15:15:10 +0000 (11:15 -0400)]
aggregator: Add processors field for post-fetch processing hooks
W. Trevor King [Sun, 30 Jun 2013 15:07:39 +0000 (11:07 -0400)]
feed: Turn Feed into a set of entries
W. Trevor King [Sun, 30 Jun 2013 15:07:18 +0000 (11:07 -0400)]
entry: Add an initial Entry implementation
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)
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.
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.
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.
W. Trevor King [Sun, 30 Jun 2013 13:25:29 +0000 (09:25 -0400)]
feed: Stub out the Feed class
W. Trevor King [Sun, 30 Jun 2013 12:54:37 +0000 (08:54 -0400)]
Begin versioning under the GPLv3