sdl4r 0.9.3 → 0.9.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -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>