Path: | README |
Last Update: | Thu Nov 09 14:53:37 MST 2006 |
atom-tools is an all-in-one library for parsing, creating and manipulating Atom <www.w3.org/2005/Atom> feeds and entries. It handles all the nasty XML and HTTP details so that you don’t have to.
require "atom/feed" require "open-uri" feed = Atom::Feed.new "http://www.tbray.org/ongoing/ongoing.atom" # => <http://www.tbray.org/ongoing/ongoing.atom entries: 0 title=''> feed.update! feed.entries.length # => 20 feed.title.to_s # => "ongoing" feed.authors.first.name # => "Tim Bray" entry = feed.entries.first # => #<Atom::Entry id:'http://www.tbray.org/ongoing/When/200x/2006/11/07/Munich'> entry.title.to_s # => "M\303\274nchen" entry.links.last # => {"href"=>"http://www.tbray.org/ongoing/When/200x/2006/11/07/Munich#comments", "rel"=>"replies", "type" => "application/xhtml+xml"} entry.summary.to_s # => "That local spelling is nicer than the ugly English [...]"
Things are explained in more detail in the RDoc.
require "atom/app" app = Atom::App.new "http://necronomicorp.com/app.xml" coll = app.collections.first # => <http://necronomicorp.com/testatom?app entries: 0 title='testing: entry endpoint'> coll.update! # => <http://necronomicorp.com/testatom?app entries: 10 title='testing the APP'> entry = coll.entries.first entry.title # => 'html entities'#text # modify the title entry.title = "HTML entities" # store the modified entry coll.put! entry # => #<Net::HTTPOK 200 OK readbody=true> coll.entries.first.title # => 'HTML entities'#text
For details on authentication, see the documentation for Atom::HTTP
irt = REXML::Element.new("in-reply-to") irt.add_namespace "http://purl.org/syndication/thread/1.0" irt.attributes["ref"] = "tag:entries.com,2005:1" entry.extensions << irt entry.to_s # => '<entry xmlns="http://www.w3.org/2005/Atom"><in-reply-to ref="tag:entries.com,2005:1" xmlns="http://purl.org/syndication/thread/1.0"/></entry>'
if you feel like writing this stuff by hand, atom-tools can slurp an atom:entry from YAML:
require "atom/yaml" yaml = <<END title: Atom-Drunk Pirates Run Amok! tags: tag1 tag2 authors: - name: Brendan Taylor email: whateley@gmail.com - name: Harvey uri: http://fake.com/ content: | <p>blah blah blah blah</p> <p>and so on.</p> END entry = Atom::Entry.from_yaml(yaml)