sdl4r 0.9.3 → 0.9.4

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.
@@ -0,0 +1,2028 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: SDL4R::Tag</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">SDL4R::Tag</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/lib/sdl4r/tag_rb.html">
59
+ lib/sdl4r/tag.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ Object
69
+ </td>
70
+ </tr>
71
+ </table>
72
+ </div>
73
+ <!-- banner header -->
74
+
75
+ <div id="bodyContent">
76
+
77
+
78
+
79
+ <div id="contextContent">
80
+
81
+ <div id="description">
82
+ <p>
83
+ SDL documents are made of Tags.
84
+ </p>
85
+ <p>
86
+ See the <a href="../../files/README.html">README</a> for a longer
87
+ explanation on SDL documents.
88
+ </p>
89
+ <p>
90
+ Do not assume that methods returning sets (Hash, Array, etc) of
91
+ children/values/attributes/etc in this class returns copies or
92
+ implementations. It can be one or the other depending on the method. The
93
+ implementations are designed to be correct and somewhat efficient, not too
94
+ protect the <a href="Tag.html">Tag</a> internal state from ill-use of the
95
+ returned <a href="Tag.html#M000033">values</a>.
96
+ </p>
97
+ <h2>Authors</h2>
98
+ <p>
99
+ Daniel Leuck, Philippe Vosges
100
+ </p>
101
+
102
+ </div>
103
+
104
+
105
+ </div>
106
+
107
+ <div id="method-list">
108
+ <h3 class="section-bar">Methods</h3>
109
+
110
+ <div class="name-list">
111
+ <a href="#M000016">&lt;&lt;</a>&nbsp;&nbsp;
112
+ <a href="#M000052">==</a>&nbsp;&nbsp;
113
+ <a href="#M000015">add_child</a>&nbsp;&nbsp;
114
+ <a href="#M000029">add_value</a>&nbsp;&nbsp;
115
+ <a href="#M000036">attribute</a>&nbsp;&nbsp;
116
+ <a href="#M000038">attributes</a>&nbsp;&nbsp;
117
+ <a href="#M000042">attributes=</a>&nbsp;&nbsp;
118
+ <a href="#M000024">child</a>&nbsp;&nbsp;
119
+ <a href="#M000021">child_count</a>&nbsp;&nbsp;
120
+ <a href="#M000022">children</a>&nbsp;&nbsp;
121
+ <a href="#M000050">children_to_string</a>&nbsp;&nbsp;
122
+ <a href="#M000023">children_values</a>&nbsp;&nbsp;
123
+ <a href="#M000040">clear_attributes</a>&nbsp;&nbsp;
124
+ <a href="#M000018">clear_children</a>&nbsp;&nbsp;
125
+ <a href="#M000032">clear_values</a>&nbsp;&nbsp;
126
+ <a href="#M000051">eql?</a>&nbsp;&nbsp;
127
+ <a href="#M000037">has_attribute?</a>&nbsp;&nbsp;
128
+ <a href="#M000025">has_child?</a>&nbsp;&nbsp;
129
+ <a href="#M000026">has_children?</a>&nbsp;&nbsp;
130
+ <a href="#M000030">has_value?</a>&nbsp;&nbsp;
131
+ <a href="#M000053">hash</a>&nbsp;&nbsp;
132
+ <a href="#M000043">name=</a>&nbsp;&nbsp;
133
+ <a href="#M000044">namespace=</a>&nbsp;&nbsp;
134
+ <a href="#M000013">new</a>&nbsp;&nbsp;
135
+ <a href="#M000014">new_child</a>&nbsp;&nbsp;
136
+ <a href="#M000045">read</a>&nbsp;&nbsp;
137
+ <a href="#M000046">read_from_io</a>&nbsp;&nbsp;
138
+ <a href="#M000039">remove_attribute</a>&nbsp;&nbsp;
139
+ <a href="#M000017">remove_child</a>&nbsp;&nbsp;
140
+ <a href="#M000031">remove_value</a>&nbsp;&nbsp;
141
+ <a href="#M000035">set_attribute</a>&nbsp;&nbsp;
142
+ <a href="#M000041">set_attributes</a>&nbsp;&nbsp;
143
+ <a href="#M000027">to_child_hash</a>&nbsp;&nbsp;
144
+ <a href="#M000028">to_child_string_hash</a>&nbsp;&nbsp;
145
+ <a href="#M000048">to_s</a>&nbsp;&nbsp;
146
+ <a href="#M000049">to_string</a>&nbsp;&nbsp;
147
+ <a href="#M000054">to_xml_string</a>&nbsp;&nbsp;
148
+ <a href="#M000020">value</a>&nbsp;&nbsp;
149
+ <a href="#M000019">value=</a>&nbsp;&nbsp;
150
+ <a href="#M000033">values</a>&nbsp;&nbsp;
151
+ <a href="#M000034">values=</a>&nbsp;&nbsp;
152
+ <a href="#M000047">write</a>&nbsp;&nbsp;
153
+ </div>
154
+ </div>
155
+
156
+ </div>
157
+
158
+
159
+ <!-- if includes -->
160
+
161
+ <div id="section">
162
+
163
+
164
+
165
+
166
+
167
+ <div id="attribute-list">
168
+ <h3 class="section-bar">Attributes</h3>
169
+
170
+ <div class="name-list">
171
+ <table>
172
+ <tr class="top-aligned-row context-row">
173
+ <td class="context-item-name">name</td>
174
+ <td class="context-item-value">&nbsp;[R]&nbsp;</td>
175
+ <td class="context-item-desc">
176
+ the name of this <a href="Tag.html">Tag</a>
177
+
178
+ </td>
179
+ </tr>
180
+ <tr class="top-aligned-row context-row">
181
+ <td class="context-item-name">namespace</td>
182
+ <td class="context-item-value">&nbsp;[R]&nbsp;</td>
183
+ <td class="context-item-desc">
184
+ the namespace of this <a href="Tag.html">Tag</a> or an empty string when
185
+ there is no namespace (i.e. default namespace).
186
+
187
+ </td>
188
+ </tr>
189
+ </table>
190
+ </div>
191
+ </div>
192
+
193
+
194
+
195
+ <!-- if method_list -->
196
+ <div id="methods">
197
+ <h3 class="section-bar">Public Class methods</h3>
198
+
199
+ <div id="method-M000013" class="method-detail">
200
+ <a name="M000013"></a>
201
+
202
+ <div class="method-heading">
203
+ <a href="#M000013" class="method-signature">
204
+ <span class="method-name">new</span><span class="method-args">(namespace, name = nil, &amp;block)</span>
205
+ </a>
206
+ </div>
207
+
208
+ <div class="method-description">
209
+ <p>
210
+ Creates an empty tag in the given namespace. If the <tt>namespace</tt> is
211
+ nil it will be coerced to an empty String.
212
+ </p>
213
+ <pre>
214
+ tag = Tag.new(&quot;name&quot;)
215
+ tag = Tag.new(&quot;namespace&quot;, &quot;name&quot;)
216
+
217
+ tag = Tag.new(&quot;fruit&quot;) do
218
+ add_value 2
219
+ new_child(&quot;orange&quot;) do
220
+ set_attribute(&quot;quantity&quot;, 2)
221
+ end
222
+ end
223
+ </pre>
224
+ <p>
225
+ which builds the following SDL structure
226
+ </p>
227
+ <pre>
228
+ fruit 2 {
229
+ orange quantity=2
230
+ }
231
+ </pre>
232
+ <h2>Raises</h2>
233
+ <p>
234
+ ArgumentError if the name is not a legal SDL identifier (see <a
235
+ href="../SDL4R.html#M000005">SDL4R#validate_identifier</a>) or the
236
+ namespace is non-blank and is not a legal SDL identifier.
237
+ </p>
238
+ <p><a class="source-toggle" href="#"
239
+ onclick="toggleCode('M000013-source');return false;">[Source]</a></p>
240
+ <div class="method-source-code" id="M000013-source">
241
+ <pre>
242
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 92</span>
243
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">namespace</span>, <span class="ruby-identifier">name</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
244
+ <span class="ruby-identifier">namespace</span>, <span class="ruby-identifier">name</span> = <span class="ruby-identifier">to_nns</span> <span class="ruby-identifier">namespace</span>, <span class="ruby-identifier">name</span>
245
+
246
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;tag namespace must be a String&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">namespace</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">String</span>
247
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;tag name must be a String&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">String</span>
248
+
249
+ <span class="ruby-constant">SDL4R</span>.<span class="ruby-identifier">validate_identifier</span>(<span class="ruby-identifier">namespace</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">namespace</span>.<span class="ruby-identifier">empty?</span>
250
+ <span class="ruby-ivar">@namespace</span> = <span class="ruby-identifier">namespace</span>
251
+
252
+ <span class="ruby-identifier">name</span> = <span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">strip</span>
253
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;Tag name cannot be nil or empty&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">empty?</span>
254
+ <span class="ruby-constant">SDL4R</span>.<span class="ruby-identifier">validate_identifier</span>(<span class="ruby-identifier">name</span>)
255
+ <span class="ruby-ivar">@name</span> = <span class="ruby-identifier">name</span>
256
+
257
+ <span class="ruby-ivar">@children</span> = []
258
+ <span class="ruby-ivar">@values</span> = []
259
+
260
+ <span class="ruby-comment cmt"># a Hash of Hash : {namespace =&gt; {name =&gt; value}}</span>
261
+ <span class="ruby-comment cmt"># The default namespace is represented by an empty string.</span>
262
+ <span class="ruby-ivar">@attributesByNamespace</span> = {}
263
+
264
+ <span class="ruby-identifier">instance_eval</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
265
+ <span class="ruby-keyword kw">end</span>
266
+ </pre>
267
+ </div>
268
+ </div>
269
+ </div>
270
+
271
+ <h3 class="section-bar">Public Instance methods</h3>
272
+
273
+ <div id="method-M000016" class="method-detail">
274
+ <a name="M000016"></a>
275
+
276
+ <div class="method-heading">
277
+ <a href="#M000016" class="method-signature">
278
+ <span class="method-name">&lt;&lt;</span><span class="method-args">(o)</span>
279
+ </a>
280
+ </div>
281
+
282
+ <div class="method-description">
283
+ <p>
284
+ Adds the given object as a <a href="Tag.html#M000024">child</a> if it is a
285
+ <tt><a href="Tag.html">Tag</a></tt>, as an <a
286
+ href="Tag.html#M000036">attribute</a> if it is a Hash {key =&gt; <a
287
+ href="Tag.html#M000020">value</a>} (supports namespaces), or as a <a
288
+ href="Tag.html#M000020">value</a> otherwise. If it is an array, each of its
289
+ elements is added to this <a href="Tag.html">Tag</a> via this operator. If
290
+ any of its elements is itself an array, then an anonymous tag is created
291
+ and the array is passed to it via this operator (see the examples below)
292
+ </p>
293
+ <pre>
294
+ tag &lt;&lt; Tag.new(&quot;child&quot;)
295
+ tag &lt;&lt; 123 # new integer value
296
+ tag &lt;&lt; &quot;islamabad&quot; # new string value
297
+ tag &lt;&lt; { &quot;metric:length&quot; =&gt; 1027 } # new attribute (with namespace)
298
+ tag &lt;&lt; [nil, 456, &quot;abc&quot;] # several values added
299
+
300
+ tag = Tag.new(&quot;tag&quot;)
301
+ tag &lt;&lt; [[1, 2, 3], [4, 5, 6]] # tag {
302
+ # 1 2 3
303
+ # 4 5 6
304
+ # }
305
+ </pre>
306
+ <p>
307
+ Returns <tt>self</tt>.
308
+ </p>
309
+ <p>
310
+ Use other accessors for a stricter and less &quot;magical&quot; behavior.
311
+ </p>
312
+ <p><a class="source-toggle" href="#"
313
+ onclick="toggleCode('M000016-source');return false;">[Source]</a></p>
314
+ <div class="method-source-code" id="M000016-source">
315
+ <pre>
316
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 166</span>
317
+ <span class="ruby-keyword kw">def</span> <span class="ruby-operator">&lt;&lt;</span>(<span class="ruby-identifier">o</span>)
318
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Tag</span>)
319
+ <span class="ruby-identifier">add_child</span>(<span class="ruby-identifier">o</span>)
320
+ <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Hash</span>)
321
+ <span class="ruby-identifier">o</span>.<span class="ruby-identifier">each_pair</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
322
+ <span class="ruby-identifier">namespace</span>, <span class="ruby-identifier">key</span> = <span class="ruby-identifier">key</span>.<span class="ruby-identifier">split</span>(<span class="ruby-regexp re">/:/</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">key</span>.<span class="ruby-identifier">match</span>(<span class="ruby-regexp re">/:/</span>)
323
+ <span class="ruby-identifier">namespace</span> <span class="ruby-operator">||=</span> <span class="ruby-value str">&quot;&quot;</span>
324
+ <span class="ruby-identifier">set_attribute</span>(<span class="ruby-identifier">namespace</span>, <span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span>)
325
+ }
326
+ <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">Array</span>
327
+ <span class="ruby-identifier">o</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">item</span><span class="ruby-operator">|</span>
328
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">item</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">Array</span>
329
+ <span class="ruby-identifier">anonymous</span> = <span class="ruby-identifier">new_child</span>(<span class="ruby-value str">&quot;content&quot;</span>)
330
+ <span class="ruby-identifier">anonymous</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">item</span>
331
+ <span class="ruby-keyword kw">else</span>
332
+ <span class="ruby-keyword kw">self</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">item</span>
333
+ <span class="ruby-keyword kw">end</span>
334
+ }
335
+ <span class="ruby-keyword kw">else</span>
336
+ <span class="ruby-identifier">add_value</span>(<span class="ruby-identifier">o</span>)
337
+ <span class="ruby-keyword kw">end</span>
338
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">self</span>
339
+ <span class="ruby-keyword kw">end</span>
340
+ </pre>
341
+ </div>
342
+ </div>
343
+ </div>
344
+
345
+ <div id="method-M000052" class="method-detail">
346
+ <a name="M000052"></a>
347
+
348
+ <div class="method-heading">
349
+ <span class="method-name">==</span><span class="method-args">(o)</span>
350
+ </div>
351
+
352
+ <div class="method-description">
353
+ <p>
354
+ Alias for eql?
355
+ </p>
356
+ </div>
357
+ </div>
358
+
359
+ <div id="method-M000015" class="method-detail">
360
+ <a name="M000015"></a>
361
+
362
+ <div class="method-heading">
363
+ <a href="#M000015" class="method-signature">
364
+ <span class="method-name">add_child</span><span class="method-args">(child)</span>
365
+ </a>
366
+ </div>
367
+
368
+ <div class="method-description">
369
+ <p>
370
+ Add a <a href="Tag.html#M000024">child</a> to this <a
371
+ href="Tag.html">Tag</a>.
372
+ </p>
373
+ <table>
374
+ <tr><td valign="top"><tt><a href="Tag.html#M000024">child</a></tt>:</td><td>The <a href="Tag.html#M000024">child</a> to add
375
+
376
+ </td></tr>
377
+ </table>
378
+ <p>
379
+ Returns the added <a href="Tag.html#M000024">child</a>.
380
+ </p>
381
+ <p><a class="source-toggle" href="#"
382
+ onclick="toggleCode('M000015-source');return false;">[Source]</a></p>
383
+ <div class="method-source-code" id="M000015-source">
384
+ <pre>
385
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 139</span>
386
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_child</span>(<span class="ruby-identifier">child</span>)
387
+ <span class="ruby-ivar">@children</span>.<span class="ruby-identifier">push</span>(<span class="ruby-identifier">child</span>)
388
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">child</span>
389
+ <span class="ruby-keyword kw">end</span>
390
+ </pre>
391
+ </div>
392
+ </div>
393
+ </div>
394
+
395
+ <div id="method-M000029" class="method-detail">
396
+ <a name="M000029"></a>
397
+
398
+ <div class="method-heading">
399
+ <a href="#M000029" class="method-signature">
400
+ <span class="method-name">add_value</span><span class="method-args">(v)</span>
401
+ </a>
402
+ </div>
403
+
404
+ <div class="method-description">
405
+ <p>
406
+ Adds a <a href="Tag.html#M000020">value</a> to this <a
407
+ href="Tag.html">Tag</a>. See <a
408
+ href="../SDL4R.html#M000004">SDL4R#coerce_or_fail</a> to know about the
409
+ allowable types.
410
+ </p>
411
+ <table>
412
+ <tr><td valign="top"><tt>v</tt>:</td><td>The <a href="Tag.html#M000020">value</a> to add
413
+
414
+ </td></tr>
415
+ </table>
416
+ <p>
417
+ Raises an <tt>ArgumentError</tt> if the <a
418
+ href="Tag.html#M000020">value</a> is not a legal SDL type
419
+ </p>
420
+ <p><a class="source-toggle" href="#"
421
+ onclick="toggleCode('M000029-source');return false;">[Source]</a></p>
422
+ <div class="method-source-code" id="M000029-source">
423
+ <pre>
424
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 400</span>
425
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_value</span>(<span class="ruby-identifier">v</span>)
426
+ <span class="ruby-ivar">@values</span>.<span class="ruby-identifier">push</span>(<span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">coerce_or_fail</span>(<span class="ruby-identifier">v</span>))
427
+ <span class="ruby-keyword kw">end</span>
428
+ </pre>
429
+ </div>
430
+ </div>
431
+ </div>
432
+
433
+ <div id="method-M000036" class="method-detail">
434
+ <a name="M000036"></a>
435
+
436
+ <div class="method-heading">
437
+ <a href="#M000036" class="method-signature">
438
+ <span class="method-name">attribute</span><span class="method-args">(namespace, key = nil)</span>
439
+ </a>
440
+ </div>
441
+
442
+ <div class="method-description">
443
+ <pre>
444
+ attribute(key)
445
+ attribute(namespace, key)
446
+ </pre>
447
+ <p>
448
+ Returns the <a href="Tag.html#M000036">attribute</a> of the specified
449
+ <tt>namespace</tt> of specified <tt>key</tt> or <tt>nil</tt> if not found.
450
+ </p>
451
+ <p><a class="source-toggle" href="#"
452
+ onclick="toggleCode('M000036-source');return false;">[Source]</a></p>
453
+ <div class="method-source-code" id="M000036-source">
454
+ <pre>
455
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 506</span>
456
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">attribute</span>(<span class="ruby-identifier">namespace</span>, <span class="ruby-identifier">key</span> = <span class="ruby-keyword kw">nil</span>)
457
+ <span class="ruby-identifier">namespace</span>, <span class="ruby-identifier">key</span> = <span class="ruby-identifier">to_nns</span> <span class="ruby-identifier">namespace</span>, <span class="ruby-identifier">key</span>
458
+ <span class="ruby-identifier">attributes</span> = <span class="ruby-ivar">@attributesByNamespace</span>[<span class="ruby-identifier">namespace</span>]
459
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">attributes</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-value">? </span><span class="ruby-keyword kw">nil</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">attributes</span>[<span class="ruby-identifier">key</span>]
460
+ <span class="ruby-keyword kw">end</span>
461
+ </pre>
462
+ </div>
463
+ </div>
464
+ </div>
465
+
466
+ <div id="method-M000038" class="method-detail">
467
+ <a name="M000038"></a>
468
+
469
+ <div class="method-heading">
470
+ <a href="#M000038" class="method-signature">
471
+ <span class="method-name">attributes</span><span class="method-args">(namespace = nil) {|namespace, key, value| ...}</span>
472
+ </a>
473
+ </div>
474
+
475
+ <div class="method-description">
476
+ <p>
477
+ Returns a Hash of the <a href="Tag.html#M000038">attributes</a> of the
478
+ specified <tt>namespace</tt> (default is all) or enumerates them.
479
+ </p>
480
+ <pre>
481
+ tag.attributes # =&gt; { &quot;length&quot; =&gt; 123, &quot;width&quot; = 25.4, &quot;orig:color&quot; =&gt; &quot;gray&quot; }
482
+ tag.attributes(&quot;orig&quot;) do |namespace, key, value|
483
+ p &quot;#{namespace}:#{key} = #{value}&quot;
484
+ end
485
+ </pre>
486
+ <p>
487
+ <tt>namespace</tt>:: namespace of the returned <a
488
+ href="Tag.html#M000038">attributes</a>. If nil, all <a
489
+ href="Tag.html#M000038">attributes</a> are returned with qualified names
490
+ (e.g. &quot;meat:color&quot;). If &quot;&quot;, <a
491
+ href="Tag.html#M000038">attributes</a> of the default namespace are
492
+ returned.
493
+ </p>
494
+ <p><a class="source-toggle" href="#"
495
+ onclick="toggleCode('M000038-source');return false;">[Source]</a></p>
496
+ <div class="method-source-code" id="M000038-source">
497
+ <pre>
498
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 544</span>
499
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">attributes</span>(<span class="ruby-identifier">namespace</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>) <span class="ruby-comment cmt"># :yields: namespace, key, value</span>
500
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
501
+ <span class="ruby-identifier">each_attribute</span>(<span class="ruby-identifier">namespace</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
502
+
503
+ <span class="ruby-keyword kw">else</span>
504
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">namespace</span>.<span class="ruby-identifier">nil?</span>
505
+ <span class="ruby-identifier">hash</span> = {}
506
+
507
+ <span class="ruby-identifier">each_attribute</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">namespace</span>, <span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span> <span class="ruby-operator">|</span>
508
+ <span class="ruby-identifier">qualified_name</span> = <span class="ruby-identifier">namespace</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-value">? </span><span class="ruby-identifier">key</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">namespace</span> <span class="ruby-operator">+</span> <span class="ruby-value str">':'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">key</span>
509
+ <span class="ruby-identifier">hash</span>[<span class="ruby-identifier">qualified_name</span>] = <span class="ruby-identifier">value</span>
510
+ <span class="ruby-keyword kw">end</span>
511
+
512
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">hash</span>
513
+
514
+ <span class="ruby-keyword kw">else</span>
515
+ <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@attributesByNamespace</span>[<span class="ruby-identifier">namespace</span>]
516
+ <span class="ruby-keyword kw">end</span>
517
+ <span class="ruby-keyword kw">end</span>
518
+ <span class="ruby-keyword kw">end</span>
519
+ </pre>
520
+ </div>
521
+ </div>
522
+ </div>
523
+
524
+ <div id="method-M000042" class="method-detail">
525
+ <a name="M000042"></a>
526
+
527
+ <div class="method-heading">
528
+ <a href="#M000042" class="method-signature">
529
+ <span class="method-name">attributes=</span><span class="method-args">(attribute_hash)</span>
530
+ </a>
531
+ </div>
532
+
533
+ <div class="method-description">
534
+ <p>
535
+ Sets all the <a href="Tag.html#M000038">attributes</a> of the default
536
+ namespace for this <a href="Tag.html">Tag</a> in one operation.
537
+ </p>
538
+ <p>
539
+ See <a href="Tag.html#M000041">set_attributes</a>
540
+ </p>
541
+ <p><a class="source-toggle" href="#"
542
+ onclick="toggleCode('M000042-source');return false;">[Source]</a></p>
543
+ <div class="method-source-code" id="M000042-source">
544
+ <pre>
545
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 648</span>
546
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">attributes=</span>(<span class="ruby-identifier">attribute_hash</span>)
547
+ <span class="ruby-identifier">set_attributes</span>(<span class="ruby-identifier">attribute_hash</span>)
548
+ <span class="ruby-keyword kw">end</span>
549
+ </pre>
550
+ </div>
551
+ </div>
552
+ </div>
553
+
554
+ <div id="method-M000024" class="method-detail">
555
+ <a name="M000024"></a>
556
+
557
+ <div class="method-heading">
558
+ <a href="#M000024" class="method-signature">
559
+ <span class="method-name">child</span><span class="method-args">(recursive = false, name = nil)</span>
560
+ </a>
561
+ </div>
562
+
563
+ <div class="method-description">
564
+ <pre>
565
+ child
566
+ child(name)
567
+ child(recursive, name)
568
+ </pre>
569
+ <p>
570
+ Get the first <a href="Tag.html#M000024">child</a> with the given name,
571
+ optionally using a recursive search.
572
+ </p>
573
+ <table>
574
+ <tr><td valign="top"><tt>name</tt>:</td><td>the name of the <a href="Tag.html#M000024">child</a> <a
575
+ href="Tag.html">Tag</a>. If <tt>nil</tt>, the first <a
576
+ href="Tag.html#M000024">child</a> is returned (<tt>nil</tt> if there are
577
+
578
+ </td></tr>
579
+ </table>
580
+ <p>
581
+ no <a href="Tag.html#M000022">children</a> at all).
582
+ </p>
583
+ <p>
584
+ Returns the first <a href="Tag.html#M000024">child</a> tag having the given
585
+ name or <tt>nil</tt> if no such <a href="Tag.html#M000024">child</a> exists
586
+ </p>
587
+ <p><a class="source-toggle" href="#"
588
+ onclick="toggleCode('M000024-source');return false;">[Source]</a></p>
589
+ <div class="method-source-code" id="M000024-source">
590
+ <pre>
591
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 304</span>
592
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">child</span>(<span class="ruby-identifier">recursive</span> = <span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">name</span> = <span class="ruby-keyword kw">nil</span>)
593
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">nil?</span>
594
+ <span class="ruby-identifier">name</span> = <span class="ruby-identifier">recursive</span>
595
+ <span class="ruby-identifier">recursive</span> = <span class="ruby-keyword kw">false</span>
596
+ <span class="ruby-keyword kw">end</span>
597
+
598
+ <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">name</span>
599
+ <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@children</span>.<span class="ruby-identifier">first</span>
600
+ <span class="ruby-keyword kw">else</span>
601
+ <span class="ruby-identifier">each_child</span>(<span class="ruby-identifier">recursive</span>, <span class="ruby-identifier">name</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">child</span><span class="ruby-operator">|</span> <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">child</span> }
602
+ <span class="ruby-keyword kw">end</span>
603
+ <span class="ruby-keyword kw">end</span>
604
+ </pre>
605
+ </div>
606
+ </div>
607
+ </div>
608
+
609
+ <div id="method-M000021" class="method-detail">
610
+ <a name="M000021"></a>
611
+
612
+ <div class="method-heading">
613
+ <a href="#M000021" class="method-signature">
614
+ <span class="method-name">child_count</span><span class="method-args">()</span>
615
+ </a>
616
+ </div>
617
+
618
+ <div class="method-description">
619
+ <p>
620
+ Returns the number of <a href="Tag.html#M000022">children</a> <a
621
+ href="Tag.html">Tag</a>.
622
+ </p>
623
+ <p><a class="source-toggle" href="#"
624
+ onclick="toggleCode('M000021-source');return false;">[Source]</a></p>
625
+ <div class="method-source-code" id="M000021-source">
626
+ <pre>
627
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 226</span>
628
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">child_count</span>
629
+ <span class="ruby-ivar">@children</span>.<span class="ruby-identifier">size</span>
630
+ <span class="ruby-keyword kw">end</span>
631
+ </pre>
632
+ </div>
633
+ </div>
634
+ </div>
635
+
636
+ <div id="method-M000022" class="method-detail">
637
+ <a name="M000022"></a>
638
+
639
+ <div class="method-heading">
640
+ <a href="#M000022" class="method-signature">
641
+ <span class="method-name">children</span><span class="method-args">(recursive = false, namespace = nil, name = :DEFAULT) {|child| ...}</span>
642
+ </a>
643
+ </div>
644
+
645
+ <div class="method-description">
646
+ <pre>
647
+ children(recursive)
648
+ children(recursive, name)
649
+ children(recursive, namespace, name)
650
+
651
+ children(recursive) { |child| ... }
652
+ children(recursive, name) { |child| ... }
653
+ children(recursive, namespace, name) { |child| ... }
654
+ </pre>
655
+ <p>
656
+ Returns an Array of the <a href="Tag.html#M000022">children</a> Tags of
657
+ this <a href="Tag.html">Tag</a> or enumerates them.
658
+ </p>
659
+ <table>
660
+ <tr><td valign="top"><tt>recursive</tt>:</td><td>if true <a href="Tag.html#M000022">children</a> and all descendants will be
661
+ returned. False by default.
662
+
663
+ </td></tr>
664
+ <tr><td valign="top"><tt>name</tt>:</td><td>if not nil, only <a href="Tag.html#M000022">children</a> having this name
665
+ will be returned. Nil by default.
666
+
667
+ </td></tr>
668
+ <tr><td valign="top"><tt>namespace</tt>:</td><td>use nil for all namespaces and &quot;&quot; for the default one. Nil by
669
+ default.
670
+
671
+ </td></tr>
672
+ </table>
673
+ <pre>
674
+ tag.children # =&gt; array of the children
675
+ tag.children(true) { |descendant| ... }
676
+
677
+ tag.children(false, &quot;name&quot;) # =&gt; children of name &quot;name&quot;
678
+ tag.children(false, &quot;ns&quot;, nil) # =&gt; children of namespace &quot;ns&quot;
679
+ </pre>
680
+ <p><a class="source-toggle" href="#"
681
+ onclick="toggleCode('M000022-source');return false;">[Source]</a></p>
682
+ <div class="method-source-code" id="M000022-source">
683
+ <pre>
684
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 250</span>
685
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">children</span>(<span class="ruby-identifier">recursive</span> = <span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">namespace</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">name</span> = <span class="ruby-identifier">:DEFAULT</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>) <span class="ruby-comment cmt"># :yields: child</span>
686
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:DEFAULT</span>
687
+ <span class="ruby-identifier">name</span> = <span class="ruby-identifier">namespace</span>
688
+ <span class="ruby-identifier">namespace</span> = <span class="ruby-keyword kw">nil</span>
689
+ <span class="ruby-keyword kw">end</span>
690
+
691
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
692
+ <span class="ruby-identifier">each_child</span>(<span class="ruby-identifier">recursive</span>, <span class="ruby-identifier">namespace</span>, <span class="ruby-identifier">name</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
693
+
694
+ <span class="ruby-keyword kw">else</span>
695
+ <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">recursive</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">name</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">namespace</span>
696
+ <span class="ruby-ivar">@children</span>
697
+
698
+ <span class="ruby-keyword kw">else</span>
699
+ <span class="ruby-identifier">result</span> = []
700
+ <span class="ruby-identifier">each_child</span>(<span class="ruby-identifier">recursive</span>, <span class="ruby-identifier">namespace</span>, <span class="ruby-identifier">name</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">child</span><span class="ruby-operator">|</span>
701
+ <span class="ruby-identifier">result</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">child</span>
702
+ }
703
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">result</span>
704
+ <span class="ruby-keyword kw">end</span>
705
+ <span class="ruby-keyword kw">end</span>
706
+ <span class="ruby-keyword kw">end</span>
707
+ </pre>
708
+ </div>
709
+ </div>
710
+ </div>
711
+
712
+ <div id="method-M000050" class="method-detail">
713
+ <a name="M000050"></a>
714
+
715
+ <div class="method-heading">
716
+ <a href="#M000050" class="method-signature">
717
+ <span class="method-name">children_to_string</span><span class="method-args">(line_prefix = &quot;&quot;, s = &quot;&quot;)</span>
718
+ </a>
719
+ </div>
720
+
721
+ <div class="method-description">
722
+ <p>
723
+ Returns a string representation of the <a
724
+ href="Tag.html#M000022">children</a> tags.
725
+ </p>
726
+ <table>
727
+ <tr><td valign="top"><tt>linePrefix</tt>:</td><td>A prefix to insert before every line.
728
+
729
+ </td></tr>
730
+ <tr><td valign="top"><tt>s</tt>:</td><td>a String that receives the string representation
731
+
732
+ </td></tr>
733
+ </table>
734
+ <p>
735
+ TODO: break up long lines using the backslash
736
+ </p>
737
+ <p><a class="source-toggle" href="#"
738
+ onclick="toggleCode('M000050-source');return false;">[Source]</a></p>
739
+ <div class="method-source-code" id="M000050-source">
740
+ <pre>
741
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 808</span>
742
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">children_to_string</span>(<span class="ruby-identifier">line_prefix</span> = <span class="ruby-value str">&quot;&quot;</span>, <span class="ruby-identifier">s</span> = <span class="ruby-value str">&quot;&quot;</span>)
743
+ <span class="ruby-ivar">@children</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">child</span><span class="ruby-operator">|</span>
744
+ <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">child</span>.<span class="ruby-identifier">to_string</span>(<span class="ruby-identifier">line_prefix</span>) <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">$/</span>
745
+ <span class="ruby-keyword kw">end</span>
746
+
747
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">s</span>
748
+ <span class="ruby-keyword kw">end</span>
749
+ </pre>
750
+ </div>
751
+ </div>
752
+ </div>
753
+
754
+ <div id="method-M000023" class="method-detail">
755
+ <a name="M000023"></a>
756
+
757
+ <div class="method-heading">
758
+ <a href="#M000023" class="method-signature">
759
+ <span class="method-name">children_values</span><span class="method-args">(name = nil)</span>
760
+ </a>
761
+ </div>
762
+
763
+ <div class="method-description">
764
+ <p>
765
+ Returns the <a href="Tag.html#M000033">values</a> of all the <a
766
+ href="Tag.html#M000022">children</a> with the given <tt>name</tt>. If the
767
+ <a href="Tag.html#M000024">child</a> has more than one <a
768
+ href="Tag.html#M000020">value</a>, all the <a
769
+ href="Tag.html#M000033">values</a> will be added as an array. If the <a
770
+ href="Tag.html#M000024">child</a> has no <a
771
+ href="Tag.html#M000020">value</a>, <tt>nil</tt> will be added. The search
772
+ is not recursive.
773
+ </p>
774
+ <table>
775
+ <tr><td valign="top"><tt>name</tt>:</td><td>if nil, all <a href="Tag.html#M000022">children</a> are considered (nil by
776
+ default).
777
+
778
+ </td></tr>
779
+ </table>
780
+ <p><a class="source-toggle" href="#"
781
+ onclick="toggleCode('M000023-source');return false;">[Source]</a></p>
782
+ <div class="method-source-code" id="M000023-source">
783
+ <pre>
784
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 278</span>
785
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">children_values</span>(<span class="ruby-identifier">name</span> = <span class="ruby-keyword kw">nil</span>)
786
+ <span class="ruby-identifier">children_values</span> = []
787
+ <span class="ruby-identifier">each_child</span>(<span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">name</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">child</span><span class="ruby-operator">|</span>
788
+ <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">child</span>.<span class="ruby-identifier">values</span>.<span class="ruby-identifier">size</span>
789
+ <span class="ruby-keyword kw">when</span> <span class="ruby-value">0</span>
790
+ <span class="ruby-identifier">children_values</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword kw">nil</span>
791
+ <span class="ruby-keyword kw">when</span> <span class="ruby-value">1</span>
792
+ <span class="ruby-identifier">children_values</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">child</span>.<span class="ruby-identifier">value</span>
793
+ <span class="ruby-keyword kw">else</span>
794
+ <span class="ruby-identifier">children_values</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">child</span>.<span class="ruby-identifier">values</span>
795
+ <span class="ruby-keyword kw">end</span>
796
+ }
797
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">children_values</span>
798
+ <span class="ruby-keyword kw">end</span>
799
+ </pre>
800
+ </div>
801
+ </div>
802
+ </div>
803
+
804
+ <div id="method-M000040" class="method-detail">
805
+ <a name="M000040"></a>
806
+
807
+ <div class="method-heading">
808
+ <a href="#M000040" class="method-signature">
809
+ <span class="method-name">clear_attributes</span><span class="method-args">(namespace = nil)</span>
810
+ </a>
811
+ </div>
812
+
813
+ <div class="method-description">
814
+ <p>
815
+ Clears the <a href="Tag.html#M000038">attributes</a> of the specified
816
+ namespace or all the <a href="Tag.html#M000038">attributes</a> if
817
+ <tt>namespace</tt> is <tt>nil</tt>.
818
+ </p>
819
+ <p><a class="source-toggle" href="#"
820
+ onclick="toggleCode('M000040-source');return false;">[Source]</a></p>
821
+ <div class="method-source-code" id="M000040-source">
822
+ <pre>
823
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 584</span>
824
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">clear_attributes</span>(<span class="ruby-identifier">namespace</span> = <span class="ruby-keyword kw">nil</span>)
825
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">namespace</span>.<span class="ruby-identifier">nil?</span>
826
+ <span class="ruby-ivar">@attributesByNamespace</span>.<span class="ruby-identifier">clear</span>
827
+ <span class="ruby-keyword kw">else</span>
828
+ <span class="ruby-ivar">@attributesByNamespace</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">namespace</span>)
829
+ <span class="ruby-keyword kw">end</span>
830
+ <span class="ruby-keyword kw">end</span>
831
+ </pre>
832
+ </div>
833
+ </div>
834
+ </div>
835
+
836
+ <div id="method-M000018" class="method-detail">
837
+ <a name="M000018"></a>
838
+
839
+ <div class="method-heading">
840
+ <a href="#M000018" class="method-signature">
841
+ <span class="method-name">clear_children</span><span class="method-args">()</span>
842
+ </a>
843
+ </div>
844
+
845
+ <div class="method-description">
846
+ <p>
847
+ Removes all <a href="Tag.html#M000022">children</a>.
848
+ </p>
849
+ <p><a class="source-toggle" href="#"
850
+ onclick="toggleCode('M000018-source');return false;">[Source]</a></p>
851
+ <div class="method-source-code" id="M000018-source">
852
+ <pre>
853
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 202</span>
854
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">clear_children</span>
855
+ <span class="ruby-ivar">@children</span> = []
856
+ <span class="ruby-keyword kw">end</span>
857
+ </pre>
858
+ </div>
859
+ </div>
860
+ </div>
861
+
862
+ <div id="method-M000032" class="method-detail">
863
+ <a name="M000032"></a>
864
+
865
+ <div class="method-heading">
866
+ <a href="#M000032" class="method-signature">
867
+ <span class="method-name">clear_values</span><span class="method-args">()</span>
868
+ </a>
869
+ </div>
870
+
871
+ <div class="method-description">
872
+ <p>
873
+ Removes all <a href="Tag.html#M000033">values</a>.
874
+ </p>
875
+ <p><a class="source-toggle" href="#"
876
+ onclick="toggleCode('M000032-source');return false;">[Source]</a></p>
877
+ <div class="method-source-code" id="M000032-source">
878
+ <pre>
879
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 427</span>
880
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">clear_values</span>
881
+ <span class="ruby-ivar">@values</span> = []
882
+ <span class="ruby-keyword kw">end</span>
883
+ </pre>
884
+ </div>
885
+ </div>
886
+ </div>
887
+
888
+ <div id="method-M000051" class="method-detail">
889
+ <a name="M000051"></a>
890
+
891
+ <div class="method-heading">
892
+ <a href="#M000051" class="method-signature">
893
+ <span class="method-name">eql?</span><span class="method-args">(o)</span>
894
+ </a>
895
+ </div>
896
+
897
+ <div class="method-description">
898
+ <p>
899
+ Returns true if this tag (including all of its <a
900
+ href="Tag.html#M000033">values</a>, <a
901
+ href="Tag.html#M000038">attributes</a>, and <a
902
+ href="Tag.html#M000022">children</a>) is equivalent to the given tag.
903
+ </p>
904
+ <p>
905
+ Returns true if the tags are equivalet
906
+ </p>
907
+ <p><a class="source-toggle" href="#"
908
+ onclick="toggleCode('M000051-source');return false;">[Source]</a></p>
909
+ <div class="method-source-code" id="M000051-source">
910
+ <pre>
911
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 821</span>
912
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">eql?</span>(<span class="ruby-identifier">o</span>)
913
+ <span class="ruby-comment cmt"># this is safe because to_string() dumps the full state</span>
914
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Tag</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">to_string</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">to_string</span>;
915
+ <span class="ruby-keyword kw">end</span>
916
+ </pre>
917
+ </div>
918
+ </div>
919
+ </div>
920
+
921
+ <div id="method-M000037" class="method-detail">
922
+ <a name="M000037"></a>
923
+
924
+ <div class="method-heading">
925
+ <a href="#M000037" class="method-signature">
926
+ <span class="method-name">has_attribute?</span><span class="method-args">(namespace = nil, key = nil)</span>
927
+ </a>
928
+ </div>
929
+
930
+ <div class="method-description">
931
+ <p>
932
+ Indicates whether there is at least an <a
933
+ href="Tag.html#M000036">attribute</a> in this <a href="Tag.html">Tag</a>.
934
+ </p>
935
+ <pre>
936
+ has_attribute?
937
+ </pre>
938
+ <p>
939
+ Indicates whether there is the specified <a
940
+ href="Tag.html#M000036">attribute</a> exists in this <a
941
+ href="Tag.html">Tag</a>.
942
+ </p>
943
+ <pre>
944
+ has_attribute?(key)
945
+ has_attribute?(namespace, key)
946
+ </pre>
947
+ <p><a class="source-toggle" href="#"
948
+ onclick="toggleCode('M000037-source');return false;">[Source]</a></p>
949
+ <div class="method-source-code" id="M000037-source">
950
+ <pre>
951
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 519</span>
952
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">has_attribute?</span>(<span class="ruby-identifier">namespace</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">key</span> = <span class="ruby-keyword kw">nil</span>)
953
+ <span class="ruby-identifier">namespace</span>, <span class="ruby-identifier">key</span> = <span class="ruby-identifier">to_nns</span> <span class="ruby-identifier">namespace</span>, <span class="ruby-identifier">key</span>
954
+
955
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">namespace</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">key</span>
956
+ <span class="ruby-identifier">attributes</span> = <span class="ruby-ivar">@attributesByNamespace</span>[<span class="ruby-identifier">namespace</span>]
957
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">attributes</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-value">? </span><span class="ruby-keyword kw">false</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">attributes</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">key</span>)
958
+
959
+ <span class="ruby-keyword kw">else</span>
960
+ <span class="ruby-identifier">attributes</span> { <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> }
961
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
962
+ <span class="ruby-keyword kw">end</span>
963
+ <span class="ruby-keyword kw">end</span>
964
+ </pre>
965
+ </div>
966
+ </div>
967
+ </div>
968
+
969
+ <div id="method-M000025" class="method-detail">
970
+ <a name="M000025"></a>
971
+
972
+ <div class="method-heading">
973
+ <a href="#M000025" class="method-signature">
974
+ <span class="method-name">has_child?</span><span class="method-args">(name)</span>
975
+ </a>
976
+ </div>
977
+
978
+ <div class="method-description">
979
+ <p>
980
+ Indicates whether the <a href="Tag.html#M000024">child</a> <a
981
+ href="Tag.html">Tag</a> of given name exists.
982
+ </p>
983
+ <table>
984
+ <tr><td valign="top"><tt>name</tt>:</td><td>name of the searched <a href="Tag.html#M000024">child</a> <a
985
+ href="Tag.html">Tag</a>
986
+
987
+ </td></tr>
988
+ </table>
989
+ <p><a class="source-toggle" href="#"
990
+ onclick="toggleCode('M000025-source');return false;">[Source]</a></p>
991
+ <div class="method-source-code" id="M000025-source">
992
+ <pre>
993
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 321</span>
994
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">has_child?</span>(<span class="ruby-identifier">name</span>)
995
+ <span class="ruby-operator">!</span><span class="ruby-identifier">child</span>(<span class="ruby-identifier">name</span>).<span class="ruby-identifier">nil?</span>
996
+ <span class="ruby-keyword kw">end</span>
997
+ </pre>
998
+ </div>
999
+ </div>
1000
+ </div>
1001
+
1002
+ <div id="method-M000026" class="method-detail">
1003
+ <a name="M000026"></a>
1004
+
1005
+ <div class="method-heading">
1006
+ <a href="#M000026" class="method-signature">
1007
+ <span class="method-name">has_children?</span><span class="method-args">()</span>
1008
+ </a>
1009
+ </div>
1010
+
1011
+ <div class="method-description">
1012
+ <p>
1013
+ Indicates whether there are <a href="Tag.html#M000022">children</a> <a
1014
+ href="Tag.html">Tag</a>.
1015
+ </p>
1016
+ <p><a class="source-toggle" href="#"
1017
+ onclick="toggleCode('M000026-source');return false;">[Source]</a></p>
1018
+ <div class="method-source-code" id="M000026-source">
1019
+ <pre>
1020
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 327</span>
1021
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">has_children?</span>
1022
+ <span class="ruby-operator">!</span><span class="ruby-ivar">@children</span>.<span class="ruby-identifier">empty?</span>
1023
+ <span class="ruby-keyword kw">end</span>
1024
+ </pre>
1025
+ </div>
1026
+ </div>
1027
+ </div>
1028
+
1029
+ <div id="method-M000030" class="method-detail">
1030
+ <a name="M000030"></a>
1031
+
1032
+ <div class="method-heading">
1033
+ <a href="#M000030" class="method-signature">
1034
+ <span class="method-name">has_value?</span><span class="method-args">(v)</span>
1035
+ </a>
1036
+ </div>
1037
+
1038
+ <div class="method-description">
1039
+ <p>
1040
+ Returns true if <tt>v</tt> is a <a href="Tag.html#M000020">value</a> of
1041
+ this <a href="Tag.html">Tag</a>&#8216;s.
1042
+ </p>
1043
+ <p><a class="source-toggle" href="#"
1044
+ onclick="toggleCode('M000030-source');return false;">[Source]</a></p>
1045
+ <div class="method-source-code" id="M000030-source">
1046
+ <pre>
1047
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 406</span>
1048
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">has_value?</span>(<span class="ruby-identifier">v</span>)
1049
+ <span class="ruby-ivar">@values</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">v</span>)
1050
+ <span class="ruby-keyword kw">end</span>
1051
+ </pre>
1052
+ </div>
1053
+ </div>
1054
+ </div>
1055
+
1056
+ <div id="method-M000053" class="method-detail">
1057
+ <a name="M000053"></a>
1058
+
1059
+ <div class="method-heading">
1060
+ <a href="#M000053" class="method-signature">
1061
+ <span class="method-name">hash</span><span class="method-args">()</span>
1062
+ </a>
1063
+ </div>
1064
+
1065
+ <div class="method-description">
1066
+ <p>
1067
+ Returns The <a href="Tag.html#M000053">hash</a> (based on the output from
1068
+ toString())
1069
+ </p>
1070
+ <p><a class="source-toggle" href="#"
1071
+ onclick="toggleCode('M000053-source');return false;">[Source]</a></p>
1072
+ <div class="method-source-code" id="M000053-source">
1073
+ <pre>
1074
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 829</span>
1075
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">hash</span>
1076
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">to_string</span>.<span class="ruby-identifier">hash</span>
1077
+ <span class="ruby-keyword kw">end</span>
1078
+ </pre>
1079
+ </div>
1080
+ </div>
1081
+ </div>
1082
+
1083
+ <div id="method-M000043" class="method-detail">
1084
+ <a name="M000043"></a>
1085
+
1086
+ <div class="method-heading">
1087
+ <a href="#M000043" class="method-signature">
1088
+ <span class="method-name">name=</span><span class="method-args">(a_name)</span>
1089
+ </a>
1090
+ </div>
1091
+
1092
+ <div class="method-description">
1093
+ <p>
1094
+ Sets the name of this <a href="Tag.html">Tag</a>.
1095
+ </p>
1096
+ <p>
1097
+ Raises <tt>ArgumentError</tt> if the name is not a legal SDL
1098
+ </p>
1099
+ <pre>
1100
+ identifier (see SDL4R#validate_identifier)
1101
+ </pre>
1102
+ <p><a class="source-toggle" href="#"
1103
+ onclick="toggleCode('M000043-source');return false;">[Source]</a></p>
1104
+ <div class="method-source-code" id="M000043-source">
1105
+ <pre>
1106
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 657</span>
1107
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">name=</span>(<span class="ruby-identifier">a_name</span>)
1108
+ <span class="ruby-identifier">a_name</span> = <span class="ruby-identifier">a_name</span>.<span class="ruby-identifier">to_s</span>
1109
+ <span class="ruby-constant">SDL4R</span>.<span class="ruby-identifier">validate_identifier</span>(<span class="ruby-identifier">a_name</span>)
1110
+ <span class="ruby-ivar">@name</span> = <span class="ruby-identifier">a_name</span>
1111
+ <span class="ruby-keyword kw">end</span>
1112
+ </pre>
1113
+ </div>
1114
+ </div>
1115
+ </div>
1116
+
1117
+ <div id="method-M000044" class="method-detail">
1118
+ <a name="M000044"></a>
1119
+
1120
+ <div class="method-heading">
1121
+ <a href="#M000044" class="method-signature">
1122
+ <span class="method-name">namespace=</span><span class="method-args">(a_namespace)</span>
1123
+ </a>
1124
+ </div>
1125
+
1126
+ <div class="method-description">
1127
+ <p>
1128
+ The namespace to set. <tt>nil</tt> will be coerced to the empty string.
1129
+ </p>
1130
+ <p>
1131
+ Raises <tt>ArgumentError</tt> if the namespace is non-blank and is not
1132
+ </p>
1133
+ <pre>
1134
+ a legal SDL identifier (see {@link SDL4R#validate_identifier(String)})
1135
+ </pre>
1136
+ <p><a class="source-toggle" href="#"
1137
+ onclick="toggleCode('M000044-source');return false;">[Source]</a></p>
1138
+ <div class="method-source-code" id="M000044-source">
1139
+ <pre>
1140
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 668</span>
1141
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">namespace=</span>(<span class="ruby-identifier">a_namespace</span>)
1142
+ <span class="ruby-identifier">a_namespace</span> = <span class="ruby-identifier">a_namespace</span>.<span class="ruby-identifier">to_s</span>
1143
+ <span class="ruby-constant">SDL4R</span>.<span class="ruby-identifier">validate_identifier</span>(<span class="ruby-identifier">a_namespace</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">a_namespace</span>.<span class="ruby-identifier">empty?</span>
1144
+ <span class="ruby-ivar">@namespace</span> = <span class="ruby-identifier">a_namespace</span>
1145
+ <span class="ruby-keyword kw">end</span>
1146
+ </pre>
1147
+ </div>
1148
+ </div>
1149
+ </div>
1150
+
1151
+ <div id="method-M000014" class="method-detail">
1152
+ <a name="M000014"></a>
1153
+
1154
+ <div class="method-heading">
1155
+ <a href="#M000014" class="method-signature">
1156
+ <span class="method-name">new_child</span><span class="method-args">(*args, &amp;block)</span>
1157
+ </a>
1158
+ </div>
1159
+
1160
+ <div class="method-description">
1161
+ <p>
1162
+ Creates a <a href="Tag.html#M000013">new</a> <a
1163
+ href="Tag.html#M000024">child</a> tag. Can take a block so that you can <a
1164
+ href="Tag.html#M000047">write</a> something like:
1165
+ </p>
1166
+ <pre>
1167
+ car = Tag.new(&quot;car&quot;) do
1168
+ new_child(&quot;wheels&quot;) do
1169
+ self &lt;&lt; 4
1170
+ end
1171
+ end
1172
+ </pre>
1173
+ <p>
1174
+ The context of execution of the given block is the <a
1175
+ href="Tag.html#M000024">child</a> instance
1176
+ </p>
1177
+ <p>
1178
+ Returns the created <a href="Tag.html#M000024">child</a> <a
1179
+ href="Tag.html">Tag</a>.
1180
+ </p>
1181
+ <p><a class="source-toggle" href="#"
1182
+ onclick="toggleCode('M000014-source');return false;">[Source]</a></p>
1183
+ <div class="method-source-code" id="M000014-source">
1184
+ <pre>
1185
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 129</span>
1186
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">new_child</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
1187
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">add_child</span> <span class="ruby-constant">Tag</span>.<span class="ruby-identifier">new</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
1188
+ <span class="ruby-keyword kw">end</span>
1189
+ </pre>
1190
+ </div>
1191
+ </div>
1192
+ </div>
1193
+
1194
+ <div id="method-M000045" class="method-detail">
1195
+ <a name="M000045"></a>
1196
+
1197
+ <div class="method-heading">
1198
+ <a href="#M000045" class="method-signature">
1199
+ <span class="method-name">read</span><span class="method-args">(input)</span>
1200
+ </a>
1201
+ </div>
1202
+
1203
+ <div class="method-description">
1204
+ <p>
1205
+ Adds all the tags specified in the given IO, String, Pathname or URI to
1206
+ this <a href="Tag.html">Tag</a>.
1207
+ </p>
1208
+ <p>
1209
+ Returns this <a href="Tag.html">Tag</a> after adding all the <a
1210
+ href="Tag.html#M000022">children</a> <a href="Tag.html#M000045">read</a>
1211
+ from <tt>input</tt>.
1212
+ </p>
1213
+ <p><a class="source-toggle" href="#"
1214
+ onclick="toggleCode('M000045-source');return false;">[Source]</a></p>
1215
+ <div class="method-source-code" id="M000045-source">
1216
+ <pre>
1217
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 678</span>
1218
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read</span>(<span class="ruby-identifier">input</span>)
1219
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">input</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">String</span>
1220
+ <span class="ruby-identifier">read_from_io</span>(<span class="ruby-keyword kw">true</span>) { <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">input</span>) }
1221
+
1222
+ <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">input</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">Pathname</span>
1223
+ <span class="ruby-identifier">read_from_io</span>(<span class="ruby-keyword kw">true</span>) { <span class="ruby-identifier">input</span>.<span class="ruby-identifier">open</span>(<span class="ruby-value str">&quot;r&quot;</span>) }
1224
+
1225
+ <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">input</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">URI</span>
1226
+ <span class="ruby-identifier">read_from_io</span>(<span class="ruby-keyword kw">true</span>) { <span class="ruby-identifier">input</span>.<span class="ruby-identifier">open</span> }
1227
+
1228
+ <span class="ruby-keyword kw">else</span>
1229
+ <span class="ruby-identifier">read_from_io</span>(<span class="ruby-keyword kw">false</span>) { <span class="ruby-identifier">input</span> }
1230
+ <span class="ruby-keyword kw">end</span>
1231
+
1232
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">self</span>
1233
+ <span class="ruby-keyword kw">end</span>
1234
+ </pre>
1235
+ </div>
1236
+ </div>
1237
+ </div>
1238
+
1239
+ <div id="method-M000046" class="method-detail">
1240
+ <a name="M000046"></a>
1241
+
1242
+ <div class="method-heading">
1243
+ <a href="#M000046" class="method-signature">
1244
+ <span class="method-name">read_from_io</span><span class="method-args">(close_io) {|| ...}</span>
1245
+ </a>
1246
+ </div>
1247
+
1248
+ <div class="method-description">
1249
+ <p>
1250
+ Reads and parses the <tt>io</tt> returned by the specified block and closes
1251
+ this <tt>io</tt> if <tt>close_io</tt> is true.
1252
+ </p>
1253
+ <p><a class="source-toggle" href="#"
1254
+ onclick="toggleCode('M000046-source');return false;">[Source]</a></p>
1255
+ <div class="method-source-code" id="M000046-source">
1256
+ <pre>
1257
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 697</span>
1258
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read_from_io</span>(<span class="ruby-identifier">close_io</span>)
1259
+ <span class="ruby-identifier">io</span> = <span class="ruby-keyword kw">yield</span>
1260
+
1261
+ <span class="ruby-keyword kw">begin</span>
1262
+ <span class="ruby-constant">Parser</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">io</span>).<span class="ruby-identifier">parse</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">tag</span><span class="ruby-operator">|</span>
1263
+ <span class="ruby-identifier">add_child</span>(<span class="ruby-identifier">tag</span>)
1264
+ <span class="ruby-keyword kw">end</span>
1265
+
1266
+ <span class="ruby-keyword kw">ensure</span>
1267
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">close_io</span>
1268
+ <span class="ruby-identifier">io</span>.<span class="ruby-identifier">close</span> <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">IOError</span>
1269
+ <span class="ruby-keyword kw">end</span>
1270
+ <span class="ruby-keyword kw">end</span>
1271
+ <span class="ruby-keyword kw">end</span>
1272
+ </pre>
1273
+ </div>
1274
+ </div>
1275
+ </div>
1276
+
1277
+ <div id="method-M000039" class="method-detail">
1278
+ <a name="M000039"></a>
1279
+
1280
+ <div class="method-heading">
1281
+ <a href="#M000039" class="method-signature">
1282
+ <span class="method-name">remove_attribute</span><span class="method-args">(namespace, key = nil)</span>
1283
+ </a>
1284
+ </div>
1285
+
1286
+ <div class="method-description">
1287
+ <pre>
1288
+ remove_attribute(key)
1289
+ remove_attribute(namespace, key)
1290
+ </pre>
1291
+ <p>
1292
+ Removes the <a href="Tag.html#M000036">attribute</a>, whose name and
1293
+ namespace are specified.
1294
+ </p>
1295
+ <table>
1296
+ <tr><td valign="top"><tt>key</tt>:</td><td>name of the removed atribute
1297
+
1298
+ </td></tr>
1299
+ <tr><td valign="top"><tt>namespace</tt>:</td><td>namespace of the removed <a href="Tag.html#M000036">attribute</a> (equal to
1300
+ &quot;&quot;, default namespace, by default)
1301
+
1302
+ </td></tr>
1303
+ </table>
1304
+ <p>
1305
+ Returns the <a href="Tag.html#M000020">value</a> of the removed <a
1306
+ href="Tag.html#M000036">attribute</a> or <tt>nil</tt> if it didn&#8216;t
1307
+ exist.
1308
+ </p>
1309
+ <p><a class="source-toggle" href="#"
1310
+ onclick="toggleCode('M000039-source');return false;">[Source]</a></p>
1311
+ <div class="method-source-code" id="M000039-source">
1312
+ <pre>
1313
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 575</span>
1314
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">remove_attribute</span>(<span class="ruby-identifier">namespace</span>, <span class="ruby-identifier">key</span> = <span class="ruby-keyword kw">nil</span>)
1315
+ <span class="ruby-identifier">namespace</span>, <span class="ruby-identifier">key</span> = <span class="ruby-identifier">to_nns</span> <span class="ruby-identifier">namespace</span>, <span class="ruby-identifier">key</span>
1316
+ <span class="ruby-identifier">attributes</span> = <span class="ruby-ivar">@attributesByNamespace</span>[<span class="ruby-identifier">namespace</span>]
1317
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">attributes</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-value">? </span><span class="ruby-keyword kw">nil</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">attributes</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">key</span>)
1318
+ <span class="ruby-keyword kw">end</span>
1319
+ </pre>
1320
+ </div>
1321
+ </div>
1322
+ </div>
1323
+
1324
+ <div id="method-M000017" class="method-detail">
1325
+ <a name="M000017"></a>
1326
+
1327
+ <div class="method-heading">
1328
+ <a href="#M000017" class="method-signature">
1329
+ <span class="method-name">remove_child</span><span class="method-args">(child)</span>
1330
+ </a>
1331
+ </div>
1332
+
1333
+ <div class="method-description">
1334
+ <p>
1335
+ Remove a <a href="Tag.html#M000024">child</a> from this <a
1336
+ href="Tag.html">Tag</a>
1337
+ </p>
1338
+ <table>
1339
+ <tr><td valign="top"><tt><a href="Tag.html#M000024">child</a></tt>:</td><td>the <a href="Tag.html#M000024">child</a> to remove
1340
+
1341
+ </td></tr>
1342
+ </table>
1343
+ <p>
1344
+ Returns true if the <a href="Tag.html#M000024">child</a> exists and is
1345
+ removed
1346
+ </p>
1347
+ <p><a class="source-toggle" href="#"
1348
+ onclick="toggleCode('M000017-source');return false;">[Source]</a></p>
1349
+ <div class="method-source-code" id="M000017-source">
1350
+ <pre>
1351
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 196</span>
1352
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">remove_child</span>(<span class="ruby-identifier">child</span>)
1353
+ <span class="ruby-keyword kw">return</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@children</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">child</span>).<span class="ruby-identifier">nil?</span>
1354
+ <span class="ruby-keyword kw">end</span>
1355
+ </pre>
1356
+ </div>
1357
+ </div>
1358
+ </div>
1359
+
1360
+ <div id="method-M000031" class="method-detail">
1361
+ <a name="M000031"></a>
1362
+
1363
+ <div class="method-heading">
1364
+ <a href="#M000031" class="method-signature">
1365
+ <span class="method-name">remove_value</span><span class="method-args">(v)</span>
1366
+ </a>
1367
+ </div>
1368
+
1369
+ <div class="method-description">
1370
+ <p>
1371
+ Removes the first occurence of the specified <a
1372
+ href="Tag.html#M000020">value</a> from this <a href="Tag.html">Tag</a>.
1373
+ </p>
1374
+ <table>
1375
+ <tr><td valign="top"><tt>v</tt>:</td><td>The <a href="Tag.html#M000020">value</a> to remove
1376
+
1377
+ </td></tr>
1378
+ </table>
1379
+ <p>
1380
+ Returns true If the <a href="Tag.html#M000020">value</a> exists and is
1381
+ removed
1382
+ </p>
1383
+ <p><a class="source-toggle" href="#"
1384
+ onclick="toggleCode('M000031-source');return false;">[Source]</a></p>
1385
+ <div class="method-source-code" id="M000031-source">
1386
+ <pre>
1387
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 416</span>
1388
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">remove_value</span>(<span class="ruby-identifier">v</span>)
1389
+ <span class="ruby-identifier">index</span> = <span class="ruby-ivar">@values</span>.<span class="ruby-identifier">index</span>(<span class="ruby-identifier">v</span>)
1390
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">index</span>
1391
+ <span class="ruby-keyword kw">return</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@values</span>.<span class="ruby-identifier">delete_at</span>(<span class="ruby-identifier">index</span>).<span class="ruby-identifier">nil?</span>
1392
+ <span class="ruby-keyword kw">else</span>
1393
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
1394
+ <span class="ruby-keyword kw">end</span>
1395
+ <span class="ruby-keyword kw">end</span>
1396
+ </pre>
1397
+ </div>
1398
+ </div>
1399
+ </div>
1400
+
1401
+ <div id="method-M000035" class="method-detail">
1402
+ <a name="M000035"></a>
1403
+
1404
+ <div class="method-heading">
1405
+ <a href="#M000035" class="method-signature">
1406
+ <span class="method-name">set_attribute</span><span class="method-args">(namespace, key, value = nil)</span>
1407
+ </a>
1408
+ </div>
1409
+
1410
+ <div class="method-description">
1411
+ <pre>
1412
+ set_attribute(key, value)
1413
+ set_attribute(namespace, key, value)
1414
+ </pre>
1415
+ <p>
1416
+ Set an <a href="Tag.html#M000036">attribute</a> in the given namespace for
1417
+ this tag. The allowable <a href="Tag.html#M000036">attribute</a> <a
1418
+ href="Tag.html#M000020">value</a> types are the same as those allowed for
1419
+ {@link addValue(Object)}
1420
+ </p>
1421
+ <table>
1422
+ <tr><td valign="top"><tt>namespace</tt>:</td><td>The namespace for this <a href="Tag.html#M000036">attribute</a>
1423
+
1424
+ </td></tr>
1425
+ <tr><td valign="top"><tt>key</tt>:</td><td>The <a href="Tag.html#M000036">attribute</a> key
1426
+
1427
+ </td></tr>
1428
+ <tr><td valign="top"><tt><a href="Tag.html#M000020">value</a></tt>:</td><td>The <a href="Tag.html#M000036">attribute</a> <a
1429
+ href="Tag.html#M000020">value</a>
1430
+
1431
+ </td></tr>
1432
+ </table>
1433
+ <p>
1434
+ @throws IllegalArgumentException if the key is not a legal SDL
1435
+ </p>
1436
+ <pre>
1437
+ identifier (see {@link SDL4R#validateIdentifier(String)}), or the
1438
+ namespace is non-blank and is not a legal SDL identifier, or the
1439
+ value is not a legal SDL type
1440
+ </pre>
1441
+ <p><a class="source-toggle" href="#"
1442
+ onclick="toggleCode('M000035-source');return false;">[Source]</a></p>
1443
+ <div class="method-source-code" id="M000035-source">
1444
+ <pre>
1445
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 476</span>
1446
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set_attribute</span>(<span class="ruby-identifier">namespace</span>, <span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span> = <span class="ruby-keyword kw">nil</span>)
1447
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span>.<span class="ruby-identifier">nil?</span>
1448
+ <span class="ruby-identifier">value</span> = <span class="ruby-identifier">key</span>
1449
+ <span class="ruby-identifier">key</span> = <span class="ruby-identifier">namespace</span>
1450
+ <span class="ruby-identifier">namespace</span> = <span class="ruby-value str">&quot;&quot;</span>
1451
+ <span class="ruby-keyword kw">end</span>
1452
+
1453
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;attribute namespace must be a String&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">namespace</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">String</span>
1454
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;attribute key must be a String&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">key</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">String</span>
1455
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;attribute key cannot be empty&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">key</span>.<span class="ruby-identifier">empty?</span>
1456
+
1457
+ <span class="ruby-constant">SDL4R</span>.<span class="ruby-identifier">validate_identifier</span>(<span class="ruby-identifier">namespace</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">namespace</span>.<span class="ruby-identifier">empty?</span>
1458
+ <span class="ruby-constant">SDL4R</span>.<span class="ruby-identifier">validate_identifier</span>(<span class="ruby-identifier">key</span>)
1459
+
1460
+ <span class="ruby-identifier">attributes</span> = <span class="ruby-ivar">@attributesByNamespace</span>[<span class="ruby-identifier">namespace</span>]
1461
+
1462
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">attributes</span>.<span class="ruby-identifier">nil?</span>
1463
+ <span class="ruby-identifier">attributes</span> = {}
1464
+ <span class="ruby-ivar">@attributesByNamespace</span>[<span class="ruby-identifier">namespace</span>] = <span class="ruby-identifier">attributes</span>
1465
+ <span class="ruby-keyword kw">end</span>
1466
+
1467
+ <span class="ruby-identifier">attributes</span>[<span class="ruby-identifier">key</span>] = <span class="ruby-constant">SDL4R</span>.<span class="ruby-identifier">coerce_or_fail</span>(<span class="ruby-identifier">value</span>)
1468
+ <span class="ruby-keyword kw">end</span>
1469
+ </pre>
1470
+ </div>
1471
+ </div>
1472
+ </div>
1473
+
1474
+ <div id="method-M000041" class="method-detail">
1475
+ <a name="M000041"></a>
1476
+
1477
+ <div class="method-heading">
1478
+ <a href="#M000041" class="method-signature">
1479
+ <span class="method-name">set_attributes</span><span class="method-args">(namespace, attribute_hash = nil)</span>
1480
+ </a>
1481
+ </div>
1482
+
1483
+ <div class="method-description">
1484
+ <pre>
1485
+ set_attributes(attribute_hash)
1486
+ set_attributes(namespace, attribute_hash)
1487
+ </pre>
1488
+ <p>
1489
+ Sets the <a href="Tag.html#M000038">attributes</a> specified by a Hash in
1490
+ the given <tt>namespace</tt> in one operation. The previous <a
1491
+ href="Tag.html#M000038">attributes</a> of the specified <tt>namespace</tt>
1492
+ are removed. See <a href="Tag.html#M000035">set_attribute</a> for allowable
1493
+ <a href="Tag.html#M000036">attribute</a> <a
1494
+ href="Tag.html#M000020">value</a> types.
1495
+ </p>
1496
+ <table>
1497
+ <tr><td valign="top"><tt><a href="Tag.html#M000038">attributes</a></tt>:</td><td>a Hash where keys are <a href="Tag.html#M000036">attribute</a> keys
1498
+
1499
+ </td></tr>
1500
+ <tr><td valign="top"><tt>namespace</tt>:</td><td>&quot;&quot; (default namespace) by default
1501
+
1502
+ </td></tr>
1503
+ </table>
1504
+ <p>
1505
+ Raises an <tt>ArgumentError</tt> if any key in the map is not a legal SDL
1506
+ </p>
1507
+ <pre>
1508
+ identifier (see SDL4R#validate_identifier), or any value
1509
+ is not a legal SDL type.
1510
+ </pre>
1511
+ <p><a class="source-toggle" href="#"
1512
+ onclick="toggleCode('M000041-source');return false;">[Source]</a></p>
1513
+ <div class="method-source-code" id="M000041-source">
1514
+ <pre>
1515
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 625</span>
1516
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set_attributes</span>(<span class="ruby-identifier">namespace</span>, <span class="ruby-identifier">attribute_hash</span> = <span class="ruby-keyword kw">nil</span>)
1517
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">attribute_hash</span>.<span class="ruby-identifier">nil?</span>
1518
+ <span class="ruby-identifier">attribute_hash</span> = <span class="ruby-identifier">namespace</span>
1519
+ <span class="ruby-identifier">namespace</span> = <span class="ruby-value str">&quot;&quot;</span>
1520
+ <span class="ruby-keyword kw">end</span>
1521
+
1522
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;namespace can't be nil&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">namespace</span>.<span class="ruby-identifier">nil?</span>
1523
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;attribute_hash should be a Hash&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">attribute_hash</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">Hash</span>
1524
+
1525
+ <span class="ruby-identifier">namespace_attributes</span> = <span class="ruby-ivar">@attributesByNamespace</span>[<span class="ruby-identifier">namespace</span>]
1526
+ <span class="ruby-identifier">namespace_attributes</span>.<span class="ruby-identifier">clear</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">namespace_attributes</span>
1527
+
1528
+ <span class="ruby-identifier">attribute_hash</span>.<span class="ruby-identifier">each_pair</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
1529
+ <span class="ruby-comment cmt"># Calling set_attribute() is required to ensure validations</span>
1530
+ <span class="ruby-identifier">set_attribute</span>(<span class="ruby-identifier">namespace</span>, <span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span>)
1531
+ <span class="ruby-keyword kw">end</span>
1532
+ <span class="ruby-keyword kw">end</span>
1533
+ </pre>
1534
+ </div>
1535
+ </div>
1536
+ </div>
1537
+
1538
+ <div id="method-M000027" class="method-detail">
1539
+ <a name="M000027"></a>
1540
+
1541
+ <div class="method-heading">
1542
+ <a href="#M000027" class="method-signature">
1543
+ <span class="method-name">to_child_hash</span><span class="method-args">()</span>
1544
+ </a>
1545
+ </div>
1546
+
1547
+ <div class="method-description">
1548
+ <p>
1549
+ Returns a <a href="Tag.html#M000013">new</a> Hash where the <a
1550
+ href="Tag.html#M000022">children</a>&#8216;s names as keys and their <a
1551
+ href="Tag.html#M000033">values</a> as the key&#8216;s <a
1552
+ href="Tag.html#M000020">value</a>. Example:
1553
+ </p>
1554
+ <pre>
1555
+ child1 &quot;toto&quot;
1556
+ child2 2
1557
+ </pre>
1558
+ <p>
1559
+ would give
1560
+ </p>
1561
+ <pre>
1562
+ { &quot;child1&quot; =&gt; &quot;toto&quot;, &quot;child2&quot; =&gt; 2 }
1563
+ </pre>
1564
+ <p><a class="source-toggle" href="#"
1565
+ onclick="toggleCode('M000027-source');return false;">[Source]</a></p>
1566
+ <div class="method-source-code" id="M000027-source">
1567
+ <pre>
1568
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 366</span>
1569
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_child_hash</span>
1570
+ <span class="ruby-identifier">hash</span> = {}
1571
+ <span class="ruby-identifier">children</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">child</span><span class="ruby-operator">|</span> <span class="ruby-identifier">hash</span>[<span class="ruby-identifier">child</span>.<span class="ruby-identifier">name</span>] = <span class="ruby-identifier">child</span>.<span class="ruby-identifier">value</span> }
1572
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">hash</span>
1573
+ <span class="ruby-keyword kw">end</span>
1574
+ </pre>
1575
+ </div>
1576
+ </div>
1577
+ </div>
1578
+
1579
+ <div id="method-M000028" class="method-detail">
1580
+ <a name="M000028"></a>
1581
+
1582
+ <div class="method-heading">
1583
+ <a href="#M000028" class="method-signature">
1584
+ <span class="method-name">to_child_string_hash</span><span class="method-args">()</span>
1585
+ </a>
1586
+ </div>
1587
+
1588
+ <div class="method-description">
1589
+ <p>
1590
+ Returns a <a href="Tag.html#M000013">new</a> Hash where the <a
1591
+ href="Tag.html#M000022">children</a>&#8216;s names as keys and their <a
1592
+ href="Tag.html#M000033">values</a> as the key&#8216;s <a
1593
+ href="Tag.html#M000020">value</a>. Values are converted to Strings.
1594
+ <tt>nil</tt> <a href="Tag.html#M000033">values</a> become empty Strings.
1595
+ Example:
1596
+ </p>
1597
+ <pre>
1598
+ child1 &quot;toto&quot;
1599
+ child2 2
1600
+ child3 null
1601
+ </pre>
1602
+ <p>
1603
+ would give
1604
+ </p>
1605
+ <pre>
1606
+ { &quot;child1&quot; =&gt; &quot;toto&quot;, &quot;child2&quot; =&gt; &quot;2&quot;, &quot;child3&quot; =&gt; &quot;&quot; }
1607
+ </pre>
1608
+ <p><a class="source-toggle" href="#"
1609
+ onclick="toggleCode('M000028-source');return false;">[Source]</a></p>
1610
+ <div class="method-source-code" id="M000028-source">
1611
+ <pre>
1612
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 384</span>
1613
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_child_string_hash</span>
1614
+ <span class="ruby-identifier">hash</span> = {}
1615
+ <span class="ruby-identifier">children</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">child</span><span class="ruby-operator">|</span>
1616
+ <span class="ruby-comment cmt"># FIXME: it is quite hard to be sure whether we should mimic the Java version</span>
1617
+ <span class="ruby-comment cmt"># as there might be a lot of values that don't translate nicely to Strings.</span>
1618
+ <span class="ruby-identifier">hash</span>[<span class="ruby-identifier">child</span>.<span class="ruby-identifier">name</span>] = <span class="ruby-identifier">child</span>.<span class="ruby-identifier">value</span>.<span class="ruby-identifier">to_s</span>
1619
+ <span class="ruby-keyword kw">end</span>
1620
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">hash</span>
1621
+ <span class="ruby-keyword kw">end</span>
1622
+ </pre>
1623
+ </div>
1624
+ </div>
1625
+ </div>
1626
+
1627
+ <div id="method-M000048" class="method-detail">
1628
+ <a name="M000048"></a>
1629
+
1630
+ <div class="method-heading">
1631
+ <a href="#M000048" class="method-signature">
1632
+ <span class="method-name">to_s</span><span class="method-args">()</span>
1633
+ </a>
1634
+ </div>
1635
+
1636
+ <div class="method-description">
1637
+ <p>
1638
+ Get a String representation of this SDL <a href="Tag.html">Tag</a>. This
1639
+ method returns a complete description of the <a
1640
+ href="Tag.html">Tag</a>&#8216;s state using SDL (i.e. the output can be
1641
+ parsed by {@link read(String)})
1642
+ </p>
1643
+ <p>
1644
+ Returns A string representation of this tag using SDL
1645
+ </p>
1646
+ <p><a class="source-toggle" href="#"
1647
+ onclick="toggleCode('M000048-source');return false;">[Source]</a></p>
1648
+ <div class="method-source-code" id="M000048-source">
1649
+ <pre>
1650
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 741</span>
1651
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
1652
+ <span class="ruby-identifier">to_string</span>
1653
+ <span class="ruby-keyword kw">end</span>
1654
+ </pre>
1655
+ </div>
1656
+ </div>
1657
+ </div>
1658
+
1659
+ <div id="method-M000049" class="method-detail">
1660
+ <a name="M000049"></a>
1661
+
1662
+ <div class="method-heading">
1663
+ <a href="#M000049" class="method-signature">
1664
+ <span class="method-name">to_string</span><span class="method-args">(line_prefix = &quot;&quot;, indent = &quot;\t&quot;)</span>
1665
+ </a>
1666
+ </div>
1667
+
1668
+ <div class="method-description">
1669
+ <table>
1670
+ <tr><td valign="top"><tt>linePrefix</tt>:</td><td>A prefix to insert before every line.
1671
+
1672
+ </td></tr>
1673
+ </table>
1674
+ <p>
1675
+ Returns A string representation of this tag using SDL
1676
+ </p>
1677
+ <p>
1678
+ TODO: break up long lines using the backslash
1679
+ </p>
1680
+ <p><a class="source-toggle" href="#"
1681
+ onclick="toggleCode('M000049-source');return false;">[Source]</a></p>
1682
+ <div class="method-source-code" id="M000049-source">
1683
+ <pre>
1684
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 751</span>
1685
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_string</span>(<span class="ruby-identifier">line_prefix</span> = <span class="ruby-value str">&quot;&quot;</span>, <span class="ruby-identifier">indent</span> = <span class="ruby-value str">&quot;\t&quot;</span>)
1686
+ <span class="ruby-identifier">line_prefix</span> = <span class="ruby-value str">&quot;&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">line_prefix</span>.<span class="ruby-identifier">nil?</span>
1687
+ <span class="ruby-identifier">s</span> = <span class="ruby-value str">&quot;&quot;</span>
1688
+ <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">line_prefix</span>
1689
+
1690
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;content&quot;</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">namespace</span>.<span class="ruby-identifier">empty?</span>
1691
+ <span class="ruby-identifier">skip_value_space</span> = <span class="ruby-keyword kw">true</span>
1692
+ <span class="ruby-keyword kw">else</span>
1693
+ <span class="ruby-identifier">skip_value_space</span> = <span class="ruby-keyword kw">false</span>
1694
+ <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{namespace}:&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">namespace</span>.<span class="ruby-identifier">empty?</span>
1695
+ <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">name</span>
1696
+ <span class="ruby-keyword kw">end</span>
1697
+
1698
+ <span class="ruby-comment cmt"># output values</span>
1699
+ <span class="ruby-identifier">values</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
1700
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">skip_value_space</span>
1701
+ <span class="ruby-identifier">skip_value_space</span> = <span class="ruby-keyword kw">false</span>
1702
+ <span class="ruby-keyword kw">else</span>
1703
+ <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot; &quot;</span>
1704
+ <span class="ruby-keyword kw">end</span>
1705
+ <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">SDL4R</span>.<span class="ruby-identifier">format</span>(<span class="ruby-identifier">value</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-identifier">line_prefix</span>, <span class="ruby-identifier">indent</span>)
1706
+ <span class="ruby-keyword kw">end</span>
1707
+
1708
+ <span class="ruby-comment cmt"># output attributes</span>
1709
+ <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@attributesByNamespace</span>.<span class="ruby-identifier">empty?</span>
1710
+ <span class="ruby-identifier">all_attributes_hash</span> = <span class="ruby-identifier">attributes</span>
1711
+ <span class="ruby-identifier">all_attributes_array</span> = <span class="ruby-identifier">all_attributes_hash</span>.<span class="ruby-identifier">sort</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span>, <span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
1712
+ <span class="ruby-identifier">namespace1</span>, <span class="ruby-identifier">name1</span> = <span class="ruby-identifier">a</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">split</span>(<span class="ruby-value str">':'</span>)
1713
+ <span class="ruby-identifier">namespace1</span>, <span class="ruby-identifier">name1</span> = <span class="ruby-value str">&quot;&quot;</span>, <span class="ruby-identifier">namespace1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">name1</span>.<span class="ruby-identifier">nil?</span>
1714
+ <span class="ruby-identifier">namespace2</span>, <span class="ruby-identifier">name2</span> = <span class="ruby-identifier">b</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">split</span>(<span class="ruby-value str">':'</span>)
1715
+ <span class="ruby-identifier">namespace2</span>, <span class="ruby-identifier">name2</span> = <span class="ruby-value str">&quot;&quot;</span>, <span class="ruby-identifier">namespace2</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">name2</span>.<span class="ruby-identifier">nil?</span>
1716
+
1717
+ <span class="ruby-identifier">diff</span> = <span class="ruby-identifier">namespace1</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">namespace2</span>
1718
+ <span class="ruby-identifier">diff</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">name1</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">name2</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">diff</span>
1719
+ }
1720
+ <span class="ruby-identifier">all_attributes_array</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">attribute_name</span>, <span class="ruby-identifier">attribute_value</span><span class="ruby-operator">|</span>
1721
+ <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot; &quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">attribute_name</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">'='</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">SDL4R</span>.<span class="ruby-identifier">format</span>(<span class="ruby-identifier">attribute_value</span>, <span class="ruby-keyword kw">true</span>)
1722
+ <span class="ruby-keyword kw">end</span>
1723
+ <span class="ruby-keyword kw">end</span>
1724
+
1725
+ <span class="ruby-comment cmt"># output children</span>
1726
+ <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@children</span>.<span class="ruby-identifier">empty?</span>
1727
+ <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; {#{$/}&quot;</span>
1728
+ <span class="ruby-identifier">children_to_string</span>(<span class="ruby-identifier">line_prefix</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">indent</span>, <span class="ruby-identifier">s</span>)
1729
+ <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">line_prefix</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">?}</span>
1730
+ <span class="ruby-keyword kw">end</span>
1731
+
1732
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">s</span>
1733
+ <span class="ruby-keyword kw">end</span>
1734
+ </pre>
1735
+ </div>
1736
+ </div>
1737
+ </div>
1738
+
1739
+ <div id="method-M000054" class="method-detail">
1740
+ <a name="M000054"></a>
1741
+
1742
+ <div class="method-heading">
1743
+ <a href="#M000054" class="method-signature">
1744
+ <span class="method-name">to_xml_string</span><span class="method-args">(line_prefix = &quot;&quot;, uri_by_namespace = nil)</span>
1745
+ </a>
1746
+ </div>
1747
+
1748
+ <div class="method-description">
1749
+ <p>
1750
+ Returns a string containing an XML representation of this tag. Values will
1751
+ be represented using _val0, _val1, etc.
1752
+ </p>
1753
+ <table>
1754
+ <tr><td valign="top"><tt>line_prefix</tt>:</td><td>A prefix to insert before every line.
1755
+
1756
+ </td></tr>
1757
+ <tr><td valign="top"><tt>uri_by_namespace</tt>:</td><td>a Hash giving the URIs for the namespaces. Nil to ignore this.
1758
+
1759
+ </td></tr>
1760
+ </table>
1761
+ <p><a class="source-toggle" href="#"
1762
+ onclick="toggleCode('M000054-source');return false;">[Source]</a></p>
1763
+ <div class="method-source-code" id="M000054-source">
1764
+ <pre>
1765
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 839</span>
1766
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_xml_string</span>(<span class="ruby-identifier">line_prefix</span> = <span class="ruby-value str">&quot;&quot;</span>, <span class="ruby-identifier">uri_by_namespace</span> = <span class="ruby-keyword kw">nil</span>)
1767
+ <span class="ruby-identifier">line_prefix</span> <span class="ruby-operator">||=</span> <span class="ruby-value str">&quot;&quot;</span>
1768
+
1769
+ <span class="ruby-identifier">s</span> = <span class="ruby-value str">&quot;&quot;</span>
1770
+ <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">line_prefix</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">?&lt;</span>
1771
+ <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{namespace}:&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">namespace</span>.<span class="ruby-identifier">empty?</span>
1772
+ <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">name</span>
1773
+
1774
+ <span class="ruby-comment cmt"># output namespace declarations</span>
1775
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">uri_by_namespace</span>
1776
+ <span class="ruby-identifier">uri_by_namespace</span>.<span class="ruby-identifier">each_pair</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">namespace</span>, <span class="ruby-identifier">uri</span><span class="ruby-operator">|</span>
1777
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">namespace</span>
1778
+ <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; xmlns:#{namespace}=\&quot;#{uri}\&quot;&quot;</span>
1779
+ <span class="ruby-keyword kw">else</span>
1780
+ <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; xmlns=\&quot;#{uri}\&quot;&quot;</span>
1781
+ <span class="ruby-keyword kw">end</span>
1782
+ <span class="ruby-keyword kw">end</span>
1783
+ <span class="ruby-keyword kw">end</span>
1784
+
1785
+ <span class="ruby-comment cmt"># output values</span>
1786
+ <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@values</span>.<span class="ruby-identifier">empty?</span>
1787
+ <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
1788
+ <span class="ruby-ivar">@values</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
1789
+ <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot; _val&quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">i</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;=\&quot;&quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">SDL4R</span>.<span class="ruby-identifier">format</span>(<span class="ruby-identifier">value</span>, <span class="ruby-keyword kw">false</span>) <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;\&quot;&quot;</span>
1790
+ <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
1791
+ <span class="ruby-keyword kw">end</span>
1792
+ <span class="ruby-keyword kw">end</span>
1793
+
1794
+ <span class="ruby-comment cmt"># output attributes</span>
1795
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">has_attribute?</span>
1796
+ <span class="ruby-identifier">attributes</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">attribute_namespace</span>, <span class="ruby-identifier">attribute_name</span>, <span class="ruby-identifier">attribute_value</span><span class="ruby-operator">|</span>
1797
+ <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot; &quot;</span>
1798
+ <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{attribute_namespace}:&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">attribute_namespace</span>.<span class="ruby-identifier">empty?</span>
1799
+ <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">attribute_name</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;=\&quot;&quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">SDL4R</span>.<span class="ruby-identifier">format</span>(<span class="ruby-identifier">attribute_value</span>, <span class="ruby-keyword kw">false</span>) <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">?&quot;</span>
1800
+ <span class="ruby-keyword kw">end</span>
1801
+ <span class="ruby-keyword kw">end</span>
1802
+
1803
+ <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@children</span>.<span class="ruby-identifier">empty?</span>
1804
+ <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;/&gt;&quot;</span>
1805
+ <span class="ruby-keyword kw">else</span>
1806
+ <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;&gt;\n&quot;</span>
1807
+ <span class="ruby-ivar">@children</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">child</span><span class="ruby-operator">|</span>
1808
+ <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">child</span>.<span class="ruby-identifier">to_xml_string</span>(<span class="ruby-identifier">line_prefix</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot; &quot;</span>) <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">?\n</span>
1809
+ <span class="ruby-keyword kw">end</span>
1810
+
1811
+ <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">line_prefix</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;&lt;/&quot;</span>
1812
+ <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{namespace}:&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">namespace</span>.<span class="ruby-identifier">empty?</span>
1813
+ <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">name</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">?&gt;</span>
1814
+ <span class="ruby-keyword kw">end</span>
1815
+
1816
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">s</span>
1817
+ <span class="ruby-keyword kw">end</span>
1818
+ </pre>
1819
+ </div>
1820
+ </div>
1821
+ </div>
1822
+
1823
+ <div id="method-M000020" class="method-detail">
1824
+ <a name="M000020"></a>
1825
+
1826
+ <div class="method-heading">
1827
+ <a href="#M000020" class="method-signature">
1828
+ <span class="method-name">value</span><span class="method-args">()</span>
1829
+ </a>
1830
+ </div>
1831
+
1832
+ <div class="method-description">
1833
+ <p>
1834
+ A convenience method that returns the first <a
1835
+ href="Tag.html#M000020">value</a>.
1836
+ </p>
1837
+ <p><a class="source-toggle" href="#"
1838
+ onclick="toggleCode('M000020-source');return false;">[Source]</a></p>
1839
+ <div class="method-source-code" id="M000020-source">
1840
+ <pre>
1841
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 220</span>
1842
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">value</span>
1843
+ <span class="ruby-ivar">@values</span>[<span class="ruby-value">0</span>]
1844
+ <span class="ruby-keyword kw">end</span>
1845
+ </pre>
1846
+ </div>
1847
+ </div>
1848
+ </div>
1849
+
1850
+ <div id="method-M000019" class="method-detail">
1851
+ <a name="M000019"></a>
1852
+
1853
+ <div class="method-heading">
1854
+ <a href="#M000019" class="method-signature">
1855
+ <span class="method-name">value=</span><span class="method-args">(value)</span>
1856
+ </a>
1857
+ </div>
1858
+
1859
+ <div class="method-description">
1860
+ <p>
1861
+ A convenience method that sets the first <a
1862
+ href="Tag.html#M000020">value</a> in the <a
1863
+ href="Tag.html#M000020">value</a> list. See {@link addValue(Object)} for
1864
+ legal types.
1865
+ </p>
1866
+ <table>
1867
+ <tr><td valign="top"><tt><a href="Tag.html#M000020">value</a></tt>:</td><td>The <a href="Tag.html#M000020">value</a> to be set.
1868
+
1869
+ </td></tr>
1870
+ </table>
1871
+ <p>
1872
+ @throws IllegalArgumentException if the <a
1873
+ href="Tag.html#M000020">value</a> is not a legal SDL type
1874
+ </p>
1875
+ <p><a class="source-toggle" href="#"
1876
+ onclick="toggleCode('M000019-source');return false;">[Source]</a></p>
1877
+ <div class="method-source-code" id="M000019-source">
1878
+ <pre>
1879
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 213</span>
1880
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">value=</span>(<span class="ruby-identifier">value</span>)
1881
+ <span class="ruby-ivar">@values</span>[<span class="ruby-value">0</span>] = <span class="ruby-constant">SDL4R</span>.<span class="ruby-identifier">coerce_or_fail</span>(<span class="ruby-identifier">value</span>)
1882
+ <span class="ruby-keyword kw">end</span>
1883
+ </pre>
1884
+ </div>
1885
+ </div>
1886
+ </div>
1887
+
1888
+ <div id="method-M000033" class="method-detail">
1889
+ <a name="M000033"></a>
1890
+
1891
+ <div class="method-heading">
1892
+ <a href="#M000033" class="method-signature">
1893
+ <span class="method-name">values</span><span class="method-args">( {|value| ...}</span>
1894
+ </a>
1895
+ </div>
1896
+
1897
+ <div class="method-description">
1898
+ <p>
1899
+ Returns an Array of the <a href="Tag.html#M000033">values</a> of this <a
1900
+ href="Tag.html">Tag</a> or enumerates them.
1901
+ </p>
1902
+ <pre>
1903
+ tag.values # =&gt; [123, &quot;spices&quot;]
1904
+ tag.values { |value| puts value }
1905
+ </pre>
1906
+ <p><a class="source-toggle" href="#"
1907
+ onclick="toggleCode('M000033-source');return false;">[Source]</a></p>
1908
+ <div class="method-source-code" id="M000033-source">
1909
+ <pre>
1910
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 436</span>
1911
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">values</span> <span class="ruby-comment cmt"># :yields: value</span>
1912
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
1913
+ <span class="ruby-ivar">@values</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-keyword kw">yield</span> <span class="ruby-identifier">v</span> }
1914
+ <span class="ruby-keyword kw">else</span>
1915
+ <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@values</span>
1916
+ <span class="ruby-keyword kw">end</span>
1917
+ <span class="ruby-keyword kw">end</span>
1918
+ </pre>
1919
+ </div>
1920
+ </div>
1921
+ </div>
1922
+
1923
+ <div id="method-M000034" class="method-detail">
1924
+ <a name="M000034"></a>
1925
+
1926
+ <div class="method-heading">
1927
+ <a href="#M000034" class="method-signature">
1928
+ <span class="method-name">values=</span><span class="method-args">(someValues)</span>
1929
+ </a>
1930
+ </div>
1931
+
1932
+ <div class="method-description">
1933
+ <p>
1934
+ Set the <a href="Tag.html#M000033">values</a> for this tag. See {@link
1935
+ addValue(Object)} for legal <a href="Tag.html#M000020">value</a> types.
1936
+ </p>
1937
+ <table>
1938
+ <tr><td valign="top"><tt><a href="Tag.html#M000033">values</a></tt>:</td><td>The <a href="Tag.html#M000013">new</a> <a
1939
+ href="Tag.html#M000033">values</a>
1940
+
1941
+ </td></tr>
1942
+ </table>
1943
+ <p>
1944
+ @throws IllegalArgumentException if the collection contains any <a
1945
+ href="Tag.html#M000033">values</a>
1946
+ </p>
1947
+ <pre>
1948
+ which are not legal SDL types
1949
+ </pre>
1950
+ <p><a class="source-toggle" href="#"
1951
+ onclick="toggleCode('M000034-source');return false;">[Source]</a></p>
1952
+ <div class="method-source-code" id="M000034-source">
1953
+ <pre>
1954
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 452</span>
1955
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">values=</span>(<span class="ruby-identifier">someValues</span>)
1956
+ <span class="ruby-ivar">@values</span>.<span class="ruby-identifier">clear</span>()
1957
+ <span class="ruby-identifier">someValues</span>.<span class="ruby-identifier">to_a</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
1958
+ <span class="ruby-comment cmt"># this is required to ensure validation of types</span>
1959
+ <span class="ruby-identifier">add_value</span>(<span class="ruby-identifier">v</span>)
1960
+ }
1961
+ <span class="ruby-keyword kw">end</span>
1962
+ </pre>
1963
+ </div>
1964
+ </div>
1965
+ </div>
1966
+
1967
+ <div id="method-M000047" class="method-detail">
1968
+ <a name="M000047"></a>
1969
+
1970
+ <div class="method-heading">
1971
+ <a href="#M000047" class="method-signature">
1972
+ <span class="method-name">write</span><span class="method-args">(output, include_root = false)</span>
1973
+ </a>
1974
+ </div>
1975
+
1976
+ <div class="method-description">
1977
+ <p>
1978
+ Write this tag out to the given IO or string (optionally clipping the
1979
+ root.)
1980
+ </p>
1981
+ <table>
1982
+ <tr><td valign="top"><tt>writer</tt>:</td><td>The writer to which we will <a href="Tag.html#M000047">write</a> this tag
1983
+
1984
+ </td></tr>
1985
+ <tr><td valign="top"><tt>includeRoot</tt>:</td><td>If true this tag will be written out as the root
1986
+
1987
+ </td></tr>
1988
+ </table>
1989
+ <pre>
1990
+ element, if false only the children will be written
1991
+ </pre>
1992
+ <p><a class="source-toggle" href="#"
1993
+ onclick="toggleCode('M000047-source');return false;">[Source]</a></p>
1994
+ <div class="method-source-code" id="M000047-source">
1995
+ <pre>
1996
+ <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 719</span>
1997
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">write</span>(<span class="ruby-identifier">output</span>, <span class="ruby-identifier">include_root</span> = <span class="ruby-keyword kw">false</span>)
1998
+ <span class="ruby-identifier">io</span> = (<span class="ruby-identifier">output</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">String</span>))<span class="ruby-operator">?</span> <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">output</span>) <span class="ruby-operator">:</span> <span class="ruby-identifier">output</span>
1999
+
2000
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">include_root</span>
2001
+ <span class="ruby-identifier">io</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">to_s</span>
2002
+ <span class="ruby-keyword kw">else</span>
2003
+ <span class="ruby-identifier">each_child</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">child</span>, <span class="ruby-identifier">index</span><span class="ruby-operator">|</span>
2004
+ <span class="ruby-identifier">io</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">$/</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">index</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
2005
+ <span class="ruby-identifier">child</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">io</span>)
2006
+ <span class="ruby-keyword kw">end</span>
2007
+ <span class="ruby-keyword kw">end</span>
2008
+
2009
+ <span class="ruby-identifier">io</span>.<span class="ruby-identifier">close</span>()
2010
+ <span class="ruby-keyword kw">end</span>
2011
+ </pre>
2012
+ </div>
2013
+ </div>
2014
+ </div>
2015
+
2016
+
2017
+ </div>
2018
+
2019
+
2020
+ </div>
2021
+
2022
+
2023
+ <div id="validator-badges">
2024
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
2025
+ </div>
2026
+
2027
+ </body>
2028
+ </html>