atom-tools 0.9.0 → 2.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. data/COPYING +3 -3
  2. data/README +9 -49
  3. data/Rakefile +65 -62
  4. data/bin/atom-cp +159 -0
  5. data/bin/atom-grep +78 -0
  6. data/bin/atom-post +73 -0
  7. data/bin/atom-purge +82 -0
  8. data/doc/classes/Atom/AttrEl.html +163 -0
  9. data/doc/classes/Atom/Author.html +2 -19
  10. data/doc/classes/Atom/AutodiscoveryFailure.html +111 -0
  11. data/doc/classes/Atom/Categories.html +168 -0
  12. data/doc/classes/Atom/Category.html +10 -1
  13. data/doc/classes/Atom/Collection.html +194 -91
  14. data/doc/classes/Atom/Content.html +42 -1
  15. data/doc/classes/Atom/Contributor.html +2 -8
  16. data/doc/classes/Atom/Control.html +126 -0
  17. data/doc/classes/Atom/Converters.html +571 -0
  18. data/doc/classes/Atom/DigestAuth.html +285 -0
  19. data/doc/classes/Atom/Element.html +673 -106
  20. data/doc/classes/Atom/FileCache.html +287 -0
  21. data/doc/classes/Atom/HTTP.html +211 -95
  22. data/doc/classes/Atom/HTTPResponse.html +190 -0
  23. data/doc/classes/Atom/HasCategories.html +187 -0
  24. data/doc/classes/Atom/HasLinks.html +168 -0
  25. data/doc/classes/Atom/Link.html +80 -3
  26. data/doc/classes/Atom/NilCache.html +202 -0
  27. data/doc/classes/Atom/ParseError.html +111 -0
  28. data/doc/classes/Atom/Parsers.html +311 -0
  29. data/doc/classes/Atom/Person.html +130 -0
  30. data/doc/classes/Atom/Rights.html +113 -0
  31. data/doc/classes/Atom/Service.html +298 -0
  32. data/doc/{files/lib/atom/yaml_rb.html → classes/Atom/Source.html} +26 -24
  33. data/doc/classes/Atom/Subtitle.html +113 -0
  34. data/doc/classes/Atom/Summary.html +113 -0
  35. data/doc/classes/Atom/Text.html +196 -53
  36. data/doc/classes/Atom/Title.html +113 -0
  37. data/doc/classes/Atom/Tools.html +525 -0
  38. data/doc/classes/Atom/Workspace.html +121 -0
  39. data/doc/classes/Object.html +204 -0
  40. data/doc/created.rid +1 -1
  41. data/doc/files/README.html +9 -49
  42. data/doc/files/lib/atom/cache_rb.html +302 -0
  43. data/doc/files/lib/atom/collection_rb.html +1 -2
  44. data/doc/files/lib/atom/element_rb.html +2 -1
  45. data/doc/files/lib/atom/entry_rb.html +2 -2
  46. data/doc/files/lib/atom/feed_rb.html +1 -2
  47. data/doc/files/lib/atom/http_rb.html +6 -1
  48. data/doc/files/lib/atom/{xml_rb.html → service_rb.html} +8 -6
  49. data/doc/files/lib/atom/text_rb.html +2 -1
  50. data/doc/files/lib/atom/{app_rb.html → tools_rb.html} +4 -6
  51. data/doc/fr_class_index.html +23 -3
  52. data/doc/fr_file_index.html +3 -3
  53. data/doc/fr_method_index.html +111 -36
  54. data/lib/atom/cache.rb +178 -0
  55. data/lib/atom/collection.rb +90 -40
  56. data/lib/atom/element.rb +569 -161
  57. data/lib/atom/entry.rb +63 -89
  58. data/lib/atom/feed.rb +65 -67
  59. data/lib/atom/http.rb +421 -49
  60. data/lib/atom/service.rb +106 -0
  61. data/lib/atom/text.rb +138 -61
  62. data/lib/atom/tools.rb +163 -0
  63. data/spec/entry_spec.rb +364 -0
  64. data/spec/ext_spec.rb +42 -0
  65. data/spec/feed_spec.rb +39 -0
  66. data/spec/fixtures/contacts-feed.xml +34 -0
  67. data/spec/fixtures/entry-w-ext.xml +15 -0
  68. data/spec/fixtures/entry-w-xml.xml +24 -0
  69. data/spec/fixtures/entry.xml +42 -0
  70. data/spec/fixtures/feed-w-ext.xml +33 -0
  71. data/spec/fixtures/service-w-xhtml-ns.xml +21 -0
  72. data/spec/fixtures/service.xml +36 -0
  73. data/spec/service_spec.rb +108 -0
  74. data/spec/spec_helper.rb +9 -0
  75. data/test/conformance/order.rb +11 -10
  76. data/test/conformance/title.rb +9 -9
  77. data/test/conformance/updated.rb +2 -1
  78. data/test/runtests.rb +0 -0
  79. data/test/test_constructs.rb +78 -8
  80. data/test/test_feed.rb +35 -29
  81. data/test/test_general.rb +3 -30
  82. data/test/test_http.rb +248 -34
  83. data/test/test_protocol.rb +143 -24
  84. data/test/test_xml.rb +145 -53
  85. metadata +116 -62
  86. data/bin/atom-client.rb +0 -246
  87. data/bin/atom-server.rb~ +0 -71
  88. data/doc/classes/Atom/App.html +0 -217
  89. data/doc/classes/Atom/Entry.html +0 -365
  90. data/doc/classes/Atom/Feed.html +0 -585
  91. data/lib/atom/app.rb +0 -87
  92. data/lib/atom/xml.rb +0 -200
  93. data/lib/atom/yaml.rb +0 -101
data/test/test_xml.rb CHANGED
@@ -1,18 +1,25 @@
1
+ $:.unshift 'lib/', File.dirname(__FILE__) + '/../lib'
1
2
  require "test/unit"
2
-
3
- # for entry.edit_url
4
- require "atom/app"
3
+ require "atom/service"
5
4
 
6
5
  class AtomTest < Test::Unit::TestCase
7
6
  def test_text_type_text
8
7
  entry = get_entry
9
-
10
- entry.title = "Atom-drunk pirates run amok!"
8
+
9
+ entry.title = "Let's talk about <html>"
11
10
  assert_equal("text", entry.title["type"])
12
11
 
13
- xml = get_elements entry
14
-
15
- assert_equal("Atom-drunk pirates run amok!", xml.elements["/entry/title"].text)
12
+ assert_match('&lt;', entry.title.xml.to_s)
13
+
14
+ xml = entry.to_xml
15
+
16
+ b = Atom::Entry.parse(xml).to_s
17
+
18
+ base_check xml
19
+
20
+ assert_equal("Let's talk about <html>", xml.elements["title"].text)
21
+
22
+ assert_match('&lt;', entry.to_s)
16
23
  end
17
24
 
18
25
  def test_text_type_html
@@ -23,8 +30,10 @@ class AtomTest < Test::Unit::TestCase
23
30
 
24
31
  xml = get_elements entry
25
32
 
26
- assert_equal("Atom-drunk pirates<br>run amok!", xml.elements["/entry/title"].text)
27
- assert_equal("html", xml.elements["/entry/title"].attributes["type"])
33
+ assert_equal("Atom-drunk pirates<br>run amok!", xml.elements["title"].text)
34
+ assert_equal("html", xml.elements["title"].attributes["type"])
35
+
36
+ assert_match('&lt;', entry.to_s)
28
37
  end
29
38
 
30
39
  def test_text_type_xhtml
@@ -34,25 +43,34 @@ class AtomTest < Test::Unit::TestCase
34
43
  entry.title["type"] = "xhtml"
35
44
 
36
45
  xml = get_elements entry
37
-
38
- base_check xml
39
46
 
40
- assert_equal(XHTML::NS, xml.elements["/entry/title/div"].namespace)
41
- assert_equal("run amok", xml.elements["/entry/title/div/em"].text)
47
+ assert_equal(XHTML::NS, xml.elements["title/div"].namespace)
48
+ assert_equal("run amok", xml.elements["title/div/em"].text)
49
+
50
+ assert_match('<em>', entry.to_s)
51
+ end
52
+
53
+ def test_html_text_with_entities
54
+ entry = get_entry
55
+
56
+ entry.title = "Atoms discovered to be smaller than 1&mu;m"
57
+ entry.title["type"] = "html"
58
+
59
+ assert_match(/&amp;mu;/, entry.to_s)
42
60
  end
43
61
 
44
62
  def test_author
45
63
  entry = get_entry
46
64
  a = entry.authors.new
47
-
65
+
48
66
  a.name= "Brendan Taylor"
49
67
  a.uri = "http://necronomicorp.com/blog/"
50
68
 
51
69
  xml = get_elements entry
52
70
 
53
- assert_equal("http://necronomicorp.com/blog/", xml.elements["/entry/author/uri"].text)
54
- assert_equal("Brendan Taylor", xml.elements["/entry/author/name"].text)
55
- assert_nil(xml.elements["/entry/author/email"])
71
+ assert_equal("http://necronomicorp.com/blog/", xml.elements["author/uri"].text)
72
+ assert_equal("Brendan Taylor", xml.elements["author/name"].text)
73
+ assert_nil(xml.elements["author/email"])
56
74
  end
57
75
 
58
76
  def test_tags
@@ -70,17 +88,38 @@ class AtomTest < Test::Unit::TestCase
70
88
  entry.updated = "1970-01-01"
71
89
  entry.content = "blah"
72
90
 
73
- assert_instance_of(Time, entry.updated)
91
+ assert entry.updated.is_a?(Time)
74
92
 
75
- xml = get_elements entry
93
+ xml = entry.to_xml
94
+
95
+ b = Atom::Entry.parse(xml).to_s
76
96
 
77
- assert_match(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/, xml.elements["//updated"].text, "atom:updated isn't in xsd:datetime format")
97
+ base_check xml
98
+
99
+ assert_match(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/, xml.elements["updated"].text, "atom:updated isn't in xsd:datetime format")
78
100
 
79
101
  entry.updated!
80
102
 
81
103
  assert((Time.parse("1970-01-01") < entry.updated), "<updated/> is not updated")
82
104
  end
83
105
 
106
+ def test_edited
107
+ entry = get_entry
108
+
109
+ assert_nil entry.edited
110
+
111
+ entry.edited = "1990-04-07"
112
+ assert entry.edited.is_a?(Time)
113
+
114
+ xml = get_elements entry
115
+ assert_equal(Atom::PP_NS, xml.elements["app:edited"].namespace)
116
+ assert_match(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/, xml.elements["app:edited"].text,
117
+ "atom:edited isn't in xsd:datetime format")
118
+
119
+ entry.edited!
120
+ assert((Time.parse("1990-04-07") < entry.edited), "<edited/> is not updated")
121
+ end
122
+
84
123
  def test_out_of_line
85
124
  entry = get_entry
86
125
 
@@ -90,28 +129,56 @@ class AtomTest < Test::Unit::TestCase
90
129
 
91
130
  xml = get_elements(entry)
92
131
 
93
- assert_nil(xml.elements["/entry/content"].text)
94
- assert_equal("http://example.org/test.png", xml.elements["/entry/content"].attributes["src"])
95
- assert_equal("image/png", xml.elements["/entry/content"].attributes["type"])
132
+ assert_nil xml.elements["content"].text
133
+ assert_equal("http://example.org/test.png", xml.elements["content"].attributes["src"])
134
+ assert_equal("image/png", xml.elements["content"].attributes["type"])
96
135
  end
97
136
 
98
137
  def test_extensions
99
138
  entry = get_entry
100
139
 
101
- assert(entry.extensions.children.empty?)
140
+ assert(entry.extensions.empty?)
102
141
 
103
142
  element = REXML::Element.new("test")
104
143
  element.add_namespace "http://purl.org/"
105
144
 
106
145
  entry.extensions << element
107
146
 
147
+ assert entry.extensions.member?(element)
148
+
149
+ xml = get_elements entry
150
+
151
+ assert_equal(REXML::Element, xml.elements["test"].class)
152
+ assert_equal("http://purl.org/", xml.elements["test"].namespace)
153
+ end
154
+
155
+ def test_roundtrip_extension
156
+ entry = Atom::Entry.parse("<entry xmlns='http://www.w3.org/2005/Atom' xmlns:nil='http://necronomicorp.com/nil'><nil:ext/></entry>")
157
+
158
+ assert_match(/xmlns:nil='http:\/\/necronomicorp.com\/nil'/, entry.to_s)
159
+ end
160
+
161
+ def test_app_control
162
+ entry = get_entry
163
+
164
+ assert !entry.draft
165
+
166
+ assert_nil get_elements(entry).elements["control"]
167
+
168
+ entry.draft = true
169
+
108
170
  xml = get_elements entry
109
171
 
110
- assert_equal(REXML::Element, xml.elements["/entry/test"].class)
111
- assert_equal("http://purl.org/", xml.elements["/entry/test"].namespace)
172
+ assert_equal Atom::PP_NS, xml.elements["app:control"].namespace
173
+ assert_equal Atom::PP_NS, xml.elements["app:control/app:draft"].namespace
174
+ assert_equal "yes", xml.elements["app:control/app:draft"].text
175
+
176
+ entry2 = Atom::Entry.parse xml
177
+
178
+ assert entry.draft
112
179
  end
113
180
 
114
- def test_extensive_enty_parsing
181
+ def test_extensive_entry_parsing
115
182
  str = '<entry xmlns="http://www.w3.org/2005/Atom">
116
183
  <title>Atom draft-07 snapshot</title>
117
184
  <link rel="alternate" type="text/html"
@@ -141,10 +208,10 @@ str = '<entry xmlns="http://www.w3.org/2005/Atom">
141
208
  </entry>'
142
209
 
143
210
  entry = Atom::Entry.parse(str)
144
-
211
+
145
212
  assert_equal("Atom draft-07 snapshot", entry.title.to_s)
146
213
  assert_equal("tag:example.org,2003:3.2397", entry.id)
147
-
214
+
148
215
  assert_equal(Time.parse("2005-07-31T12:29:29Z"), entry.updated)
149
216
  assert_equal(Time.parse("2003-12-13T08:29:29-04:00"), entry.published)
150
217
 
@@ -162,16 +229,16 @@ str = '<entry xmlns="http://www.w3.org/2005/Atom">
162
229
  assert_equal("Mark Pilgrim", entry.authors.first.name)
163
230
  assert_equal("http://example.org/", entry.authors.first.uri)
164
231
  assert_equal("f8dy@example.com", entry.authors.first.email)
165
-
232
+
166
233
  assert_equal(2, entry.contributors.length)
167
234
  assert_equal("Sam Ruby", entry.contributors.first.name)
168
235
  assert_equal("Joe Gregorio", entry.contributors.last.name)
169
-
236
+
170
237
  assert_equal("xhtml", entry.content["type"])
171
-
238
+
172
239
  assert_match("<p><i>[Update: The Atom draft is finished.]</i></p>",
173
240
  entry.content.to_s)
174
-
241
+
175
242
  assert_equal("http://diveintomark.org/", entry.content.base)
176
243
  # XXX unimplemented
177
244
  # assert_equal("en", entry.content.lang)
@@ -225,7 +292,7 @@ END
225
292
  assert_equal("tag:example.org,2003:3", feed.id)
226
293
 
227
294
  assert_equal([], feed.authors)
228
-
295
+
229
296
  alt = feed.links.find { |l| l["rel"] == "alternate" }
230
297
  assert_equal("alternate", alt["rel"])
231
298
  assert_equal("text/html", alt["type"])
@@ -239,7 +306,7 @@ END
239
306
  # XXX unimplemented
240
307
  # assert_equal("http://www.example.com/", feed.generator["uri"])
241
308
  # assert_equal("1.0", feed.generator["version"])
242
-
309
+
243
310
  assert_equal(1, feed.entries.length)
244
311
  assert_equal "Atom draft-07 snapshot", feed.entries.first.title.to_s
245
312
  end
@@ -259,20 +326,19 @@ END
259
326
  assert_equal "<p>...&amp; as a result of this, I submit that <var>pi</var> &lt; 4", entry.summary.html.strip
260
327
  end
261
328
 
262
- def test_parse_outofline_content
263
- xml = <<END
329
+ def test_parse_goofy_entries
330
+ xml = <<END
264
331
  <entry xmlns="http://www.w3.org/2005/Atom">
265
- <summary src="http://necronomicorp.com/nil">
266
- Summary doesn't have src.
267
- </summary>
332
+ <content type="html"></content>
268
333
  </entry>
269
334
  END
270
-
271
- entry = Atom::Entry.parse xml
272
335
 
273
- assert_raises(RuntimeError) { entry.summary["src"] }
274
- assert_equal "Summary doesn't have src.", entry.summary.to_s.strip
336
+ entry = Atom::Entry.parse(xml)
275
337
 
338
+ assert_equal("", entry.content.to_s)
339
+ end
340
+
341
+ def test_parse_outofline_content
276
342
  xml = <<END
277
343
  <entry xmlns="http://www.w3.org/2005/Atom">
278
344
  <content src="http://necronomicorp.com/nil">
@@ -287,14 +353,36 @@ END
287
353
  assert_equal "", entry.content.to_s
288
354
  end
289
355
 
356
+ def test_serialize_base
357
+ entry = Atom::Entry.new
358
+
359
+ entry.base = "http://necronomicorp.com/nil"
360
+
361
+ base = get_elements(entry).root.attributes["xml:base"]
362
+ assert_equal "http://necronomicorp.com/nil", base
363
+
364
+ entry.base = URI.parse("http://necronomicorp.com/nil")
365
+
366
+ base = get_elements(entry).root.attributes["xml:base"]
367
+ assert_equal "http://necronomicorp.com/nil", base
368
+ end
369
+
290
370
  def test_relative_base
291
371
  base_url = "http://www.tbray.org/ongoing/ongoing.atom"
292
372
  doc = "<entry xmlns='http://www.w3.org/2005/Atom' xml:base='When/200x/2006/10/11/'/>"
293
-
373
+
294
374
  entry = Atom::Entry.parse(doc, base_url)
295
375
  assert_equal("http://www.tbray.org/ongoing/When/200x/2006/10/11/", entry.base)
296
376
  end
297
-
377
+
378
+ def test_relative_src
379
+ base_url = "http://example.org/foo/"
380
+ doc = "<entry xmlns='http://www.w3.org/2005/Atom'><content src='./bar'/></entry>"
381
+
382
+ entry = Atom::Entry.parse(doc, base_url)
383
+ assert_equal("http://example.org/foo/bar", entry.content['src'])
384
+ end
385
+
298
386
  def test_edit_url
299
387
  doc = <<END
300
388
  <entry xmlns="http://www.w3.org/2005/Atom"><link rel="edit"/></entry>
@@ -310,7 +398,7 @@ END
310
398
  entry = Atom::Entry.parse(doc)
311
399
 
312
400
  assert_nil(entry.edit_url)
313
-
401
+
314
402
  doc = <<END
315
403
  <entry xmlns="http://www.w3.org/2005/Atom">
316
404
  <link rel="edit" href="http://necronomicorp.com/nil"/>
@@ -320,15 +408,17 @@ END
320
408
  entry = Atom::Entry.parse(doc)
321
409
 
322
410
  assert_equal("http://necronomicorp.com/nil", entry.edit_url)
323
- end
324
411
 
412
+ entry.edit_url = "http://necronomicorp.com/foo"
413
+ assert_equal "http://necronomicorp.com/foo", entry.edit_url
414
+ end
325
415
 
326
416
  def assert_has_category xml, term
327
417
  assert_not_nil(REXML::XPath.match(xml, "/entry/category[@term = #{term}]"))
328
418
  end
329
419
 
330
420
  def assert_has_content_type xml, type
331
- assert_equal(type, xml.elements["/entry/content"].attributes["type"])
421
+ assert_equal(type, xml.elements["content"].attributes["type"])
332
422
  end
333
423
 
334
424
  def get_entry
@@ -339,10 +429,12 @@ END
339
429
  def get_elements entry
340
430
  xml = entry.to_xml
341
431
 
342
- assert_equal(entry.to_s, Atom::Entry.parse(xml).to_s)
343
-
432
+ b = Atom::Entry.parse(xml)
433
+
434
+ assert_equal(xml.to_s, b.to_s)
435
+
344
436
  base_check xml
345
-
437
+
346
438
  xml
347
439
  end
348
440
 
metadata CHANGED
@@ -1,107 +1,161 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.8.11
3
- specification_version: 1
4
2
  name: atom-tools
5
3
  version: !ruby/object:Gem::Version
6
- version: 0.9.0
7
- date: 2006-11-10 00:00:00 -07:00
8
- summary: Tools for working with Atom Entries, Feeds and Collections
9
- require_paths:
10
- - lib
11
- email:
12
- homepage:
13
- rubyforge_project:
14
- description:
15
- autorequire:
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: true
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">"
22
- - !ruby/object:Gem::Version
23
- version: 0.0.0
24
- version:
4
+ hash: 5
5
+ prerelease: false
6
+ segments:
7
+ - 2
8
+ - 0
9
+ - 5
10
+ version: 2.0.5
25
11
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
12
  authors:
29
13
  - Brendan Taylor
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-08-31 00:00:00 -06:00
19
+ default_executable:
20
+ dependencies: []
21
+
22
+ description: |-
23
+ atom-tools is an all-in-one Atom library. It parses and builds Atom (RFC 4287) entries and feeds, and manipulates Atom Publishing Protocol (RFC 5023) Collections.
24
+
25
+ It also comes with a set of commandline utilities for working with AtomPub Collections.
26
+
27
+ It is not the fastest Ruby Atom library, but it is comprehensive and makes handling extensions to the Atom format very easy.
28
+ email: whateley@gmail.com
29
+ executables: []
30
+
31
+ extensions: []
32
+
33
+ extra_rdoc_files:
34
+ - README
30
35
  files:
31
36
  - COPYING
32
37
  - README
33
38
  - Rakefile
34
39
  - setup.rb
35
- - bin/atom-server.rb~
36
- - bin/atom-client.rb
37
- - doc/files
38
- - doc/index.html
39
- - doc/rdoc-style.css
40
- - doc/fr_method_index.html
41
- - doc/fr_class_index.html
42
- - doc/fr_file_index.html
43
- - doc/created.rid
44
- - doc/classes
45
- - doc/files/lib
46
- - doc/files/README.html
47
- - doc/files/lib/atom
40
+ - bin/atom-grep
41
+ - bin/atom-post
42
+ - bin/atom-purge
43
+ - bin/atom-cp
44
+ - doc/files/lib/atom/tools_rb.html
48
45
  - doc/files/lib/atom/feed_rb.html
49
46
  - doc/files/lib/atom/text_rb.html
50
- - doc/files/lib/atom/xml_rb.html
51
- - doc/files/lib/atom/yaml_rb.html
47
+ - doc/files/lib/atom/cache_rb.html
48
+ - doc/files/lib/atom/service_rb.html
52
49
  - doc/files/lib/atom/element_rb.html
53
- - doc/files/lib/atom/app_rb.html
54
50
  - doc/files/lib/atom/entry_rb.html
55
51
  - doc/files/lib/atom/http_rb.html
56
52
  - doc/files/lib/atom/collection_rb.html
57
- - doc/classes/Atom
58
- - doc/classes/XHTML.html
53
+ - doc/files/README.html
54
+ - doc/index.html
55
+ - doc/rdoc-style.css
56
+ - doc/fr_method_index.html
57
+ - doc/fr_class_index.html
58
+ - doc/fr_file_index.html
59
+ - doc/created.rid
60
+ - doc/classes/Atom/Categories.html
61
+ - doc/classes/Atom/Parsers.html
62
+ - doc/classes/Atom/Service.html
59
63
  - doc/classes/Atom/Author.html
60
64
  - doc/classes/Atom/Element.html
61
- - doc/classes/Atom/App.html
62
- - doc/classes/Atom/Feed.html
65
+ - doc/classes/Atom/Tools.html
66
+ - doc/classes/Atom/FileCache.html
67
+ - doc/classes/Atom/DigestAuth.html
63
68
  - doc/classes/Atom/Text.html
69
+ - doc/classes/Atom/ParseError.html
64
70
  - doc/classes/Atom/Contributor.html
71
+ - doc/classes/Atom/Control.html
72
+ - doc/classes/Atom/HTTPResponse.html
65
73
  - doc/classes/Atom/HTTP.html
74
+ - doc/classes/Atom/NilCache.html
75
+ - doc/classes/Atom/AutodiscoveryFailure.html
76
+ - doc/classes/Atom/Source.html
66
77
  - doc/classes/Atom/Link.html
67
78
  - doc/classes/Atom/Collection.html
68
79
  - doc/classes/Atom/Content.html
69
80
  - doc/classes/Atom/Category.html
70
- - doc/classes/Atom/Entry.html
81
+ - doc/classes/Atom/Converters.html
82
+ - doc/classes/Atom/Person.html
83
+ - doc/classes/Atom/Workspace.html
84
+ - doc/classes/Atom/HasCategories.html
85
+ - doc/classes/Atom/Title.html
86
+ - doc/classes/Atom/Rights.html
87
+ - doc/classes/Atom/AttrEl.html
88
+ - doc/classes/Atom/Subtitle.html
89
+ - doc/classes/Atom/Summary.html
90
+ - doc/classes/Atom/HasLinks.html
91
+ - doc/classes/Object.html
92
+ - doc/classes/XHTML.html
71
93
  - test/test_constructs.rb
72
94
  - test/runtests.rb
73
95
  - test/test_feed.rb
74
96
  - test/test_protocol.rb
75
- - test/conformance
76
- - test/test_xml.rb
77
- - test/test_http.rb
78
- - test/test_general.rb
79
97
  - test/conformance/updated.rb
80
98
  - test/conformance/xmlnamespace.rb
81
99
  - test/conformance/title.rb
82
100
  - test/conformance/order.rb
83
101
  - test/conformance/xhtmlcontentdiv.rb
84
- - lib/atom
85
- - lib/atom/yaml.rb
102
+ - test/test_xml.rb
103
+ - test/test_http.rb
104
+ - test/test_general.rb
105
+ - spec/entry_spec.rb
106
+ - spec/ext_spec.rb
107
+ - spec/spec_helper.rb
108
+ - spec/feed_spec.rb
109
+ - spec/fixtures/feed-w-ext.xml
110
+ - spec/fixtures/service-w-xhtml-ns.xml
111
+ - spec/fixtures/entry-w-xml.xml
112
+ - spec/fixtures/entry-w-ext.xml
113
+ - spec/fixtures/contacts-feed.xml
114
+ - spec/fixtures/service.xml
115
+ - spec/fixtures/entry.xml
116
+ - spec/service_spec.rb
117
+ - lib/atom/cache.rb
86
118
  - lib/atom/feed.rb
87
119
  - lib/atom/text.rb
88
- - lib/atom/app.rb
89
120
  - lib/atom/collection.rb
121
+ - lib/atom/service.rb
90
122
  - lib/atom/entry.rb
91
- - lib/atom/xml.rb
123
+ - lib/atom/tools.rb
92
124
  - lib/atom/element.rb
93
125
  - lib/atom/http.rb
94
- test_files:
95
- - test/runtests.rb
96
- rdoc_options: []
97
-
98
- extra_rdoc_files:
99
- - README
100
- executables: []
126
+ has_rdoc: true
127
+ homepage: http://github.com/bct/atom-tools/wikis
128
+ licenses: []
101
129
 
102
- extensions: []
130
+ post_install_message:
131
+ rdoc_options: []
103
132
 
133
+ require_paths:
134
+ - lib
135
+ required_ruby_version: !ruby/object:Gem::Requirement
136
+ none: false
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ hash: 3
141
+ segments:
142
+ - 0
143
+ version: "0"
144
+ required_rubygems_version: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ hash: 3
150
+ segments:
151
+ - 0
152
+ version: "0"
104
153
  requirements: []
105
154
 
106
- dependencies: []
107
-
155
+ rubyforge_project: ibes
156
+ rubygems_version: 1.3.7
157
+ signing_key:
158
+ specification_version: 3
159
+ summary: Tools for working with Atom Entries, Feeds and Collections.
160
+ test_files:
161
+ - test/runtests.rb