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
@@ -55,10 +55,6 @@
55
55
  <tr class="top-aligned-row">
56
56
  <td><strong>In:</strong></td>
57
57
  <td>
58
- <a href="../../files/lib/atom/yaml_rb.html">
59
- lib/atom/yaml.rb
60
- </a>
61
- <br />
62
58
  <a href="../../files/lib/atom/element_rb.html">
63
59
  lib/atom/element.rb
64
60
  </a>
@@ -69,7 +65,9 @@
69
65
  <tr class="top-aligned-row">
70
66
  <td><strong>Parent:</strong></td>
71
67
  <td>
72
- Hash
68
+ <a href="../Object.html">
69
+ Object
70
+ </a>
73
71
  </td>
74
72
  </tr>
75
73
  </table>
@@ -82,6 +80,16 @@
82
80
 
83
81
  <div id="contextContent">
84
82
 
83
+ <div id="description">
84
+ <p>
85
+ The Class&#8217; methods provide a DSL for describing Atom&#8216;s
86
+ structure
87
+ </p>
88
+ <pre>
89
+ (and more generally for describing simple namespaced XML)
90
+ </pre>
91
+
92
+ </div>
85
93
 
86
94
 
87
95
  </div>
@@ -90,11 +98,29 @@
90
98
  <h3 class="section-bar">Methods</h3>
91
99
 
92
100
  <div class="name-list">
93
- <a href="#M000032">[]</a>&nbsp;&nbsp;
94
- <a href="#M000033">[]=</a>&nbsp;&nbsp;
95
- <a href="#M000034">to_element</a>&nbsp;&nbsp;
96
- <a href="#M000036">to_s</a>&nbsp;&nbsp;
97
- <a href="#M000035">to_xml</a>&nbsp;&nbsp;
101
+ <a href="#M000095">append_elem</a>&nbsp;&nbsp;
102
+ <a href="#M000088">build</a>&nbsp;&nbsp;
103
+ <a href="#M000085">builders</a>&nbsp;&nbsp;
104
+ <a href="#M000090">def_get</a>&nbsp;&nbsp;
105
+ <a href="#M000091">def_set</a>&nbsp;&nbsp;
106
+ <a href="#M000084">do_parsing</a>&nbsp;&nbsp;
107
+ <a href="#M000096">get</a>&nbsp;&nbsp;
108
+ <a href="#M000081">get_atom_attrb</a>&nbsp;&nbsp;
109
+ <a href="#M000079">get_atom_elem</a>&nbsp;&nbsp;
110
+ <a href="#M000080">get_atom_elems</a>&nbsp;&nbsp;
111
+ <a href="#M000077">get_elem</a>&nbsp;&nbsp;
112
+ <a href="#M000078">get_elems</a>&nbsp;&nbsp;
113
+ <a href="#M000076">is_atom_element</a>&nbsp;&nbsp;
114
+ <a href="#M000075">is_element</a>&nbsp;&nbsp;
115
+ <a href="#M000092">new</a>&nbsp;&nbsp;
116
+ <a href="#M000083">on_build</a>&nbsp;&nbsp;
117
+ <a href="#M000093">on_init</a>&nbsp;&nbsp;
118
+ <a href="#M000086">parse</a>&nbsp;&nbsp;
119
+ <a href="#M000094">run_initters</a>&nbsp;&nbsp;
120
+ <a href="#M000097">set</a>&nbsp;&nbsp;
121
+ <a href="#M000082">set_atom_attrb</a>&nbsp;&nbsp;
122
+ <a href="#M000089">to_s</a>&nbsp;&nbsp;
123
+ <a href="#M000087">to_xml</a>&nbsp;&nbsp;
98
124
  </div>
99
125
  </div>
100
126
 
@@ -118,7 +144,7 @@
118
144
  <td class="context-item-name">base</td>
119
145
  <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
120
146
  <td class="context-item-desc">
121
- this element&#8217;s xml:base
147
+ this element&#8216;s xml:base
122
148
 
123
149
  </td>
124
150
  </tr>
@@ -126,8 +152,7 @@ this element&#8217;s xml:base
126
152
  <td class="context-item-name">extensions</td>
127
153
  <td class="context-item-value">&nbsp;[R]&nbsp;</td>
128
154
  <td class="context-item-desc">
129
- a REXML::Element that shares this element&#8217;s extension attributes and
130
- child elements
155
+ xml elements and attributes that have been parsed, but are unknown
131
156
 
132
157
  </td>
133
158
  </tr>
@@ -139,172 +164,714 @@ child elements
139
164
 
140
165
  <!-- if method_list -->
141
166
  <div id="methods">
167
+ <h3 class="section-bar">Public Class methods</h3>
168
+
169
+ <div id="method-M000085" class="method-detail">
170
+ <a name="M000085"></a>
171
+
172
+ <div class="method-heading">
173
+ <a href="#M000085" class="method-signature">
174
+ <span class="method-name">builders</span><span class="method-args">(&amp;block)</span>
175
+ </a>
176
+ </div>
177
+
178
+ <div class="method-description">
179
+ <p><a class="source-toggle" href="#"
180
+ onclick="toggleCode('M000085-source');return false;">[Source]</a></p>
181
+ <div class="method-source-code" id="M000085-source">
182
+ <pre>
183
+ <span class="ruby-comment cmt"># File lib/atom/element.rb, line 396</span>
184
+ <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">builders</span> <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>
185
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ancestors</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">respond_to?</span> <span class="ruby-identifier">:builders</span>
186
+ <span class="ruby-identifier">ancestors</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">builders</span> <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>
187
+ <span class="ruby-keyword kw">end</span>
188
+
189
+ <span class="ruby-ivar">@on_build</span> <span class="ruby-operator">||=</span> []
190
+ <span class="ruby-ivar">@on_build</span>.<span class="ruby-identifier">each</span> <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>
191
+ <span class="ruby-keyword kw">end</span>
192
+ </pre>
193
+ </div>
194
+ </div>
195
+ </div>
196
+
197
+ <div id="method-M000090" class="method-detail">
198
+ <a name="M000090"></a>
199
+
200
+ <div class="method-heading">
201
+ <a href="#M000090" class="method-signature">
202
+ <span class="method-name">def_get</span><span class="method-args">(name, &amp;block)</span>
203
+ </a>
204
+ </div>
205
+
206
+ <div class="method-description">
207
+ <p>
208
+ defines a getter that calls &#8216;block&#8216;
209
+ </p>
210
+ <p><a class="source-toggle" href="#"
211
+ onclick="toggleCode('M000090-source');return false;">[Source]</a></p>
212
+ <div class="method-source-code" id="M000090-source">
213
+ <pre>
214
+ <span class="ruby-comment cmt"># File lib/atom/element.rb, line 492</span>
215
+ <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">def_get</span>(<span class="ruby-identifier">name</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
216
+ <span class="ruby-identifier">define_method</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_sym</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>
217
+ <span class="ruby-keyword kw">end</span>
218
+ </pre>
219
+ </div>
220
+ </div>
221
+ </div>
222
+
223
+ <div id="method-M000091" class="method-detail">
224
+ <a name="M000091"></a>
225
+
226
+ <div class="method-heading">
227
+ <a href="#M000091" class="method-signature">
228
+ <span class="method-name">def_set</span><span class="method-args">(name, &amp;block)</span>
229
+ </a>
230
+ </div>
231
+
232
+ <div class="method-description">
233
+ <p>
234
+ defines a setter that calls &#8216;block&#8216;
235
+ </p>
236
+ <p><a class="source-toggle" href="#"
237
+ onclick="toggleCode('M000091-source');return false;">[Source]</a></p>
238
+ <div class="method-source-code" id="M000091-source">
239
+ <pre>
240
+ <span class="ruby-comment cmt"># File lib/atom/element.rb, line 497</span>
241
+ <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">def_set</span>(<span class="ruby-identifier">name</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
242
+ <span class="ruby-identifier">define_method</span> <span class="ruby-node">&quot;#{name}=&quot;</span>.<span class="ruby-identifier">to_sym</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>
243
+ <span class="ruby-keyword kw">end</span>
244
+ </pre>
245
+ </div>
246
+ </div>
247
+ </div>
248
+
249
+ <div id="method-M000084" class="method-detail">
250
+ <a name="M000084"></a>
251
+
252
+ <div class="method-heading">
253
+ <a href="#M000084" class="method-signature">
254
+ <span class="method-name">do_parsing</span><span class="method-args">(e, root)</span>
255
+ </a>
256
+ </div>
257
+
258
+ <div class="method-description">
259
+ <p><a class="source-toggle" href="#"
260
+ onclick="toggleCode('M000084-source');return false;">[Source]</a></p>
261
+ <div class="method-source-code" id="M000084-source">
262
+ <pre>
263
+ <span class="ruby-comment cmt"># File lib/atom/element.rb, line 387</span>
264
+ <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">do_parsing</span> <span class="ruby-identifier">e</span>, <span class="ruby-identifier">root</span>
265
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ancestors</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">respond_to?</span> <span class="ruby-identifier">:do_parsing</span>
266
+ <span class="ruby-identifier">ancestors</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">do_parsing</span> <span class="ruby-identifier">e</span>, <span class="ruby-identifier">root</span>
267
+ <span class="ruby-keyword kw">end</span>
268
+
269
+ <span class="ruby-ivar">@on_parse</span> <span class="ruby-operator">||=</span> []
270
+ <span class="ruby-ivar">@on_parse</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-identifier">p</span>.<span class="ruby-identifier">call</span> <span class="ruby-identifier">e</span>, <span class="ruby-identifier">root</span> }
271
+ <span class="ruby-keyword kw">end</span>
272
+ </pre>
273
+ </div>
274
+ </div>
275
+ </div>
276
+
277
+ <div id="method-M000076" class="method-detail">
278
+ <a name="M000076"></a>
279
+
280
+ <div class="method-heading">
281
+ <a href="#M000076" class="method-signature">
282
+ <span class="method-name">is_atom_element</span><span class="method-args">(name)</span>
283
+ </a>
284
+ </div>
285
+
286
+ <div class="method-description">
287
+ <p>
288
+ wrapper for <a href="Element.html#M000075">is_element</a>
289
+ </p>
290
+ <p><a class="source-toggle" href="#"
291
+ onclick="toggleCode('M000076-source');return false;">[Source]</a></p>
292
+ <div class="method-source-code" id="M000076-source">
293
+ <pre>
294
+ <span class="ruby-comment cmt"># File lib/atom/element.rb, line 345</span>
295
+ <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">is_atom_element</span> <span class="ruby-identifier">name</span>
296
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">is_element</span> <span class="ruby-constant">Atom</span><span class="ruby-operator">::</span><span class="ruby-constant">NS</span>, <span class="ruby-identifier">name</span>
297
+ <span class="ruby-keyword kw">end</span>
298
+ </pre>
299
+ </div>
300
+ </div>
301
+ </div>
302
+
303
+ <div id="method-M000075" class="method-detail">
304
+ <a name="M000075"></a>
305
+
306
+ <div class="method-heading">
307
+ <a href="#M000075" class="method-signature">
308
+ <span class="method-name">is_element</span><span class="method-args">(ns, name)</span>
309
+ </a>
310
+ </div>
311
+
312
+ <div class="method-description">
313
+ <p>
314
+ attaches a name and a namespace to an element this needs to be called on
315
+ any <a href="Element.html#M000092">new</a> element
316
+ </p>
317
+ <p><a class="source-toggle" href="#"
318
+ onclick="toggleCode('M000075-source');return false;">[Source]</a></p>
319
+ <div class="method-source-code" id="M000075-source">
320
+ <pre>
321
+ <span class="ruby-comment cmt"># File lib/atom/element.rb, line 339</span>
322
+ <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">is_element</span> <span class="ruby-identifier">ns</span>, <span class="ruby-identifier">name</span>
323
+ <span class="ruby-identifier">meta_def</span> <span class="ruby-identifier">:self_namespace</span> <span class="ruby-keyword kw">do</span>; <span class="ruby-identifier">ns</span>; <span class="ruby-keyword kw">end</span>
324
+ <span class="ruby-identifier">meta_def</span> <span class="ruby-identifier">:self_name</span> <span class="ruby-keyword kw">do</span>; <span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_s</span>; <span class="ruby-keyword kw">end</span>
325
+ <span class="ruby-keyword kw">end</span>
326
+ </pre>
327
+ </div>
328
+ </div>
329
+ </div>
330
+
331
+ <div id="method-M000092" class="method-detail">
332
+ <a name="M000092"></a>
333
+
334
+ <div class="method-heading">
335
+ <a href="#M000092" class="method-signature">
336
+ <span class="method-name">new</span><span class="method-args">(defaults = {})</span>
337
+ </a>
338
+ </div>
339
+
340
+ <div class="method-description">
341
+ <p>
342
+ be sure to call super if you override this method!
343
+ </p>
344
+ <p><a class="source-toggle" href="#"
345
+ onclick="toggleCode('M000092-source');return false;">[Source]</a></p>
346
+ <div class="method-source-code" id="M000092-source">
347
+ <pre>
348
+ <span class="ruby-comment cmt"># File lib/atom/element.rb, line 502</span>
349
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span> <span class="ruby-identifier">defaults</span> = {}
350
+ <span class="ruby-ivar">@extensions</span> = []
351
+
352
+ <span class="ruby-ivar">@extensions</span>.<span class="ruby-identifier">instance_variable_set</span>(<span class="ruby-value str">'@attrs'</span>, {})
353
+ <span class="ruby-keyword kw">def</span> <span class="ruby-ivar">@extensions</span>.<span class="ruby-identifier">attributes</span>
354
+ <span class="ruby-ivar">@attrs</span>
355
+ <span class="ruby-keyword kw">end</span>
356
+
357
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">run_initters</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">init</span><span class="ruby-operator">|</span>
358
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">instance_eval</span> <span class="ruby-operator">&amp;</span><span class="ruby-identifier">init</span>
359
+ <span class="ruby-keyword kw">end</span>
360
+
361
+ <span class="ruby-identifier">defaults</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
362
+ <span class="ruby-identifier">set</span>(<span class="ruby-identifier">k</span>, <span class="ruby-identifier">v</span>)
363
+ <span class="ruby-keyword kw">end</span>
364
+ <span class="ruby-keyword kw">end</span>
365
+ </pre>
366
+ </div>
367
+ </div>
368
+ </div>
369
+
370
+ <div id="method-M000083" class="method-detail">
371
+ <a name="M000083"></a>
372
+
373
+ <div class="method-heading">
374
+ <a href="#M000083" class="method-signature">
375
+ <span class="method-name">on_build</span><span class="method-args">(&amp;block)</span>
376
+ </a>
377
+ </div>
378
+
379
+ <div class="method-description">
380
+ <p><a class="source-toggle" href="#"
381
+ onclick="toggleCode('M000083-source');return false;">[Source]</a></p>
382
+ <div class="method-source-code" id="M000083-source">
383
+ <pre>
384
+ <span class="ruby-comment cmt"># File lib/atom/element.rb, line 382</span>
385
+ <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">on_build</span> <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>
386
+ <span class="ruby-ivar">@on_build</span> <span class="ruby-operator">||=</span> []
387
+ <span class="ruby-ivar">@on_build</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">block</span>
388
+ <span class="ruby-keyword kw">end</span>
389
+ </pre>
390
+ </div>
391
+ </div>
392
+ </div>
393
+
394
+ <div id="method-M000093" class="method-detail">
395
+ <a name="M000093"></a>
396
+
397
+ <div class="method-heading">
398
+ <a href="#M000093" class="method-signature">
399
+ <span class="method-name">on_init</span><span class="method-args">(&amp;block)</span>
400
+ </a>
401
+ </div>
402
+
403
+ <div class="method-description">
404
+ <p><a class="source-toggle" href="#"
405
+ onclick="toggleCode('M000093-source');return false;">[Source]</a></p>
406
+ <div class="method-source-code" id="M000093-source">
407
+ <pre>
408
+ <span class="ruby-comment cmt"># File lib/atom/element.rb, line 519</span>
409
+ <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span><span class="ruby-keyword kw">self</span>..<span class="ruby-identifier">on_init</span><span class="ruby-identifier">on_init</span> <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>
410
+ <span class="ruby-ivar">@on_init</span> <span class="ruby-operator">||=</span> []
411
+ <span class="ruby-ivar">@on_init</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">block</span>
412
+ <span class="ruby-keyword kw">end</span>
413
+ </pre>
414
+ </div>
415
+ </div>
416
+ </div>
417
+
418
+ <div id="method-M000086" class="method-detail">
419
+ <a name="M000086"></a>
420
+
421
+ <div class="method-heading">
422
+ <a href="#M000086" class="method-signature">
423
+ <span class="method-name">parse</span><span class="method-args">(xml, base = '', element = nil)</span>
424
+ </a>
425
+ </div>
426
+
427
+ <div class="method-description">
428
+ <p>
429
+ turns a String, an IO-like, a REXML::Element, etc. into an <a
430
+ href="Element.html">Atom::Element</a>
431
+ </p>
432
+ <p>
433
+ the &#8216;base&#8217; base URL parameter should be supplied if you know
434
+ where this XML was fetched from
435
+ </p>
436
+ <p>
437
+ if you want to <a href="Element.html#M000086">parse</a> into an existing <a
438
+ href="Element.html">Atom::Element</a>, it can be passed in as
439
+ &#8216;element&#8216;
440
+ </p>
441
+ <p><a class="source-toggle" href="#"
442
+ onclick="toggleCode('M000086-source');return false;">[Source]</a></p>
443
+ <div class="method-source-code" id="M000086-source">
444
+ <pre>
445
+ <span class="ruby-comment cmt"># File lib/atom/element.rb, line 412</span>
446
+ <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">parse</span> <span class="ruby-identifier">xml</span>, <span class="ruby-identifier">base</span> = <span class="ruby-value str">''</span>, <span class="ruby-identifier">element</span> = <span class="ruby-keyword kw">nil</span>
447
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">xml</span>.<span class="ruby-identifier">respond_to?</span> <span class="ruby-identifier">:elements</span>
448
+ <span class="ruby-identifier">root</span> = <span class="ruby-identifier">xml</span>.<span class="ruby-identifier">dup</span>
449
+ <span class="ruby-keyword kw">else</span>
450
+ <span class="ruby-identifier">xml</span> = <span class="ruby-identifier">xml</span>.<span class="ruby-identifier">read</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">xml</span>.<span class="ruby-identifier">respond_to?</span> <span class="ruby-identifier">:read</span>
451
+
452
+ <span class="ruby-keyword kw">begin</span>
453
+ <span class="ruby-identifier">root</span> = <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">Document</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">xml</span>.<span class="ruby-identifier">to_s</span>).<span class="ruby-identifier">root</span>
454
+ <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">ParseException</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
455
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">Atom</span><span class="ruby-operator">::</span><span class="ruby-constant">ParseError</span>, <span class="ruby-identifier">e</span>.<span class="ruby-identifier">message</span>
456
+ <span class="ruby-keyword kw">end</span>
457
+ <span class="ruby-keyword kw">end</span>
458
+
459
+ <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">root</span>.<span class="ruby-identifier">local_name</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">self_name</span>
460
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">Atom</span><span class="ruby-operator">::</span><span class="ruby-constant">ParseError</span>, <span class="ruby-node">&quot;expected element named #{self.self_name}, not #{root.local_name}&quot;</span>
461
+ <span class="ruby-keyword kw">end</span>
462
+
463
+ <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">root</span>.<span class="ruby-identifier">namespace</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">self_namespace</span>
464
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">Atom</span><span class="ruby-operator">::</span><span class="ruby-constant">ParseError</span>, <span class="ruby-node">&quot;expected element in namespace #{self.self_namespace}, not #{root.namespace}&quot;</span>
465
+ <span class="ruby-keyword kw">end</span>
466
+
467
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">root</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">'xml:base'</span>]
468
+ <span class="ruby-identifier">base</span> = (<span class="ruby-identifier">base</span>.<span class="ruby-identifier">to_uri</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">root</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">'xml:base'</span>])
469
+ <span class="ruby-keyword kw">end</span>
470
+
471
+ <span class="ruby-identifier">e</span> = <span class="ruby-identifier">element</span> <span class="ruby-value">? </span><span class="ruby-identifier">element</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">new</span>
472
+ <span class="ruby-identifier">e</span>.<span class="ruby-identifier">base</span> = <span class="ruby-identifier">base</span>
473
+
474
+ <span class="ruby-comment cmt"># extension elements</span>
475
+ <span class="ruby-identifier">root</span>.<span class="ruby-identifier">elements</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span>
476
+ <span class="ruby-identifier">e</span>.<span class="ruby-identifier">extensions</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c</span>
477
+ <span class="ruby-keyword kw">end</span>
478
+
479
+ <span class="ruby-comment cmt"># extension attributes</span>
480
+ <span class="ruby-identifier">root</span>.<span class="ruby-identifier">attributes</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
481
+ <span class="ruby-identifier">e</span>.<span class="ruby-identifier">extensions</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>
482
+ <span class="ruby-keyword kw">end</span>
483
+
484
+ <span class="ruby-comment cmt"># as things are parsed, they're removed from e.extensions. whatever's</span>
485
+ <span class="ruby-comment cmt"># left over is stored so it can be round-tripped</span>
486
+
487
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">do_parsing</span> <span class="ruby-identifier">e</span>, <span class="ruby-identifier">root</span>
488
+
489
+ <span class="ruby-identifier">e</span>
490
+ <span class="ruby-keyword kw">end</span>
491
+ </pre>
492
+ </div>
493
+ </div>
494
+ </div>
495
+
496
+ <div id="method-M000094" class="method-detail">
497
+ <a name="M000094"></a>
498
+
499
+ <div class="method-heading">
500
+ <a href="#M000094" class="method-signature">
501
+ <span class="method-name">run_initters</span><span class="method-args">(&amp;block)</span>
502
+ </a>
503
+ </div>
504
+
505
+ <div class="method-description">
506
+ <p><a class="source-toggle" href="#"
507
+ onclick="toggleCode('M000094-source');return false;">[Source]</a></p>
508
+ <div class="method-source-code" id="M000094-source">
509
+ <pre>
510
+ <span class="ruby-comment cmt"># File lib/atom/element.rb, line 524</span>
511
+ <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">run_initters</span> <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>
512
+ <span class="ruby-ivar">@on_init</span>.<span class="ruby-identifier">each</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@on_init</span>
513
+ <span class="ruby-keyword kw">end</span>
514
+ </pre>
515
+ </div>
516
+ </div>
517
+ </div>
518
+
142
519
  <h3 class="section-bar">Public Instance methods</h3>
143
520
 
144
- <div id="method-M000032" class="method-detail">
145
- <a name="M000032"></a>
521
+ <div id="method-M000095" class="method-detail">
522
+ <a name="M000095"></a>
146
523
 
147
524
  <div class="method-heading">
148
- <a href="#M000032" class="method-signature">
149
- <span class="method-name">[]</span><span class="method-args">(key)</span>
525
+ <a href="#M000095" class="method-signature">
526
+ <span class="method-name">append_elem</span><span class="method-args">(root, ns, name)</span>
150
527
  </a>
151
528
  </div>
152
529
 
153
530
  <div class="method-description">
154
531
  <p>
155
- get the value of an attribute
532
+ appends an element named &#8216;name&#8217; in namespace &#8216;ns&#8217;
533
+ to &#8216;root&#8217; ns is either [prefix, namespace] or just a String
534
+ containing the namespace
156
535
  </p>
157
536
  <p><a class="source-toggle" href="#"
158
- onclick="toggleCode('M000032-source');return false;">[Source]</a></p>
159
- <div class="method-source-code" id="M000032-source">
537
+ onclick="toggleCode('M000095-source');return false;">[Source]</a></p>
538
+ <div class="method-source-code" id="M000095-source">
160
539
  <pre>
161
- <span class="ruby-comment cmt"># File lib/atom/element.rb, line 115</span>
162
- 115: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]</span> <span class="ruby-identifier">key</span>
163
- 116: <span class="ruby-identifier">test_key</span> <span class="ruby-identifier">key</span>
164
- 117:
165
- 118: <span class="ruby-keyword kw">super</span>
166
- 119: <span class="ruby-keyword kw">end</span>
540
+ <span class="ruby-comment cmt"># File lib/atom/element.rb, line 530</span>
541
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">append_elem</span>(<span class="ruby-identifier">root</span>, <span class="ruby-identifier">ns</span>, <span class="ruby-identifier">name</span>)
542
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ns</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">Array</span>
543
+ <span class="ruby-identifier">prefix</span>, <span class="ruby-identifier">uri</span> = <span class="ruby-identifier">ns</span>
544
+ <span class="ruby-keyword kw">else</span>
545
+ <span class="ruby-identifier">prefix</span>, <span class="ruby-identifier">uri</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">ns</span>
546
+ <span class="ruby-keyword kw">end</span>
547
+
548
+ <span class="ruby-identifier">name</span> = <span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_s</span>
549
+
550
+ <span class="ruby-identifier">existing_prefix</span> = <span class="ruby-identifier">root</span>.<span class="ruby-identifier">namespaces</span>.<span class="ruby-identifier">find</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
551
+ <span class="ruby-identifier">v</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">uri</span>
552
+ <span class="ruby-keyword kw">end</span>
553
+
554
+ <span class="ruby-identifier">root</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">existing_prefix</span>
555
+ <span class="ruby-identifier">prefix</span> = <span class="ruby-identifier">existing_prefix</span>[<span class="ruby-value">0</span>]
556
+
557
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">prefix</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">'xmlns'</span>
558
+ <span class="ruby-identifier">name</span> = <span class="ruby-identifier">prefix</span> <span class="ruby-operator">+</span> <span class="ruby-value str">':'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">name</span>
559
+ <span class="ruby-keyword kw">end</span>
560
+
561
+ <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">Element</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">name</span>)
562
+ <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">prefix</span>
563
+ <span class="ruby-identifier">e</span> = <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">Element</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">prefix</span> <span class="ruby-operator">+</span> <span class="ruby-value str">':'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">name</span>)
564
+ <span class="ruby-identifier">e</span>.<span class="ruby-identifier">add_namespace</span>(<span class="ruby-identifier">prefix</span>, <span class="ruby-identifier">uri</span>)
565
+ <span class="ruby-identifier">e</span>
566
+ <span class="ruby-keyword kw">else</span>
567
+ <span class="ruby-identifier">e</span> = <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">Element</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">name</span>)
568
+ <span class="ruby-identifier">e</span>.<span class="ruby-identifier">add_namespace</span>(<span class="ruby-identifier">uri</span>)
569
+ <span class="ruby-identifier">e</span>
570
+ <span class="ruby-keyword kw">end</span>
571
+ <span class="ruby-keyword kw">end</span>
167
572
  </pre>
168
573
  </div>
169
574
  </div>
170
575
  </div>
171
576
 
172
- <div id="method-M000033" class="method-detail">
173
- <a name="M000033"></a>
577
+ <div id="method-M000088" class="method-detail">
578
+ <a name="M000088"></a>
174
579
 
175
580
  <div class="method-heading">
176
- <a href="#M000033" class="method-signature">
177
- <span class="method-name">[]=</span><span class="method-args">(key, value)</span>
581
+ <a href="#M000088" class="method-signature">
582
+ <span class="method-name">build</span><span class="method-args">(root)</span>
178
583
  </a>
179
584
  </div>
180
585
 
181
586
  <div class="method-description">
182
587
  <p>
183
- set the value of an attribute
588
+ fill a REXML::Element with the data from this <a
589
+ href="Element.html">Atom::Element</a>
184
590
  </p>
185
591
  <p><a class="source-toggle" href="#"
186
- onclick="toggleCode('M000033-source');return false;">[Source]</a></p>
187
- <div class="method-source-code" id="M000033-source">
592
+ onclick="toggleCode('M000088-source');return false;">[Source]</a></p>
593
+ <div class="method-source-code" id="M000088-source">
188
594
  <pre>
189
- <span class="ruby-comment cmt"># File lib/atom/element.rb, line 122</span>
190
- 122: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]=</span> <span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span>
191
- 123: <span class="ruby-identifier">test_key</span> <span class="ruby-identifier">key</span>
192
- 124:
193
- 125: <span class="ruby-keyword kw">super</span>
194
- 126: <span class="ruby-keyword kw">end</span>
595
+ <span class="ruby-comment cmt"># File lib/atom/element.rb, line 469</span>
596
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">build</span> <span class="ruby-identifier">root</span>
597
+ <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">base</span> <span class="ruby-keyword kw">and</span> <span class="ruby-keyword kw">not</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">base</span>.<span class="ruby-identifier">empty?</span>
598
+ <span class="ruby-identifier">root</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">'xml:base'</span>] = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">base</span>
599
+ <span class="ruby-keyword kw">end</span>
600
+
601
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">builders</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">builder</span><span class="ruby-operator">|</span>
602
+ <span class="ruby-identifier">builder</span>.<span class="ruby-identifier">call</span> <span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">root</span>
603
+ <span class="ruby-keyword kw">end</span>
604
+
605
+ <span class="ruby-ivar">@extensions</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">e</span><span class="ruby-operator">|</span>
606
+ <span class="ruby-identifier">root</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">dup</span>
607
+ <span class="ruby-keyword kw">end</span>
608
+
609
+ <span class="ruby-ivar">@extensions</span>.<span class="ruby-identifier">attributes</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
610
+ <span class="ruby-identifier">root</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>
611
+ <span class="ruby-keyword kw">end</span>
612
+ <span class="ruby-keyword kw">end</span>
195
613
  </pre>
196
614
  </div>
197
615
  </div>
198
616
  </div>
199
617
 
200
- <div id="method-M000034" class="method-detail">
201
- <a name="M000034"></a>
618
+ <div id="method-M000096" class="method-detail">
619
+ <a name="M000096"></a>
202
620
 
203
621
  <div class="method-heading">
204
- <a href="#M000034" class="method-signature">
205
- <span class="method-name">to_element</span><span class="method-args">()</span>
622
+ <a href="#M000096" class="method-signature">
623
+ <span class="method-name">get</span><span class="method-args">(name)</span>
206
624
  </a>
207
625
  </div>
208
626
 
209
627
  <div class="method-description">
210
628
  <p>
211
- convert to a REXML::Element (with no namespace)
629
+ calls a getter
212
630
  </p>
213
631
  <p><a class="source-toggle" href="#"
214
- onclick="toggleCode('M000034-source');return false;">[Source]</a></p>
215
- <div class="method-source-code" id="M000034-source">
632
+ onclick="toggleCode('M000096-source');return false;">[Source]</a></p>
633
+ <div class="method-source-code" id="M000096-source">
216
634
  <pre>
217
- <span class="ruby-comment cmt"># File lib/atom/element.rb, line 147</span>
218
- 147: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_element</span>
219
- 148: <span class="ruby-identifier">elem</span> = <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">Element</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">local_name</span>)
220
- 149:
221
- 150: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">elements</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">name</span>,<span class="ruby-identifier">kind</span>,<span class="ruby-identifier">req</span><span class="ruby-operator">|</span>
222
- 151: <span class="ruby-identifier">v</span> = <span class="ruby-identifier">get</span>(<span class="ruby-identifier">name</span>)
223
- 152: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">v</span>.<span class="ruby-identifier">nil?</span>
224
- 153:
225
- 154: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">v</span>.<span class="ruby-identifier">respond_to?</span> <span class="ruby-identifier">:to_element</span>
226
- 155: <span class="ruby-identifier">e</span> = <span class="ruby-identifier">v</span>.<span class="ruby-identifier">to_element</span>
227
- 156: <span class="ruby-identifier">e</span> = [ <span class="ruby-identifier">e</span> ] <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">Array</span>
228
- 157:
229
- 158: <span class="ruby-identifier">e</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">bit</span><span class="ruby-operator">|</span>
230
- 159: <span class="ruby-identifier">elem</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">bit</span>
231
- 160: <span class="ruby-keyword kw">end</span>
232
- 161: <span class="ruby-keyword kw">else</span>
233
- 162: <span class="ruby-identifier">e</span> = <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">Element</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">elem</span>).<span class="ruby-identifier">text</span> = <span class="ruby-identifier">get</span>(<span class="ruby-identifier">name</span>)
234
- 163: <span class="ruby-keyword kw">end</span>
235
- 164: <span class="ruby-keyword kw">end</span>
236
- 165:
237
- 166: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">name</span>,<span class="ruby-identifier">req</span><span class="ruby-operator">|</span>
238
- 167: <span class="ruby-identifier">value</span> = <span class="ruby-keyword kw">self</span>[<span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_s</span>]
239
- 168: <span class="ruby-identifier">elem</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_s</span>] = <span class="ruby-identifier">value</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span>
240
- 169: <span class="ruby-keyword kw">end</span>
241
- 170:
242
- 171: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">extensions</span>.<span class="ruby-identifier">children</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">element</span><span class="ruby-operator">|</span>
243
- 172: <span class="ruby-identifier">elem</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">element</span>.<span class="ruby-identifier">dup</span> <span class="ruby-comment cmt"># otherwise they get removed from @extensions</span>
244
- 173: <span class="ruby-keyword kw">end</span>
245
- 174:
246
- 175: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">base</span> <span class="ruby-keyword kw">and</span> <span class="ruby-keyword kw">not</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">base</span>.<span class="ruby-identifier">empty?</span>
247
- 176: <span class="ruby-identifier">elem</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;xml:base&quot;</span>] = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">base</span>
248
- 177: <span class="ruby-keyword kw">end</span>
249
- 178:
250
- 179: <span class="ruby-identifier">elem</span>
251
- 180: <span class="ruby-keyword kw">end</span>
635
+ <span class="ruby-comment cmt"># File lib/atom/element.rb, line 567</span>
636
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get</span> <span class="ruby-identifier">name</span>
637
+ <span class="ruby-identifier">send</span> <span class="ruby-node">&quot;#{name}&quot;</span>.<span class="ruby-identifier">to_sym</span>
638
+ <span class="ruby-keyword kw">end</span>
252
639
  </pre>
253
640
  </div>
254
641
  </div>
255
642
  </div>
256
643
 
257
- <div id="method-M000036" class="method-detail">
258
- <a name="M000036"></a>
644
+ <div id="method-M000081" class="method-detail">
645
+ <a name="M000081"></a>
259
646
 
260
647
  <div class="method-heading">
261
- <a href="#M000036" class="method-signature">
262
- <span class="method-name">to_s</span><span class="method-args">()</span>
648
+ <a href="#M000081" class="method-signature">
649
+ <span class="method-name">get_atom_attrb</span><span class="method-args">(xml, name)</span>
650
+ </a>
651
+ </div>
652
+
653
+ <div class="method-description">
654
+ <p>
655
+ gets an attribute on <tt>xml</tt>
656
+ </p>
657
+ <p><a class="source-toggle" href="#"
658
+ onclick="toggleCode('M000081-source');return false;">[Source]</a></p>
659
+ <div class="method-source-code" id="M000081-source">
660
+ <pre>
661
+ <span class="ruby-comment cmt"># File lib/atom/element.rb, line 370</span>
662
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_atom_attrb</span> <span class="ruby-identifier">xml</span>, <span class="ruby-identifier">name</span>
663
+ <span class="ruby-identifier">xml</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_s</span>]
664
+ <span class="ruby-keyword kw">end</span>
665
+ </pre>
666
+ </div>
667
+ </div>
668
+ </div>
669
+
670
+ <div id="method-M000079" class="method-detail">
671
+ <a name="M000079"></a>
672
+
673
+ <div class="method-heading">
674
+ <a href="#M000079" class="method-signature">
675
+ <span class="method-name">get_atom_elem</span><span class="method-args">(xml, name)</span>
676
+ </a>
677
+ </div>
678
+
679
+ <div class="method-description">
680
+ <p>
681
+ gets a child element in the Atom namespace
682
+ </p>
683
+ <p><a class="source-toggle" href="#"
684
+ onclick="toggleCode('M000079-source');return false;">[Source]</a></p>
685
+ <div class="method-source-code" id="M000079-source">
686
+ <pre>
687
+ <span class="ruby-comment cmt"># File lib/atom/element.rb, line 360</span>
688
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_atom_elem</span> <span class="ruby-identifier">xml</span>, <span class="ruby-identifier">name</span>
689
+ <span class="ruby-identifier">get_elem</span> <span class="ruby-identifier">xml</span>, <span class="ruby-constant">Atom</span><span class="ruby-operator">::</span><span class="ruby-constant">NS</span>, <span class="ruby-identifier">name</span>
690
+ <span class="ruby-keyword kw">end</span>
691
+ </pre>
692
+ </div>
693
+ </div>
694
+ </div>
695
+
696
+ <div id="method-M000080" class="method-detail">
697
+ <a name="M000080"></a>
698
+
699
+ <div class="method-heading">
700
+ <a href="#M000080" class="method-signature">
701
+ <span class="method-name">get_atom_elems</span><span class="method-args">(xml, name)</span>
702
+ </a>
703
+ </div>
704
+
705
+ <div class="method-description">
706
+ <p>
707
+ gets multiple child elements in the Atom namespace
708
+ </p>
709
+ <p><a class="source-toggle" href="#"
710
+ onclick="toggleCode('M000080-source');return false;">[Source]</a></p>
711
+ <div class="method-source-code" id="M000080-source">
712
+ <pre>
713
+ <span class="ruby-comment cmt"># File lib/atom/element.rb, line 365</span>
714
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_atom_elems</span> <span class="ruby-identifier">xml</span>, <span class="ruby-identifier">name</span>
715
+ <span class="ruby-identifier">get_elems</span> <span class="ruby-constant">Atom</span><span class="ruby-operator">::</span><span class="ruby-constant">NS</span>, <span class="ruby-identifier">name</span>
716
+ <span class="ruby-keyword kw">end</span>
717
+ </pre>
718
+ </div>
719
+ </div>
720
+ </div>
721
+
722
+ <div id="method-M000077" class="method-detail">
723
+ <a name="M000077"></a>
724
+
725
+ <div class="method-heading">
726
+ <a href="#M000077" class="method-signature">
727
+ <span class="method-name">get_elem</span><span class="method-args">(xml, ns, name)</span>
728
+ </a>
729
+ </div>
730
+
731
+ <div class="method-description">
732
+ <p>
733
+ gets a single namespaced child element
734
+ </p>
735
+ <p><a class="source-toggle" href="#"
736
+ onclick="toggleCode('M000077-source');return false;">[Source]</a></p>
737
+ <div class="method-source-code" id="M000077-source">
738
+ <pre>
739
+ <span class="ruby-comment cmt"># File lib/atom/element.rb, line 350</span>
740
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_elem</span> <span class="ruby-identifier">xml</span>, <span class="ruby-identifier">ns</span>, <span class="ruby-identifier">name</span>
741
+ <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">XPath</span>.<span class="ruby-identifier">first</span> <span class="ruby-identifier">xml</span>, <span class="ruby-node">&quot;./ns:#{name}&quot;</span>, { <span class="ruby-value str">'ns'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">ns</span> }
742
+ <span class="ruby-keyword kw">end</span>
743
+ </pre>
744
+ </div>
745
+ </div>
746
+ </div>
747
+
748
+ <div id="method-M000078" class="method-detail">
749
+ <a name="M000078"></a>
750
+
751
+ <div class="method-heading">
752
+ <a href="#M000078" class="method-signature">
753
+ <span class="method-name">get_elems</span><span class="method-args">(xml, ns, name)</span>
754
+ </a>
755
+ </div>
756
+
757
+ <div class="method-description">
758
+ <p>
759
+ gets multiple namespaced child elements
760
+ </p>
761
+ <p><a class="source-toggle" href="#"
762
+ onclick="toggleCode('M000078-source');return false;">[Source]</a></p>
763
+ <div class="method-source-code" id="M000078-source">
764
+ <pre>
765
+ <span class="ruby-comment cmt"># File lib/atom/element.rb, line 355</span>
766
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_elems</span> <span class="ruby-identifier">xml</span>, <span class="ruby-identifier">ns</span>, <span class="ruby-identifier">name</span>
767
+ <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">XPath</span>.<span class="ruby-identifier">match</span> <span class="ruby-identifier">xml</span>, <span class="ruby-node">&quot;./ns:#{name}&quot;</span>, { <span class="ruby-value str">'ns'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">ns</span> }
768
+ <span class="ruby-keyword kw">end</span>
769
+ </pre>
770
+ </div>
771
+ </div>
772
+ </div>
773
+
774
+ <div id="method-M000097" class="method-detail">
775
+ <a name="M000097"></a>
776
+
777
+ <div class="method-heading">
778
+ <a href="#M000097" class="method-signature">
779
+ <span class="method-name">set</span><span class="method-args">(name, value)</span>
780
+ </a>
781
+ </div>
782
+
783
+ <div class="method-description">
784
+ <p>
785
+ calls a setter
786
+ </p>
787
+ <p><a class="source-toggle" href="#"
788
+ onclick="toggleCode('M000097-source');return false;">[Source]</a></p>
789
+ <div class="method-source-code" id="M000097-source">
790
+ <pre>
791
+ <span class="ruby-comment cmt"># File lib/atom/element.rb, line 572</span>
792
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set</span> <span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>
793
+ <span class="ruby-identifier">send</span> <span class="ruby-node">&quot;#{name}=&quot;</span>, <span class="ruby-identifier">value</span>
794
+ <span class="ruby-keyword kw">end</span>
795
+ </pre>
796
+ </div>
797
+ </div>
798
+ </div>
799
+
800
+ <div id="method-M000082" class="method-detail">
801
+ <a name="M000082"></a>
802
+
803
+ <div class="method-heading">
804
+ <a href="#M000082" class="method-signature">
805
+ <span class="method-name">set_atom_attrb</span><span class="method-args">(xml, name, value)</span>
263
806
  </a>
264
807
  </div>
265
808
 
266
809
  <div class="method-description">
267
810
  <p>
268
- convert to an XML string
811
+ sets an attribute on <tt>xml</tt>
269
812
  </p>
270
813
  <p><a class="source-toggle" href="#"
271
- onclick="toggleCode('M000036-source');return false;">[Source]</a></p>
272
- <div class="method-source-code" id="M000036-source">
814
+ onclick="toggleCode('M000082-source');return false;">[Source]</a></p>
815
+ <div class="method-source-code" id="M000082-source">
273
816
  <pre>
274
- <span class="ruby-comment cmt"># File lib/atom/element.rb, line 192</span>
275
- 192: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
276
- 193: <span class="ruby-identifier">to_xml</span>.<span class="ruby-identifier">to_s</span>
277
- 194: <span class="ruby-keyword kw">end</span>
817
+ <span class="ruby-comment cmt"># File lib/atom/element.rb, line 375</span>
818
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set_atom_attrb</span> <span class="ruby-identifier">xml</span>, <span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>
819
+ <span class="ruby-identifier">xml</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_s</span>] = <span class="ruby-identifier">value</span>
820
+ <span class="ruby-keyword kw">end</span>
278
821
  </pre>
279
822
  </div>
280
823
  </div>
281
824
  </div>
282
825
 
283
- <div id="method-M000035" class="method-detail">
284
- <a name="M000035"></a>
826
+ <div id="method-M000089" class="method-detail">
827
+ <a name="M000089"></a>
285
828
 
286
829
  <div class="method-heading">
287
- <a href="#M000035" class="method-signature">
830
+ <a href="#M000089" class="method-signature">
831
+ <span class="method-name">to_s</span><span class="method-args">()</span>
832
+ </a>
833
+ </div>
834
+
835
+ <div class="method-description">
836
+ <p><a class="source-toggle" href="#"
837
+ onclick="toggleCode('M000089-source');return false;">[Source]</a></p>
838
+ <div class="method-source-code" id="M000089-source">
839
+ <pre>
840
+ <span class="ruby-comment cmt"># File lib/atom/element.rb, line 487</span>
841
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
842
+ <span class="ruby-identifier">to_xml</span>.<span class="ruby-identifier">to_s</span>
843
+ <span class="ruby-keyword kw">end</span>
844
+ </pre>
845
+ </div>
846
+ </div>
847
+ </div>
848
+
849
+ <div id="method-M000087" class="method-detail">
850
+ <a name="M000087"></a>
851
+
852
+ <div class="method-heading">
853
+ <a href="#M000087" class="method-signature">
288
854
  <span class="method-name">to_xml</span><span class="method-args">()</span>
289
855
  </a>
290
856
  </div>
291
857
 
292
858
  <div class="method-description">
293
859
  <p>
294
- convert to a REXML::Document (properly namespaced)
860
+ converts to a REXML::Element
295
861
  </p>
296
862
  <p><a class="source-toggle" href="#"
297
- onclick="toggleCode('M000035-source');return false;">[Source]</a></p>
298
- <div class="method-source-code" id="M000035-source">
863
+ onclick="toggleCode('M000087-source');return false;">[Source]</a></p>
864
+ <div class="method-source-code" id="M000087-source">
299
865
  <pre>
300
- <span class="ruby-comment cmt"># File lib/atom/element.rb, line 183</span>
301
- 183: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_xml</span>
302
- 184: <span class="ruby-identifier">doc</span> = <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">Document</span>.<span class="ruby-identifier">new</span>
303
- 185: <span class="ruby-identifier">root</span> = <span class="ruby-identifier">to_element</span>
304
- 186: <span class="ruby-identifier">root</span>.<span class="ruby-identifier">add_namespace</span> <span class="ruby-constant">Atom</span><span class="ruby-operator">::</span><span class="ruby-constant">NS</span>
305
- 187: <span class="ruby-identifier">doc</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">root</span>
306
- 188: <span class="ruby-identifier">doc</span>
307
- 189: <span class="ruby-keyword kw">end</span>
866
+ <span class="ruby-comment cmt"># File lib/atom/element.rb, line 459</span>
867
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_xml</span>
868
+ <span class="ruby-identifier">root</span> = <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">Element</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">self_name</span>
869
+ <span class="ruby-identifier">root</span>.<span class="ruby-identifier">add_namespace</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">self_namespace</span>
870
+
871
+ <span class="ruby-identifier">build</span> <span class="ruby-identifier">root</span>
872
+
873
+ <span class="ruby-identifier">root</span>
874
+ <span class="ruby-keyword kw">end</span>
308
875
  </pre>
309
876
  </div>
310
877
  </div>