sdl4r 0.9.8 → 0.9.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. data/CHANGELOG +14 -1
  2. data/README +4 -4
  3. data/Rakefile +15 -12
  4. data/TODO +11 -4
  5. data/lib/sdl4r/parser.rb +25 -33
  6. data/lib/sdl4r/parser/token.rb +1 -1
  7. data/lib/sdl4r/sdl4r.rb +50 -22
  8. data/lib/sdl4r/sdl_time_span.rb +2 -2
  9. data/lib/sdl4r/serializer.rb +152 -0
  10. data/lib/sdl4r/tag.rb +15 -1
  11. data/test/sdl4r/parser_test.rb +5 -0
  12. data/test/sdl4r/serializer_test.rb +78 -0
  13. data/test/sdl4r/tag_test.rb +20 -1
  14. metadata +52 -81
  15. data/doc/classes/SDL4R.html +0 -408
  16. data/doc/classes/SDL4R/Parser.html +0 -190
  17. data/doc/classes/SDL4R/ParserTest.html +0 -385
  18. data/doc/classes/SDL4R/SDL4RTest.html +0 -532
  19. data/doc/classes/SDL4R/SDLTest.html +0 -77
  20. data/doc/classes/SDL4R/SdlBinary.html +0 -188
  21. data/doc/classes/SDL4R/SdlParseError.html +0 -110
  22. data/doc/classes/SDL4R/SdlTimeSpan.html +0 -637
  23. data/doc/classes/SDL4R/Tag.html +0 -1249
  24. data/doc/classes/SDL4R/TagTest.html +0 -292
  25. data/doc/created.rid +0 -1
  26. data/doc/files/CHANGELOG.html +0 -200
  27. data/doc/files/LICENSE.html +0 -497
  28. data/doc/files/README.html +0 -406
  29. data/doc/files/lib/sdl4r/parser/reader_rb.html +0 -54
  30. data/doc/files/lib/sdl4r/parser/time_span_with_zone_rb.html +0 -54
  31. data/doc/files/lib/sdl4r/parser/token_rb.html +0 -54
  32. data/doc/files/lib/sdl4r/parser/tokenizer_rb.html +0 -54
  33. data/doc/files/lib/sdl4r/parser_rb.html +0 -62
  34. data/doc/files/lib/sdl4r/sdl4r_rb.html +0 -64
  35. data/doc/files/lib/sdl4r/sdl_binary_rb.html +0 -54
  36. data/doc/files/lib/sdl4r/sdl_parse_error_rb.html +0 -54
  37. data/doc/files/lib/sdl4r/sdl_time_span_rb.html +0 -54
  38. data/doc/files/lib/sdl4r/tag_rb.html +0 -64
  39. data/doc/files/lib/sdl4r_rb.html +0 -54
  40. data/doc/files/test/sdl4r/parser_test_rb.html +0 -64
  41. data/doc/files/test/sdl4r/sdl4r_test_rb.html +0 -67
  42. data/doc/files/test/sdl4r/sdl_test_rb.html +0 -64
  43. data/doc/files/test/sdl4r/tag_test_rb.html +0 -64
  44. data/doc/fr_class_index.html +0 -19
  45. data/doc/fr_file_index.html +0 -37
  46. data/doc/fr_method_index.html +0 -4711
  47. data/doc/index.html +0 -15
  48. data/doc/rdoc-style.css +0 -328
@@ -1,1249 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2
- <html lang='en'>
3
- <head>
4
- <title>: SDL4R::Tag [RDoc: Simple Declarative Language for Ruby]</title>
5
- <meta content='text/html; charset=utf-8' http-equiv='Content-Type'>
6
- <link href='../../rdoc-style.css' media='screen' rel='stylesheet' type='text/css'>
7
- <script type='text/javascript'>
8
- //<![CDATA[
9
- function popupCode(url) {
10
- window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
11
- }
12
-
13
- function toggleCode(id) {
14
- var code = document.getElementById(id)
15
-
16
- code.style.display = code.style.display != 'block' ? 'block' : 'none'
17
- return true
18
- }
19
-
20
- // Make codeblocks hidden by default
21
- document.writeln('<' + 'style type="text/css">.method .source pre { display: none }<\/style>')
22
- //]]>
23
- </script>
24
- </head>
25
- <body class='page'>
26
- <div class='class' id='wrapper'>
27
- <div class='header'>
28
- <h1 class='name'>
29
- <span class='type'>Class</span>
30
- SDL4R::Tag
31
- </h1>
32
- <ol class='paths'>
33
- <li>
34
- <a href="../../files/lib/sdl4r/tag_rb.html">lib/sdl4r/tag.rb</a>
35
- </li>
36
- </ol>
37
- <div class='parent'>
38
- Parent:
39
- <strong>Object</strong>
40
- </div>
41
- </div>
42
- <div id='content'>
43
- <div id='text'>
44
- <div id='description'>
45
- <p>
46
- SDL documents are made of Tags.
47
- </p>
48
- <p>
49
- See the <a href="../../files/README.html">README</a> for a longer
50
- explanation on SDL documents.
51
- </p>
52
- <p>
53
- Do not assume that methods returning sets (Hash, Array, etc) of
54
- children/values/attributes/etc in this class returns copies or
55
- implementations. It can be one or the other depending on the method. The
56
- implementations are designed to be correct and somewhat efficient, not too
57
- protect the <a href="Tag.html">Tag</a> internal state from ill-use of the
58
- returned values.
59
- </p>
60
- <h2>Authors</h2>
61
- <p>
62
- Daniel Leuck, Philippe Vosges
63
- </p>
64
- </div>
65
- <div id='method-list'>
66
- <h2>Methods</h2>
67
- <h3>public class</h3>
68
- <ol>
69
- <li><a href="#M000038">new</a></li>
70
- </ol>
71
- <h3>public instance</h3>
72
- <ol>
73
- <li><a href="#M000041">&lt;&lt;</a></li>
74
- <li><a href="#M000077">==</a></li>
75
- <li><a href="#M000040">add_child</a></li>
76
- <li><a href="#M000054">add_value</a></li>
77
- <li><a href="#M000061">attribute</a></li>
78
- <li><a href="#M000063">attributes</a></li>
79
- <li><a href="#M000067">attributes=</a></li>
80
- <li><a href="#M000049">child</a></li>
81
- <li><a href="#M000046">child_count</a></li>
82
- <li><a href="#M000047">children</a></li>
83
- <li><a href="#M000075">children_to_string</a></li>
84
- <li><a href="#M000048">children_values</a></li>
85
- <li><a href="#M000065">clear_attributes</a></li>
86
- <li><a href="#M000043">clear_children</a></li>
87
- <li><a href="#M000057">clear_values</a></li>
88
- <li><a href="#M000076">eql?</a></li>
89
- <li><a href="#M000062">has_attribute?</a></li>
90
- <li><a href="#M000050">has_child?</a></li>
91
- <li><a href="#M000051">has_children?</a></li>
92
- <li><a href="#M000055">has_value?</a></li>
93
- <li><a href="#M000078">hash</a></li>
94
- <li><a href="#M000068">name=</a></li>
95
- <li><a href="#M000069">namespace=</a></li>
96
- <li><a href="#M000039">new_child</a></li>
97
- <li><a href="#M000070">read</a></li>
98
- <li><a href="#M000071">read_from_io</a></li>
99
- <li><a href="#M000064">remove_attribute</a></li>
100
- <li><a href="#M000042">remove_child</a></li>
101
- <li><a href="#M000056">remove_value</a></li>
102
- <li><a href="#M000060">set_attribute</a></li>
103
- <li><a href="#M000066">set_attributes</a></li>
104
- <li><a href="#M000052">to_child_hash</a></li>
105
- <li><a href="#M000053">to_child_string_hash</a></li>
106
- <li><a href="#M000073">to_s</a></li>
107
- <li><a href="#M000074">to_string</a></li>
108
- <li><a href="#M000079">to_xml_string</a></li>
109
- <li><a href="#M000045">value</a></li>
110
- <li><a href="#M000044">value=</a></li>
111
- <li><a href="#M000058">values</a></li>
112
- <li><a href="#M000059">values=</a></li>
113
- <li><a href="#M000072">write</a></li>
114
- </ol>
115
- <h3>protected instance</h3>
116
- <ol>
117
- <li><a href="#M000080">_to_xml_string</a></li>
118
- </ol>
119
- </div>
120
- <div id='section'>
121
- <div id='attribute-list'>
122
- <h2 class='section-bar'>Attributes</h2>
123
- <div class='name-list'>
124
- <table>
125
- <tr class='top-aligned-row context-row'>
126
- <td class='context-item-name'>name</td>
127
- <td class='context-item-value'>[R]</td>
128
- <td class='context-item-desc'>
129
-
130
- the name of this <a href="Tag.html">Tag</a>
131
- </td>
132
- </tr>
133
- <tr class='top-aligned-row context-row'>
134
- <td class='context-item-name'>namespace</td>
135
- <td class='context-item-value'>[R]</td>
136
- <td class='context-item-desc'>
137
-
138
- the namespace of this <a href="Tag.html">Tag</a> or an empty string when
139
- there is no namespace (i.e. default namespace).
140
- </td>
141
- </tr>
142
- </table>
143
- </div>
144
- </div>
145
- <div id='methods'>
146
- <h2>Public class methods</h2>
147
- <div class='method public-class' id='method-M000038'>
148
- <a name='M000038'></a>
149
- <div class='synopsis'>
150
- <span class='name'>new</span>
151
- <span class='arguments'>(namespace, name = nil, &amp;block)</span>
152
- </div>
153
- <div class='description'>
154
- <p>
155
- Creates an empty tag in the given namespace. If the <tt>namespace</tt> is
156
- nil it will be coerced to an empty String.
157
- </p>
158
- <pre>tag = Tag.new(&quot;name&quot;)&#x000A;tag = Tag.new(&quot;namespace&quot;, &quot;name&quot;)&#x000A;&#x000A;tag = Tag.new(&quot;fruit&quot;) do&#x000A; add_value 2&#x000A; new_child(&quot;orange&quot;) do&#x000A; set_attribute(&quot;quantity&quot;, 2)&#x000A; end&#x000A;end</pre>
159
- <p>
160
- which builds the following SDL structure
161
- </p>
162
- <pre>fruit 2 {&#x000A; orange quantity=2&#x000A;}</pre>
163
- <p>
164
- If you provide a block that takes an argument, you will write the same
165
- example, as follows:
166
- </p>
167
- <pre>tag = Tag.new(&quot;fruit&quot;) do |t|&#x000A; t.add_value 2&#x000A; t.new_child(&quot;orange&quot;) do&#x000A; set_attribute(&quot;quantity&quot;, 2)&#x000A; end&#x000A;end</pre>
168
- <p>
169
- In this case, the current context is not the new <a href="Tag.html">Tag</a>
170
- anymore but the context of your code.
171
- </p>
172
- <h3>Raises</h3>
173
- <p>
174
- ArgumentError if the name is not a legal SDL identifier (see <a
175
- href="../SDL4R.html#M000005">SDL4R#validate_identifier</a>) or the
176
- namespace is non-blank and is not a legal SDL identifier.
177
- </p>
178
- </div>
179
- <div class='source'>
180
- <a class='source-toggle' href='#' onclick="toggleCode('M000038-source'); return false">
181
- [show source]
182
- </a>
183
- <pre id='M000038-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 106</span>&#x000A;106: <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>)&#x000A;107: <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>&#x000A;108: &#x000A;109: <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>&#x000A;110: <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>&#x000A;111: &#x000A;112: <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>&#x000A;113: <span class="ruby-ivar">@namespace</span> = <span class="ruby-identifier">namespace</span>&#x000A;114: &#x000A;115: <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>&#x000A;116: <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>&#x000A;117: <span class="ruby-constant">SDL4R</span>.<span class="ruby-identifier">validate_identifier</span>(<span class="ruby-identifier">name</span>)&#x000A;118: <span class="ruby-ivar">@name</span> = <span class="ruby-identifier">name</span>&#x000A;119: &#x000A;120: <span class="ruby-ivar">@children</span> = []&#x000A;121: <span class="ruby-ivar">@values</span> = []&#x000A;122: &#x000A;123: <span class="ruby-comment cmt"># a Hash of Hash : {namespace =&gt; {name =&gt; value}}</span>&#x000A;124: <span class="ruby-comment cmt"># The default namespace is represented by an empty string.</span>&#x000A;125: <span class="ruby-ivar">@attributesByNamespace</span> = {}&#x000A;126: &#x000A;127: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>&#x000A;128: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block</span>.<span class="ruby-identifier">arity</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>&#x000A;129: <span class="ruby-identifier">block</span>[<span class="ruby-keyword kw">self</span>]&#x000A;130: <span class="ruby-keyword kw">else</span>&#x000A;131: <span class="ruby-identifier">instance_eval</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)&#x000A;132: <span class="ruby-keyword kw">end</span>&#x000A;133: <span class="ruby-keyword kw">end</span>&#x000A;134: <span class="ruby-keyword kw">end</span></pre>
184
- </div>
185
- </div>
186
- <h2>Public instance methods</h2>
187
- <div class='method public-instance' id='method-M000041'>
188
- <a name='M000041'></a>
189
- <div class='synopsis'>
190
- <span class='name'>&lt;&lt;</span>
191
- <span class='arguments'>(o)</span>
192
- </div>
193
- <div class='description'>
194
- <p>
195
- Adds the given object as a child if it is a <tt>Tag</tt>, as an attribute
196
- if it is a Hash {key => value} (supports namespaces), or as a value
197
- otherwise. If it is an Enumerable (e.g. Array), each of its elements is
198
- added to this <a href="Tag.html">Tag</a> via this operator. If any of its
199
- elements is itself an Enumerable, then an anonymous tag is created and the
200
- Enumerable is passed to it via this operator (see the examples below).
201
- </p>
202
- <pre>tag &lt;&lt; Tag.new(&quot;child&quot;)&#x000A;tag &lt;&lt; 123 # new integer value&#x000A;tag &lt;&lt; &quot;islamabad&quot; # new string value&#x000A;tag &lt;&lt; { &quot;metric:length&quot; =&gt; 1027 } # new attribute (with namespace)&#x000A;tag &lt;&lt; [nil, 456, &quot;abc&quot;] # several values added&#x000A;&#x000A;tag = Tag.new(&quot;tag&quot;)&#x000A;tag &lt;&lt; [[1, 2, 3], [4, 5, 6]] # tag {&#x000A; # 1 2 3&#x000A; # 4 5 6&#x000A; # }</pre>
203
- <p>
204
- Of course, despite the fact that String is an Enumerable, it is considered
205
- as the type of values.
206
- </p>
207
- <p>
208
- Returns <tt>self</tt>.
209
- </p>
210
- <p>
211
- Use other accessors (<a href="Tag.html#M000040">add_child</a>, <a
212
- href="Tag.html#M000054">add_value</a>, <a
213
- href="Tag.html#M000063">attributes</a>, etc) for a stricter and less
214
- &#8220;magical&#8221; behavior.
215
- </p>
216
- </div>
217
- <div class='source'>
218
- <a class='source-toggle' href='#' onclick="toggleCode('M000041-source'); return false">
219
- [show source]
220
- </a>
221
- <pre id='M000041-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 198</span>&#x000A;198: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">&lt;&lt;</span>(<span class="ruby-identifier">o</span>)&#x000A;199: <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>)&#x000A;200: <span class="ruby-identifier">add_child</span>(<span class="ruby-identifier">o</span>)&#x000A;201: <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>)&#x000A;202: <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>&#x000A;203: <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>)&#x000A;204: <span class="ruby-identifier">namespace</span> <span class="ruby-operator">||=</span> <span class="ruby-value str">&quot;&quot;</span>&#x000A;205: <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>)&#x000A;206: }&#x000A;207: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">String</span>&#x000A;208: <span class="ruby-identifier">add_value</span>(<span class="ruby-identifier">o</span>)&#x000A;209: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">Enumerable</span>&#x000A;210: <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>&#x000A;211: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">item</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">Enumerable</span> <span class="ruby-keyword kw">and</span> <span class="ruby-keyword kw">not</span> <span class="ruby-identifier">item</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">String</span>&#x000A;212: <span class="ruby-identifier">anonymous</span> = <span class="ruby-identifier">new_child</span>(<span class="ruby-constant">ANONYMOUS_TAG_NAME</span>)&#x000A;213: <span class="ruby-identifier">anonymous</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">item</span>&#x000A;214: <span class="ruby-keyword kw">else</span>&#x000A;215: <span class="ruby-keyword kw">self</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">item</span>&#x000A;216: <span class="ruby-keyword kw">end</span>&#x000A;217: }&#x000A;218: <span class="ruby-keyword kw">else</span>&#x000A;219: <span class="ruby-identifier">add_value</span>(<span class="ruby-identifier">o</span>)&#x000A;220: <span class="ruby-keyword kw">end</span>&#x000A;221: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">self</span>&#x000A;222: <span class="ruby-keyword kw">end</span></pre>
222
- </div>
223
- </div>
224
- <div class='method public-instance' id='method-M000077'>
225
- <a name='M000077'></a>
226
- <div class='synopsis'>
227
- <span class='name'>==</span>
228
- <span class='arguments'>(o)</span>
229
- </div>
230
- <div class='description'>
231
- <p>
232
- Alias for <a href="Tag.html#M000076">eql?</a>
233
- </p>
234
- </div>
235
- </div>
236
- <div class='method public-instance' id='method-M000040'>
237
- <a name='M000040'></a>
238
- <div class='synopsis'>
239
- <span class='name'>add_child</span>
240
- <span class='arguments'>(child)</span>
241
- </div>
242
- <div class='description'>
243
- <p>
244
- Add a child to this <a href="Tag.html">Tag</a>.
245
- </p>
246
- <table>
247
- <tr><td valign="top"><em>child</em>:</td><td>The child to add
248
-
249
- </td></tr>
250
- </table>
251
- <p>
252
- Returns the added child.
253
- </p>
254
- </div>
255
- <div class='source'>
256
- <a class='source-toggle' href='#' onclick="toggleCode('M000040-source'); return false">
257
- [show source]
258
- </a>
259
- <pre id='M000040-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 167</span>&#x000A;167: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_child</span>(<span class="ruby-identifier">child</span>)&#x000A;168: <span class="ruby-ivar">@children</span>.<span class="ruby-identifier">push</span>(<span class="ruby-identifier">child</span>)&#x000A;169: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">child</span>&#x000A;170: <span class="ruby-keyword kw">end</span></pre>
260
- </div>
261
- </div>
262
- <div class='method public-instance' id='method-M000054'>
263
- <a name='M000054'></a>
264
- <div class='synopsis'>
265
- <span class='name'>add_value</span>
266
- <span class='arguments'>(v)</span>
267
- </div>
268
- <div class='description'>
269
- <p>
270
- Adds a value to this <a href="Tag.html">Tag</a>. See <a
271
- href="../SDL4R.html#M000004">SDL4R#coerce_or_fail</a> to know about the
272
- allowable types.
273
- </p>
274
- <table>
275
- <tr><td valign="top"><em>v</em>:</td><td>The value to add
276
-
277
- </td></tr>
278
- </table>
279
- <p>
280
- Raises an <tt>ArgumentError</tt> if the value is not a legal SDL type
281
- </p>
282
- </div>
283
- <div class='source'>
284
- <a class='source-toggle' href='#' onclick="toggleCode('M000054-source'); return false">
285
- [show source]
286
- </a>
287
- <pre id='M000054-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 440</span>&#x000A;440: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_value</span>(<span class="ruby-identifier">v</span>)&#x000A;441: <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>))&#x000A;442: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>&#x000A;443: <span class="ruby-keyword kw">end</span></pre>
288
- </div>
289
- </div>
290
- <div class='method public-instance' id='method-M000061'>
291
- <a name='M000061'></a>
292
- <div class='synopsis'>
293
- <span class='name'>attribute</span>
294
- <span class='arguments'>(namespace, key = nil)</span>
295
- </div>
296
- <div class='description'>
297
- <pre>attribute(key)&#x000A;attribute(namespace, key)</pre>
298
- <p>
299
- Returns the attribute of the specified <tt>namespace</tt> of specified
300
- <tt>key</tt> or <tt>nil</tt> if not found.
301
- </p>
302
- </div>
303
- <div class='source'>
304
- <a class='source-toggle' href='#' onclick="toggleCode('M000061-source'); return false">
305
- [show source]
306
- </a>
307
- <pre id='M000061-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 546</span>&#x000A;546: <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>)&#x000A;547: <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>&#x000A;548: <span class="ruby-identifier">attributes</span> = <span class="ruby-ivar">@attributesByNamespace</span>[<span class="ruby-identifier">namespace</span>]&#x000A;549: <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>]&#x000A;550: <span class="ruby-keyword kw">end</span></pre>
308
- </div>
309
- </div>
310
- <div class='method public-instance' id='method-M000063'>
311
- <a name='M000063'></a>
312
- <div class='synopsis'>
313
- <span class='name'>attributes</span>
314
- <span class='arguments'>(namespace = nil) {|namespace, key, value| ...}</span>
315
- </div>
316
- <div class='description'>
317
- <p>
318
- Returns a Hash of the attributes of the specified <tt>namespace</tt>
319
- (default is all) or enumerates them.
320
- </p>
321
- <pre>tag.attributes # =&gt; { &quot;length&quot; =&gt; 123, &quot;width&quot; = 25.4, &quot;orig:color&quot; =&gt; &quot;gray&quot; }&#x000A;tag.attributes(&quot;orig&quot;) do |namespace, key, value|&#x000A; p &quot;#{namespace}:#{key} = #{value}&quot;&#x000A;end</pre>
322
- <p>
323
- <em>namespace</em>:: namespace of the returned attributes. If nil, all
324
- attributes are returned with qualified names (e.g.
325
- &#8220;meat:color&#8221;). If &#8220;&#8221;, attributes of the default
326
- namespace are returned.
327
- </p>
328
- </div>
329
- <div class='source'>
330
- <a class='source-toggle' href='#' onclick="toggleCode('M000063-source'); return false">
331
- [show source]
332
- </a>
333
- <pre id='M000063-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 584</span>&#x000A;584: <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>&#x000A;585: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>&#x000A;586: <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>)&#x000A;587: &#x000A;588: <span class="ruby-keyword kw">else</span>&#x000A;589: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">namespace</span>.<span class="ruby-identifier">nil?</span>&#x000A;590: <span class="ruby-identifier">hash</span> = {}&#x000A;591: &#x000A;592: <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>&#x000A;593: <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>&#x000A;594: <span class="ruby-identifier">hash</span>[<span class="ruby-identifier">qualified_name</span>] = <span class="ruby-identifier">value</span>&#x000A;595: <span class="ruby-keyword kw">end</span>&#x000A;596: &#x000A;597: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">hash</span>&#x000A;598: &#x000A;599: <span class="ruby-keyword kw">else</span>&#x000A;600: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@attributesByNamespace</span>[<span class="ruby-identifier">namespace</span>]&#x000A;601: <span class="ruby-keyword kw">end</span>&#x000A;602: <span class="ruby-keyword kw">end</span>&#x000A;603: <span class="ruby-keyword kw">end</span></pre>
334
- </div>
335
- </div>
336
- <div class='method public-instance' id='method-M000067'>
337
- <a name='M000067'></a>
338
- <div class='synopsis'>
339
- <span class='name'>attributes=</span>
340
- <span class='arguments'>(attribute_hash)</span>
341
- </div>
342
- <div class='description'>
343
- <p>
344
- Sets all the attributes of the default namespace for this <a
345
- href="Tag.html">Tag</a> in one operation.
346
- </p>
347
- <p>
348
- See <a href="Tag.html#M000066">set_attributes</a>.
349
- </p>
350
- </div>
351
- <div class='source'>
352
- <a class='source-toggle' href='#' onclick="toggleCode('M000067-source'); return false">
353
- [show source]
354
- </a>
355
- <pre id='M000067-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 687</span>&#x000A;687: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">attributes=</span>(<span class="ruby-identifier">attribute_hash</span>)&#x000A;688: <span class="ruby-identifier">set_attributes</span>(<span class="ruby-identifier">attribute_hash</span>)&#x000A;689: <span class="ruby-keyword kw">end</span></pre>
356
- </div>
357
- </div>
358
- <div class='method public-instance' id='method-M000049'>
359
- <a name='M000049'></a>
360
- <div class='synopsis'>
361
- <span class='name'>child</span>
362
- <span class='arguments'>(recursive = false, name = nil)</span>
363
- </div>
364
- <div class='description'>
365
- <pre>child&#x000A;child(name)&#x000A;child(recursive, name)</pre>
366
- <p>
367
- Get the first child with the given name, optionally using a recursive
368
- search.
369
- </p>
370
- <table>
371
- <tr><td valign="top"><em>name</em>:</td><td>the name of the child <a href="Tag.html">Tag</a>. If <tt>nil</tt>, the
372
- first child is returned (<tt>nil</tt> if there are
373
-
374
- </td></tr>
375
- </table>
376
- <p>
377
- no children at all).
378
- </p>
379
- <p>
380
- Returns the first child tag having the given name or <tt>nil</tt> if no
381
- such child exists
382
- </p>
383
- </div>
384
- <div class='source'>
385
- <a class='source-toggle' href='#' onclick="toggleCode('M000049-source'); return false">
386
- [show source]
387
- </a>
388
- <pre id='M000049-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 344</span>&#x000A;344: <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>)&#x000A;345: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">nil?</span>&#x000A;346: <span class="ruby-identifier">name</span> = <span class="ruby-identifier">recursive</span>&#x000A;347: <span class="ruby-identifier">recursive</span> = <span class="ruby-keyword kw">false</span>&#x000A;348: <span class="ruby-keyword kw">end</span>&#x000A;349: &#x000A;350: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">name</span>&#x000A;351: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@children</span>.<span class="ruby-identifier">first</span>&#x000A;352: <span class="ruby-keyword kw">else</span>&#x000A;353: <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> }&#x000A;354: <span class="ruby-keyword kw">end</span>&#x000A;355: <span class="ruby-keyword kw">end</span></pre>
389
- </div>
390
- </div>
391
- <div class='method public-instance' id='method-M000046'>
392
- <a name='M000046'></a>
393
- <div class='synopsis'>
394
- <span class='name'>child_count</span>
395
- <span class='arguments'>()</span>
396
- </div>
397
- <div class='description'>
398
- <p>
399
- Returns the number of children <a href="Tag.html">Tag</a>.
400
- </p>
401
- </div>
402
- <div class='source'>
403
- <a class='source-toggle' href='#' onclick="toggleCode('M000046-source'); return false">
404
- [show source]
405
- </a>
406
- <pre id='M000046-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 265</span>&#x000A;265: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">child_count</span>&#x000A;266: <span class="ruby-ivar">@children</span>.<span class="ruby-identifier">size</span>&#x000A;267: <span class="ruby-keyword kw">end</span></pre>
407
- </div>
408
- </div>
409
- <div class='method public-instance' id='method-M000047'>
410
- <a name='M000047'></a>
411
- <div class='synopsis'>
412
- <span class='name'>children</span>
413
- <span class='arguments'>(recursive = false, namespace = nil, name = :DEFAULT) {|child| ...}</span>
414
- </div>
415
- <div class='description'>
416
- <pre>children(recursive)&#x000A;children(recursive, name)&#x000A;children(recursive, namespace, name)&#x000A;&#x000A;children(recursive) { |child| ... }&#x000A;children(recursive, name) { |child| ... }&#x000A;children(recursive, namespace, name) { |child| ... }</pre>
417
- <p>
418
- Returns an Array of the children Tags of this <a href="Tag.html">Tag</a> or
419
- enumerates them.
420
- </p>
421
- <table>
422
- <tr><td valign="top"><em>recursive</em>:</td><td>if true children and all descendants will be returned. False by default.
423
-
424
- </td></tr>
425
- <tr><td valign="top"><em>name</em>:</td><td>if not nil, only children having this name will be returned. Nil by
426
- default.
427
-
428
- </td></tr>
429
- <tr><td valign="top"><em>namespace</em>:</td><td>use nil for all namespaces and &#8220;&#8221; for the default one. Nil by
430
- default.
431
-
432
- </td></tr>
433
- </table>
434
- <pre>tag.children # =&gt; array of the children&#x000A;tag.children(true) { |descendant| ... }&#x000A;&#x000A;tag.children(false, &quot;name&quot;) # =&gt; children of name &quot;name&quot;&#x000A;tag.children(false, &quot;ns&quot;, nil) # =&gt; children of namespace &quot;ns&quot;</pre>
435
- </div>
436
- <div class='source'>
437
- <a class='source-toggle' href='#' onclick="toggleCode('M000047-source'); return false">
438
- [show source]
439
- </a>
440
- <pre id='M000047-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 289</span>&#x000A;289: <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>&#x000A;290: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:DEFAULT</span>&#x000A;291: <span class="ruby-identifier">name</span> = <span class="ruby-identifier">namespace</span>&#x000A;292: <span class="ruby-identifier">namespace</span> = <span class="ruby-keyword kw">nil</span>&#x000A;293: <span class="ruby-keyword kw">end</span>&#x000A;294: &#x000A;295: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>&#x000A;296: <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>)&#x000A;297: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>&#x000A;298: &#x000A;299: <span class="ruby-keyword kw">else</span>&#x000A;300: <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>&#x000A;301: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@children</span>&#x000A;302: &#x000A;303: <span class="ruby-keyword kw">else</span>&#x000A;304: <span class="ruby-identifier">result</span> = []&#x000A;305: <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>&#x000A;306: <span class="ruby-identifier">result</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">child</span>&#x000A;307: }&#x000A;308: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">result</span>&#x000A;309: <span class="ruby-keyword kw">end</span>&#x000A;310: <span class="ruby-keyword kw">end</span>&#x000A;311: <span class="ruby-keyword kw">end</span></pre>
441
- </div>
442
- </div>
443
- <div class='method public-instance' id='method-M000075'>
444
- <a name='M000075'></a>
445
- <div class='synopsis'>
446
- <span class='name'>children_to_string</span>
447
- <span class='arguments'>(line_prefix = &quot;&quot;, s = &quot;&quot;)</span>
448
- </div>
449
- <div class='description'>
450
- <p>
451
- Returns a string representation of the children tags.
452
- </p>
453
- <table>
454
- <tr><td valign="top"><em>linePrefix</em>:</td><td>A prefix to insert before every line.
455
-
456
- </td></tr>
457
- <tr><td valign="top"><em>s</em>:</td><td>a String that receives the string representation
458
-
459
- </td></tr>
460
- </table>
461
- <p>
462
- TODO: break up long lines using the backslash
463
- </p>
464
- </div>
465
- <div class='source'>
466
- <a class='source-toggle' href='#' onclick="toggleCode('M000075-source'); return false">
467
- [show source]
468
- </a>
469
- <pre id='M000075-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 861</span>&#x000A;861: <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>)&#x000A;862: <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>&#x000A;863: <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>&#x000A;864: <span class="ruby-keyword kw">end</span>&#x000A;865: &#x000A;866: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">s</span>&#x000A;867: <span class="ruby-keyword kw">end</span></pre>
470
- </div>
471
- </div>
472
- <div class='method public-instance' id='method-M000048'>
473
- <a name='M000048'></a>
474
- <div class='synopsis'>
475
- <span class='name'>children_values</span>
476
- <span class='arguments'>(name = nil)</span>
477
- </div>
478
- <div class='description'>
479
- <p>
480
- Returns the values of all the children with the given <tt>name</tt>. If the
481
- child has more than one value, all the values will be added as an array. If
482
- the child has no value, <tt>nil</tt> will be added. The search is not
483
- recursive.
484
- </p>
485
- <table>
486
- <tr><td valign="top"><em>name</em>:</td><td>if nil, all children are considered (nil by default).
487
-
488
- </td></tr>
489
- </table>
490
- </div>
491
- <div class='source'>
492
- <a class='source-toggle' href='#' onclick="toggleCode('M000048-source'); return false">
493
- [show source]
494
- </a>
495
- <pre id='M000048-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 318</span>&#x000A;318: <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>)&#x000A;319: <span class="ruby-identifier">children_values</span> = []&#x000A;320: <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>&#x000A;321: <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>&#x000A;322: <span class="ruby-keyword kw">when</span> <span class="ruby-value">0</span>&#x000A;323: <span class="ruby-identifier">children_values</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword kw">nil</span>&#x000A;324: <span class="ruby-keyword kw">when</span> <span class="ruby-value">1</span>&#x000A;325: <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>&#x000A;326: <span class="ruby-keyword kw">else</span>&#x000A;327: <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>&#x000A;328: <span class="ruby-keyword kw">end</span>&#x000A;329: }&#x000A;330: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">children_values</span>&#x000A;331: <span class="ruby-keyword kw">end</span></pre>
496
- </div>
497
- </div>
498
- <div class='method public-instance' id='method-M000065'>
499
- <a name='M000065'></a>
500
- <div class='synopsis'>
501
- <span class='name'>clear_attributes</span>
502
- <span class='arguments'>(namespace = nil)</span>
503
- </div>
504
- <div class='description'>
505
- <p>
506
- Clears the attributes of the specified namespace or all the attributes if
507
- <tt>namespace</tt> is <tt>nil</tt>.
508
- </p>
509
- </div>
510
- <div class='source'>
511
- <a class='source-toggle' href='#' onclick="toggleCode('M000065-source'); return false">
512
- [show source]
513
- </a>
514
- <pre id='M000065-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 624</span>&#x000A;624: <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>)&#x000A;625: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">namespace</span>.<span class="ruby-identifier">nil?</span>&#x000A;626: <span class="ruby-ivar">@attributesByNamespace</span>.<span class="ruby-identifier">clear</span>&#x000A;627: <span class="ruby-keyword kw">else</span>&#x000A;628: <span class="ruby-ivar">@attributesByNamespace</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">namespace</span>)&#x000A;629: <span class="ruby-keyword kw">end</span>&#x000A;630: <span class="ruby-keyword kw">end</span></pre>
515
- </div>
516
- </div>
517
- <div class='method public-instance' id='method-M000043'>
518
- <a name='M000043'></a>
519
- <div class='synopsis'>
520
- <span class='name'>clear_children</span>
521
- <span class='arguments'>()</span>
522
- </div>
523
- <div class='description'>
524
- <p>
525
- Removes all children.
526
- </p>
527
- </div>
528
- <div class='source'>
529
- <a class='source-toggle' href='#' onclick="toggleCode('M000043-source'); return false">
530
- [show source]
531
- </a>
532
- <pre id='M000043-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 236</span>&#x000A;236: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">clear_children</span>&#x000A;237: <span class="ruby-ivar">@children</span> = []&#x000A;238: <span class="ruby-keyword kw">nil</span>&#x000A;239: <span class="ruby-keyword kw">end</span></pre>
533
- </div>
534
- </div>
535
- <div class='method public-instance' id='method-M000057'>
536
- <a name='M000057'></a>
537
- <div class='synopsis'>
538
- <span class='name'>clear_values</span>
539
- <span class='arguments'>()</span>
540
- </div>
541
- <div class='description'>
542
- <p>
543
- Removes all values.
544
- </p>
545
- </div>
546
- <div class='source'>
547
- <a class='source-toggle' href='#' onclick="toggleCode('M000057-source'); return false">
548
- [show source]
549
- </a>
550
- <pre id='M000057-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 468</span>&#x000A;468: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">clear_values</span>&#x000A;469: <span class="ruby-ivar">@values</span> = []&#x000A;470: <span class="ruby-keyword kw">nil</span>&#x000A;471: <span class="ruby-keyword kw">end</span></pre>
551
- </div>
552
- </div>
553
- <div class='method public-instance' id='method-M000076'>
554
- <a name='M000076'></a>
555
- <div class='synopsis'>
556
- <span class='name'>eql?</span>
557
- <span class='arguments'>(o)</span>
558
- </div>
559
- <div class='description'>
560
- <p>
561
- Returns true if this tag (including all of its values, attributes, and
562
- children) is equivalent to the given tag.
563
- </p>
564
- <p>
565
- Returns true if the tags are equivalet
566
- </p>
567
- </div>
568
- <div class='source'>
569
- <a class='source-toggle' href='#' onclick="toggleCode('M000076-source'); return false">
570
- [show source]
571
- </a>
572
- <pre id='M000076-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 874</span>&#x000A;874: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">eql?</span>(<span class="ruby-identifier">o</span>)&#x000A;875: <span class="ruby-comment cmt"># this is safe because to_string() dumps the full state</span>&#x000A;876: <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>;&#x000A;877: <span class="ruby-keyword kw">end</span></pre>
573
- </div>
574
- </div>
575
- <div class='method public-instance' id='method-M000062'>
576
- <a name='M000062'></a>
577
- <div class='synopsis'>
578
- <span class='name'>has_attribute?</span>
579
- <span class='arguments'>(namespace = nil, key = nil)</span>
580
- </div>
581
- <div class='description'>
582
- <p>
583
- Indicates whether there is at least an attribute in this <a
584
- href="Tag.html">Tag</a>.
585
- </p>
586
- <pre>has_attribute?</pre>
587
- <p>
588
- Indicates whether there is the specified attribute exists in this <a
589
- href="Tag.html">Tag</a>.
590
- </p>
591
- <pre>has_attribute?(key)&#x000A;has_attribute?(namespace, key)</pre>
592
- </div>
593
- <div class='source'>
594
- <a class='source-toggle' href='#' onclick="toggleCode('M000062-source'); return false">
595
- [show source]
596
- </a>
597
- <pre id='M000062-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 559</span>&#x000A;559: <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>)&#x000A;560: <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>&#x000A;561: &#x000A;562: <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>&#x000A;563: <span class="ruby-identifier">attributes</span> = <span class="ruby-ivar">@attributesByNamespace</span>[<span class="ruby-identifier">namespace</span>]&#x000A;564: <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>)&#x000A;565: &#x000A;566: <span class="ruby-keyword kw">else</span>&#x000A;567: <span class="ruby-identifier">attributes</span> { <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> }&#x000A;568: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>&#x000A;569: <span class="ruby-keyword kw">end</span>&#x000A;570: <span class="ruby-keyword kw">end</span></pre>
598
- </div>
599
- </div>
600
- <div class='method public-instance' id='method-M000050'>
601
- <a name='M000050'></a>
602
- <div class='synopsis'>
603
- <span class='name'>has_child?</span>
604
- <span class='arguments'>(name)</span>
605
- </div>
606
- <div class='description'>
607
- <p>
608
- Indicates whether the child <a href="Tag.html">Tag</a> of given name
609
- exists.
610
- </p>
611
- <table>
612
- <tr><td valign="top"><em>name</em>:</td><td>name of the searched child <a href="Tag.html">Tag</a>
613
-
614
- </td></tr>
615
- </table>
616
- </div>
617
- <div class='source'>
618
- <a class='source-toggle' href='#' onclick="toggleCode('M000050-source'); return false">
619
- [show source]
620
- </a>
621
- <pre id='M000050-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 361</span>&#x000A;361: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">has_child?</span>(<span class="ruby-identifier">name</span>)&#x000A;362: <span class="ruby-operator">!</span><span class="ruby-identifier">child</span>(<span class="ruby-identifier">name</span>).<span class="ruby-identifier">nil?</span>&#x000A;363: <span class="ruby-keyword kw">end</span></pre>
622
- </div>
623
- </div>
624
- <div class='method public-instance' id='method-M000051'>
625
- <a name='M000051'></a>
626
- <div class='synopsis'>
627
- <span class='name'>has_children?</span>
628
- <span class='arguments'>()</span>
629
- </div>
630
- <div class='description'>
631
- <p>
632
- Indicates whether there are children <a href="Tag.html">Tag</a>.
633
- </p>
634
- </div>
635
- <div class='source'>
636
- <a class='source-toggle' href='#' onclick="toggleCode('M000051-source'); return false">
637
- [show source]
638
- </a>
639
- <pre id='M000051-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 367</span>&#x000A;367: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">has_children?</span>&#x000A;368: <span class="ruby-operator">!</span><span class="ruby-ivar">@children</span>.<span class="ruby-identifier">empty?</span>&#x000A;369: <span class="ruby-keyword kw">end</span></pre>
640
- </div>
641
- </div>
642
- <div class='method public-instance' id='method-M000055'>
643
- <a name='M000055'></a>
644
- <div class='synopsis'>
645
- <span class='name'>has_value?</span>
646
- <span class='arguments'>(v)</span>
647
- </div>
648
- <div class='description'>
649
- <p>
650
- Returns true if <tt>v</tt> is a value of this Tag&#8217;s.
651
- </p>
652
- </div>
653
- <div class='source'>
654
- <a class='source-toggle' href='#' onclick="toggleCode('M000055-source'); return false">
655
- [show source]
656
- </a>
657
- <pre id='M000055-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 447</span>&#x000A;447: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">has_value?</span>(<span class="ruby-identifier">v</span>)&#x000A;448: <span class="ruby-ivar">@values</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">v</span>)&#x000A;449: <span class="ruby-keyword kw">end</span></pre>
658
- </div>
659
- </div>
660
- <div class='method public-instance' id='method-M000078'>
661
- <a name='M000078'></a>
662
- <div class='synopsis'>
663
- <span class='name'>hash</span>
664
- <span class='arguments'>()</span>
665
- </div>
666
- <div class='description'>
667
- <p>
668
- Returns The hash (based on the output from toString())
669
- </p>
670
- </div>
671
- <div class='source'>
672
- <a class='source-toggle' href='#' onclick="toggleCode('M000078-source'); return false">
673
- [show source]
674
- </a>
675
- <pre id='M000078-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 882</span>&#x000A;882: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">hash</span>&#x000A;883: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">to_string</span>.<span class="ruby-identifier">hash</span>&#x000A;884: <span class="ruby-keyword kw">end</span></pre>
676
- </div>
677
- </div>
678
- <div class='method public-instance' id='method-M000068'>
679
- <a name='M000068'></a>
680
- <div class='synopsis'>
681
- <span class='name'>name=</span>
682
- <span class='arguments'>(a_name)</span>
683
- </div>
684
- <div class='description'>
685
- <p>
686
- Sets the name of this <a href="Tag.html">Tag</a>.
687
- </p>
688
- <p>
689
- Raises <tt>ArgumentError</tt> if the name is not a legal SDL identifier
690
- (see <a href="../SDL4R.html#M000005">SDL4R#validate_identifier</a>).
691
- </p>
692
- </div>
693
- <div class='source'>
694
- <a class='source-toggle' href='#' onclick="toggleCode('M000068-source'); return false">
695
- [show source]
696
- </a>
697
- <pre id='M000068-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 696</span>&#x000A;696: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">name=</span>(<span class="ruby-identifier">a_name</span>)&#x000A;697: <span class="ruby-identifier">a_name</span> = <span class="ruby-identifier">a_name</span>.<span class="ruby-identifier">to_s</span>&#x000A;698: <span class="ruby-constant">SDL4R</span>.<span class="ruby-identifier">validate_identifier</span>(<span class="ruby-identifier">a_name</span>)&#x000A;699: <span class="ruby-ivar">@name</span> = <span class="ruby-identifier">a_name</span>&#x000A;700: <span class="ruby-keyword kw">end</span></pre>
698
- </div>
699
- </div>
700
- <div class='method public-instance' id='method-M000069'>
701
- <a name='M000069'></a>
702
- <div class='synopsis'>
703
- <span class='name'>namespace=</span>
704
- <span class='arguments'>(a_namespace)</span>
705
- </div>
706
- <div class='description'>
707
- <p>
708
- The namespace to set. <tt>nil</tt> will be coerced to the empty string.
709
- </p>
710
- <p>
711
- Raises <tt>ArgumentError</tt> if the namespace is non-blank and is not a
712
- legal SDL identifier (see <a
713
- href="../SDL4R.html#M000005">SDL4R#validate_identifier</a>)
714
- </p>
715
- </div>
716
- <div class='source'>
717
- <a class='source-toggle' href='#' onclick="toggleCode('M000069-source'); return false">
718
- [show source]
719
- </a>
720
- <pre id='M000069-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 707</span>&#x000A;707: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">namespace=</span>(<span class="ruby-identifier">a_namespace</span>)&#x000A;708: <span class="ruby-identifier">a_namespace</span> = <span class="ruby-identifier">a_namespace</span>.<span class="ruby-identifier">to_s</span>&#x000A;709: <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>&#x000A;710: <span class="ruby-ivar">@namespace</span> = <span class="ruby-identifier">a_namespace</span>&#x000A;711: <span class="ruby-keyword kw">end</span></pre>
721
- </div>
722
- </div>
723
- <div class='method public-instance' id='method-M000039'>
724
- <a name='M000039'></a>
725
- <div class='synopsis'>
726
- <span class='name'>new_child</span>
727
- <span class='arguments'>(*args, &amp;block)</span>
728
- </div>
729
- <div class='description'>
730
- <p>
731
- Creates a new child tag. Can take a block so that you can write something
732
- like:
733
- </p>
734
- <pre>car = Tag.new(&quot;car&quot;) do&#x000A; new_child(&quot;wheels&quot;) do&#x000A; self &lt;&lt; 4&#x000A; end&#x000A;end</pre>
735
- <p>
736
- The context of execution of the given block is the child instance. If you
737
- provide a block that takes a parameter (see below), the context is the
738
- context of your code:
739
- </p>
740
- <pre>car = Tag.new(&quot;car&quot;) do |child|&#x000A; child.new_child(&quot;wheels&quot;) do |grandchild|&#x000A; grandchild &lt;&lt; 4&#x000A; end&#x000A;end</pre>
741
- <p>
742
- Returns the created child <a href="Tag.html">Tag</a>.
743
- </p>
744
- </div>
745
- <div class='source'>
746
- <a class='source-toggle' href='#' onclick="toggleCode('M000039-source'); return false">
747
- [show source]
748
- </a>
749
- <pre id='M000039-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 157</span>&#x000A;157: <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>)&#x000A;158: <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>)&#x000A;159: <span class="ruby-keyword kw">end</span></pre>
750
- </div>
751
- </div>
752
- <div class='method public-instance' id='method-M000070'>
753
- <a name='M000070'></a>
754
- <div class='synopsis'>
755
- <span class='name'>read</span>
756
- <span class='arguments'>(input)</span>
757
- </div>
758
- <div class='description'>
759
- <p>
760
- Adds all the tags specified in the given IO, String, Pathname or URI to
761
- this <a href="Tag.html">Tag</a>.
762
- </p>
763
- <p>
764
- Returns this <a href="Tag.html">Tag</a> after adding all the children read
765
- from <tt>input</tt>.
766
- </p>
767
- </div>
768
- <div class='source'>
769
- <a class='source-toggle' href='#' onclick="toggleCode('M000070-source'); return false">
770
- [show source]
771
- </a>
772
- <pre id='M000070-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 717</span>&#x000A;717: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read</span>(<span class="ruby-identifier">input</span>)&#x000A;718: <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>&#x000A;719: <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>) }&#x000A;720: &#x000A;721: <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>&#x000A;722: <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:UTF-8&quot;</span>) }&#x000A;723: &#x000A;724: <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>&#x000A;725: <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> }&#x000A;726: &#x000A;727: <span class="ruby-keyword kw">else</span>&#x000A;728: <span class="ruby-identifier">read_from_io</span>(<span class="ruby-keyword kw">false</span>) { <span class="ruby-identifier">input</span> }&#x000A;729: <span class="ruby-keyword kw">end</span>&#x000A;730: &#x000A;731: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">self</span>&#x000A;732: <span class="ruby-keyword kw">end</span></pre>
773
- </div>
774
- </div>
775
- <div class='method public-instance' id='method-M000071'>
776
- <a name='M000071'></a>
777
- <div class='synopsis'>
778
- <span class='name'>read_from_io</span>
779
- <span class='arguments'>(close_io) {|| ...}</span>
780
- </div>
781
- <div class='description'>
782
- <p>
783
- Reads and parses the <tt>io</tt> returned by the specified block and closes
784
- this <tt>io</tt> if <tt>close_io</tt> is true.
785
- </p>
786
- </div>
787
- <div class='source'>
788
- <a class='source-toggle' href='#' onclick="toggleCode('M000071-source'); return false">
789
- [show source]
790
- </a>
791
- <pre id='M000071-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 736</span>&#x000A;736: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read_from_io</span>(<span class="ruby-identifier">close_io</span>)&#x000A;737: <span class="ruby-identifier">io</span> = <span class="ruby-keyword kw">yield</span>&#x000A;738: &#x000A;739: <span class="ruby-keyword kw">begin</span>&#x000A;740: <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>&#x000A;741: <span class="ruby-identifier">add_child</span>(<span class="ruby-identifier">tag</span>)&#x000A;742: <span class="ruby-keyword kw">end</span>&#x000A;743: &#x000A;744: <span class="ruby-keyword kw">ensure</span>&#x000A;745: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">close_io</span>&#x000A;746: <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>&#x000A;747: <span class="ruby-keyword kw">end</span>&#x000A;748: <span class="ruby-keyword kw">end</span>&#x000A;749: <span class="ruby-keyword kw">end</span></pre>
792
- </div>
793
- </div>
794
- <div class='method public-instance' id='method-M000064'>
795
- <a name='M000064'></a>
796
- <div class='synopsis'>
797
- <span class='name'>remove_attribute</span>
798
- <span class='arguments'>(namespace, key = nil)</span>
799
- </div>
800
- <div class='description'>
801
- <pre>remove_attribute(key)&#x000A;remove_attribute(namespace, key)</pre>
802
- <p>
803
- Removes the attribute, whose name and namespace are specified.
804
- </p>
805
- <table>
806
- <tr><td valign="top"><em>key</em>:</td><td>name of the removed atribute
807
-
808
- </td></tr>
809
- <tr><td valign="top"><em>namespace</em>:</td><td>namespace of the removed attribute (equal to &#8220;&#8221;, default
810
- namespace, by default)
811
-
812
- </td></tr>
813
- </table>
814
- <p>
815
- Returns the value of the removed attribute or <tt>nil</tt> if it
816
- didn&#8217;t exist.
817
- </p>
818
- </div>
819
- <div class='source'>
820
- <a class='source-toggle' href='#' onclick="toggleCode('M000064-source'); return false">
821
- [show source]
822
- </a>
823
- <pre id='M000064-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 615</span>&#x000A;615: <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>)&#x000A;616: <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>&#x000A;617: <span class="ruby-identifier">attributes</span> = <span class="ruby-ivar">@attributesByNamespace</span>[<span class="ruby-identifier">namespace</span>]&#x000A;618: <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>)&#x000A;619: <span class="ruby-keyword kw">end</span></pre>
824
- </div>
825
- </div>
826
- <div class='method public-instance' id='method-M000042'>
827
- <a name='M000042'></a>
828
- <div class='synopsis'>
829
- <span class='name'>remove_child</span>
830
- <span class='arguments'>(child)</span>
831
- </div>
832
- <div class='description'>
833
- <p>
834
- Remove a child from this <a href="Tag.html">Tag</a>
835
- </p>
836
- <table>
837
- <tr><td valign="top"><em>child</em>:</td><td>the child to remove
838
-
839
- </td></tr>
840
- </table>
841
- <p>
842
- Returns true if the child exists and is removed
843
- </p>
844
- </div>
845
- <div class='source'>
846
- <a class='source-toggle' href='#' onclick="toggleCode('M000042-source'); return false">
847
- [show source]
848
- </a>
849
- <pre id='M000042-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 230</span>&#x000A;230: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">remove_child</span>(<span class="ruby-identifier">child</span>)&#x000A;231: <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>&#x000A;232: <span class="ruby-keyword kw">end</span></pre>
850
- </div>
851
- </div>
852
- <div class='method public-instance' id='method-M000056'>
853
- <a name='M000056'></a>
854
- <div class='synopsis'>
855
- <span class='name'>remove_value</span>
856
- <span class='arguments'>(v)</span>
857
- </div>
858
- <div class='description'>
859
- <p>
860
- Removes the first occurence of the specified value from this <a
861
- href="Tag.html">Tag</a>.
862
- </p>
863
- <table>
864
- <tr><td valign="top"><em>v</em>:</td><td>The value to remove
865
-
866
- </td></tr>
867
- </table>
868
- <p>
869
- Returns true If the value exists and is removed
870
- </p>
871
- </div>
872
- <div class='source'>
873
- <a class='source-toggle' href='#' onclick="toggleCode('M000056-source'); return false">
874
- [show source]
875
- </a>
876
- <pre id='M000056-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 457</span>&#x000A;457: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">remove_value</span>(<span class="ruby-identifier">v</span>)&#x000A;458: <span class="ruby-identifier">index</span> = <span class="ruby-ivar">@values</span>.<span class="ruby-identifier">index</span>(<span class="ruby-identifier">v</span>)&#x000A;459: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">index</span>&#x000A;460: <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>&#x000A;461: <span class="ruby-keyword kw">else</span>&#x000A;462: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>&#x000A;463: <span class="ruby-keyword kw">end</span>&#x000A;464: <span class="ruby-keyword kw">end</span></pre>
877
- </div>
878
- </div>
879
- <div class='method public-instance' id='method-M000060'>
880
- <a name='M000060'></a>
881
- <div class='synopsis'>
882
- <span class='name'>set_attribute</span>
883
- <span class='arguments'>(namespace, key, value = :default)</span>
884
- </div>
885
- <div class='description'>
886
- <pre>set_attribute(key, value)&#x000A;set_attribute(namespace, key, value)</pre>
887
- <p>
888
- Set an attribute in the given namespace for this tag. The allowable
889
- attribute value types are the same as those allowed for <a
890
- href="Tag.html#M000054">add_value</a>.
891
- </p>
892
- <table>
893
- <tr><td valign="top"><em>namespace</em>:</td><td>The namespace for this attribute
894
-
895
- </td></tr>
896
- <tr><td valign="top"><em>key</em>:</td><td>The attribute key
897
-
898
- </td></tr>
899
- <tr><td valign="top"><em>value</em>:</td><td>The attribute value
900
-
901
- </td></tr>
902
- </table>
903
- <p>
904
- Raises <tt>ArgumentError</tt> if the key is not a legal SDL identifier (see
905
- <a href="../SDL4R.html#M000005">SDL4R#validate_identifier</a>), or the
906
- namespace is non-blank and is not a legal SDL identifier, or thevalue is
907
- not a legal SDL type
908
- </p>
909
- </div>
910
- <div class='source'>
911
- <a class='source-toggle' href='#' onclick="toggleCode('M000060-source'); return false">
912
- [show source]
913
- </a>
914
- <pre id='M000060-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 516</span>&#x000A;516: <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-identifier">:default</span>)&#x000A;517: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:default</span>&#x000A;518: <span class="ruby-identifier">value</span> = <span class="ruby-identifier">key</span>&#x000A;519: <span class="ruby-identifier">key</span> = <span class="ruby-identifier">namespace</span>&#x000A;520: <span class="ruby-identifier">namespace</span> = <span class="ruby-value str">&quot;&quot;</span>&#x000A;521: <span class="ruby-keyword kw">end</span>&#x000A;522: &#x000A;523: <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>&#x000A;524: <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>&#x000A;525: <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>&#x000A;526: &#x000A;527: <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>&#x000A;528: <span class="ruby-constant">SDL4R</span>.<span class="ruby-identifier">validate_identifier</span>(<span class="ruby-identifier">key</span>)&#x000A;529: &#x000A;530: <span class="ruby-identifier">attributes</span> = <span class="ruby-ivar">@attributesByNamespace</span>[<span class="ruby-identifier">namespace</span>]&#x000A;531: &#x000A;532: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">attributes</span>.<span class="ruby-identifier">nil?</span>&#x000A;533: <span class="ruby-identifier">attributes</span> = {}&#x000A;534: <span class="ruby-ivar">@attributesByNamespace</span>[<span class="ruby-identifier">namespace</span>] = <span class="ruby-identifier">attributes</span>&#x000A;535: <span class="ruby-keyword kw">end</span>&#x000A;536: &#x000A;537: <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>)&#x000A;538: <span class="ruby-keyword kw">end</span></pre>
915
- </div>
916
- </div>
917
- <div class='method public-instance' id='method-M000066'>
918
- <a name='M000066'></a>
919
- <div class='synopsis'>
920
- <span class='name'>set_attributes</span>
921
- <span class='arguments'>(namespace, attribute_hash = nil)</span>
922
- </div>
923
- <div class='description'>
924
- <pre>set_attributes(attribute_hash)&#x000A;set_attributes(namespace, attribute_hash)</pre>
925
- <p>
926
- Sets the attributes specified by a Hash in the given <tt>namespace</tt> in
927
- one operation. The previous attributes of the specified <tt>namespace</tt>
928
- are removed. See <a href="Tag.html#M000060">set_attribute</a> for allowable
929
- attribute value types.
930
- </p>
931
- <table>
932
- <tr><td valign="top"><em>attributes</em>:</td><td>a Hash where keys are attribute keys
933
-
934
- </td></tr>
935
- <tr><td valign="top"><em>namespace</em>:</td><td>&#8220;&#8221; (default namespace) by default
936
-
937
- </td></tr>
938
- </table>
939
- <p>
940
- Raises an <tt>ArgumentError</tt> if any key in the map is not a legal SDL
941
- identifier (see <a
942
- href="../SDL4R.html#M000005">SDL4R#validate_identifier</a>), or any value
943
- is not a legal SDL type.
944
- </p>
945
- </div>
946
- <div class='source'>
947
- <a class='source-toggle' href='#' onclick="toggleCode('M000066-source'); return false">
948
- [show source]
949
- </a>
950
- <pre id='M000066-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 664</span>&#x000A;664: <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>)&#x000A;665: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">attribute_hash</span>.<span class="ruby-identifier">nil?</span>&#x000A;666: <span class="ruby-identifier">attribute_hash</span> = <span class="ruby-identifier">namespace</span>&#x000A;667: <span class="ruby-identifier">namespace</span> = <span class="ruby-value str">&quot;&quot;</span>&#x000A;668: <span class="ruby-keyword kw">end</span>&#x000A;669: &#x000A;670: <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>&#x000A;671: <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>&#x000A;672: &#x000A;673: <span class="ruby-identifier">namespace_attributes</span> = <span class="ruby-ivar">@attributesByNamespace</span>[<span class="ruby-identifier">namespace</span>]&#x000A;674: <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>&#x000A;675: &#x000A;676: <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>&#x000A;677: <span class="ruby-comment cmt"># Calling set_attribute() is required to ensure validations</span>&#x000A;678: <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>)&#x000A;679: <span class="ruby-keyword kw">end</span>&#x000A;680: <span class="ruby-keyword kw">end</span></pre>
951
- </div>
952
- </div>
953
- <div class='method public-instance' id='method-M000052'>
954
- <a name='M000052'></a>
955
- <div class='synopsis'>
956
- <span class='name'>to_child_hash</span>
957
- <span class='arguments'>()</span>
958
- </div>
959
- <div class='description'>
960
- <p>
961
- Returns a new Hash where the children&#8217;s names as keys and their
962
- values as the key&#8217;s value. Example:
963
- </p>
964
- <pre>child1 &quot;toto&quot;&#x000A;child2 2</pre>
965
- <p>
966
- would give
967
- </p>
968
- <pre>{ &quot;child1&quot; =&gt; &quot;toto&quot;, &quot;child2&quot; =&gt; 2 }</pre>
969
- </div>
970
- <div class='source'>
971
- <a class='source-toggle' href='#' onclick="toggleCode('M000052-source'); return false">
972
- [show source]
973
- </a>
974
- <pre id='M000052-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 406</span>&#x000A;406: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_child_hash</span>&#x000A;407: <span class="ruby-identifier">hash</span> = {}&#x000A;408: <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> }&#x000A;409: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">hash</span>&#x000A;410: <span class="ruby-keyword kw">end</span></pre>
975
- </div>
976
- </div>
977
- <div class='method public-instance' id='method-M000053'>
978
- <a name='M000053'></a>
979
- <div class='synopsis'>
980
- <span class='name'>to_child_string_hash</span>
981
- <span class='arguments'>()</span>
982
- </div>
983
- <div class='description'>
984
- <p>
985
- Returns a new Hash where the children&#8217;s names as keys and their
986
- values as the key&#8217;s value. Values are converted to Strings.
987
- <tt>nil</tt> values become empty Strings. Example:
988
- </p>
989
- <pre>child1 &quot;toto&quot;&#x000A;child2 2&#x000A;child3 null</pre>
990
- <p>
991
- would give
992
- </p>
993
- <pre>{ &quot;child1&quot; =&gt; &quot;toto&quot;, &quot;child2&quot; =&gt; &quot;2&quot;, &quot;child3&quot; =&gt; &quot;&quot; }</pre>
994
- </div>
995
- <div class='source'>
996
- <a class='source-toggle' href='#' onclick="toggleCode('M000053-source'); return false">
997
- [show source]
998
- </a>
999
- <pre id='M000053-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 424</span>&#x000A;424: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_child_string_hash</span>&#x000A;425: <span class="ruby-identifier">hash</span> = {}&#x000A;426: <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>&#x000A;427: <span class="ruby-comment cmt"># FIXME: it is quite hard to be sure whether we should mimic the Java version</span>&#x000A;428: <span class="ruby-comment cmt"># as there might be a lot of values that don't translate nicely to Strings.</span>&#x000A;429: <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>&#x000A;430: <span class="ruby-keyword kw">end</span>&#x000A;431: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">hash</span>&#x000A;432: <span class="ruby-keyword kw">end</span></pre>
1000
- </div>
1001
- </div>
1002
- <div class='method public-instance' id='method-M000073'>
1003
- <a name='M000073'></a>
1004
- <div class='synopsis'>
1005
- <span class='name'>to_s</span>
1006
- <span class='arguments'>()</span>
1007
- </div>
1008
- <div class='description'>
1009
- <p>
1010
- Get a String representation of this SDL <a href="Tag.html">Tag</a>. This
1011
- method returns a complete description of the Tag&#8217;s state using SDL
1012
- (i.e. the output can be parsed by <a href="Tag.html#M000070">read</a>)
1013
- </p>
1014
- <p>
1015
- Returns A string representation of this tag using SDL
1016
- </p>
1017
- </div>
1018
- <div class='source'>
1019
- <a class='source-toggle' href='#' onclick="toggleCode('M000073-source'); return false">
1020
- [show source]
1021
- </a>
1022
- <pre id='M000073-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 795</span>&#x000A;795: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>&#x000A;796: <span class="ruby-identifier">to_string</span>&#x000A;797: <span class="ruby-keyword kw">end</span></pre>
1023
- </div>
1024
- </div>
1025
- <div class='method public-instance' id='method-M000074'>
1026
- <a name='M000074'></a>
1027
- <div class='synopsis'>
1028
- <span class='name'>to_string</span>
1029
- <span class='arguments'>(line_prefix = &quot;&quot;, indent = &quot;\t&quot;)</span>
1030
- </div>
1031
- <div class='description'>
1032
- <table>
1033
- <tr><td valign="top"><em>linePrefix</em>:</td><td>A prefix to insert before every line.
1034
-
1035
- </td></tr>
1036
- </table>
1037
- <p>
1038
- Returns A string representation of this tag using SDL
1039
- </p>
1040
- <p>
1041
- TODO: break up long lines using the backslash
1042
- </p>
1043
- </div>
1044
- <div class='source'>
1045
- <a class='source-toggle' href='#' onclick="toggleCode('M000074-source'); return false">
1046
- [show source]
1047
- </a>
1048
- <pre id='M000074-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 804</span>&#x000A;804: <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>)&#x000A;805: <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>&#x000A;806: <span class="ruby-identifier">s</span> = <span class="ruby-value str">&quot;&quot;</span>&#x000A;807: <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">line_prefix</span>&#x000A;808: &#x000A;809: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-constant">ANONYMOUS_TAG_NAME</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">namespace</span>.<span class="ruby-identifier">empty?</span>&#x000A;810: <span class="ruby-identifier">skip_value_space</span> = <span class="ruby-keyword kw">true</span>&#x000A;811: <span class="ruby-keyword kw">else</span>&#x000A;812: <span class="ruby-identifier">skip_value_space</span> = <span class="ruby-keyword kw">false</span>&#x000A;813: <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>&#x000A;814: <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">name</span>&#x000A;815: <span class="ruby-keyword kw">end</span>&#x000A;816: &#x000A;817: <span class="ruby-comment cmt"># output values</span>&#x000A;818: <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>&#x000A;819: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">skip_value_space</span>&#x000A;820: <span class="ruby-identifier">skip_value_space</span> = <span class="ruby-keyword kw">false</span>&#x000A;821: <span class="ruby-keyword kw">else</span>&#x000A;822: <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot; &quot;</span>&#x000A;823: <span class="ruby-keyword kw">end</span>&#x000A;824: <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>)&#x000A;825: <span class="ruby-keyword kw">end</span>&#x000A;826: &#x000A;827: <span class="ruby-comment cmt"># output attributes</span>&#x000A;828: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@attributesByNamespace</span>.<span class="ruby-identifier">empty?</span>&#x000A;829: <span class="ruby-identifier">all_attributes_hash</span> = <span class="ruby-identifier">attributes</span>&#x000A;830: <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>&#x000A;831: <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>)&#x000A;832: <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>&#x000A;833: <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>)&#x000A;834: <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>&#x000A;835: &#x000A;836: <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>&#x000A;837: <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>&#x000A;838: }&#x000A;839: <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>&#x000A;840: <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>)&#x000A;841: <span class="ruby-keyword kw">end</span>&#x000A;842: <span class="ruby-keyword kw">end</span>&#x000A;843: &#x000A;844: <span class="ruby-comment cmt"># output children</span>&#x000A;845: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@children</span>.<span class="ruby-identifier">empty?</span>&#x000A;846: <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; {#{$/}&quot;</span>&#x000A;847: <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>)&#x000A;848: <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>&#x000A;849: <span class="ruby-keyword kw">end</span>&#x000A;850: &#x000A;851: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">s</span>&#x000A;852: <span class="ruby-keyword kw">end</span></pre>
1049
- </div>
1050
- </div>
1051
- <div class='method public-instance' id='method-M000079'>
1052
- <a name='M000079'></a>
1053
- <div class='synopsis'>
1054
- <span class='name'>to_xml_string</span>
1055
- <span class='arguments'>(options = {})</span>
1056
- </div>
1057
- <div class='description'>
1058
- <p>
1059
- Returns a string containing an XML representation of this tag. Values will
1060
- be represented using _val0, _val1, etc.
1061
- </p>
1062
- <table>
1063
- <tr><td valign="top"><em>options</em>:</td><td>a hash of the options
1064
-
1065
- </td></tr>
1066
- </table>
1067
- <h3>options:</h3>
1068
- <dl>
1069
- <dt>:line_prefix</dt><dd>a text prefixing each line (default: &#8220;&#8221;)
1070
-
1071
- </dd>
1072
- <dt>:uri_by_namespace</dt><dd>a Hash giving the URIs for the namespaces
1073
-
1074
- </dd>
1075
- <dt>:indent</dt><dd>text specifying one indentation (default: &#8220;t&#8220;)
1076
-
1077
- </dd>
1078
- <dt>:eol</dt><dd>end of line expression (default: &#8220;n&#8220;)
1079
-
1080
- </dd>
1081
- <dt>:omit_null_attributes</dt><dd>if true, null/nil attributes are not exported (default: false). Otherwise,
1082
- they are exported as follows:
1083
-
1084
- <pre>tag attr=&quot;null&quot;</pre>
1085
- </dd>
1086
- </dl>
1087
- </div>
1088
- <div class='source'>
1089
- <a class='source-toggle' href='#' onclick="toggleCode('M000079-source'); return false">
1090
- [show source]
1091
- </a>
1092
- <pre id='M000079-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 902</span>&#x000A;902: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_xml_string</span>(<span class="ruby-identifier">options</span> = {})&#x000A;903: <span class="ruby-identifier">options</span> = {&#x000A;904: <span class="ruby-identifier">:uri_by_namespace</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,&#x000A;905: <span class="ruby-identifier">:indent</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;\t&quot;</span>,&#x000A;906: <span class="ruby-identifier">:line_prefix</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;&quot;</span>,&#x000A;907: <span class="ruby-identifier">:eol</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;\n&quot;</span>,&#x000A;908: <span class="ruby-identifier">:omit_null_attributes</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">false</span>&#x000A;909: }.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">options</span>)&#x000A;910: <span class="ruby-identifier">_to_xml_string</span>(<span class="ruby-identifier">options</span>[<span class="ruby-identifier">:line_prefix</span>], <span class="ruby-identifier">options</span>)&#x000A;911: <span class="ruby-keyword kw">end</span></pre>
1093
- </div>
1094
- </div>
1095
- <div class='method public-instance' id='method-M000045'>
1096
- <a name='M000045'></a>
1097
- <div class='synopsis'>
1098
- <span class='name'>value</span>
1099
- <span class='arguments'>()</span>
1100
- </div>
1101
- <div class='description'>
1102
- <p>
1103
- A convenience method that returns the first value.
1104
- </p>
1105
- </div>
1106
- <div class='source'>
1107
- <a class='source-toggle' href='#' onclick="toggleCode('M000045-source'); return false">
1108
- [show source]
1109
- </a>
1110
- <pre id='M000045-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 259</span>&#x000A;259: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">value</span>&#x000A;260: <span class="ruby-ivar">@values</span>[<span class="ruby-value">0</span>]&#x000A;261: <span class="ruby-keyword kw">end</span></pre>
1111
- </div>
1112
- </div>
1113
- <div class='method public-instance' id='method-M000044'>
1114
- <a name='M000044'></a>
1115
- <div class='synopsis'>
1116
- <span class='name'>value=</span>
1117
- <span class='arguments'>(value)</span>
1118
- </div>
1119
- <div class='description'>
1120
- <p>
1121
- A convenience method that sets the first value in the value list. See # <a
1122
- href="Tag.html#M000054">add_value</a> for legal types.
1123
- </p>
1124
- <table>
1125
- <tr><td valign="top"><em>value</em>:</td><td>The value to be set.
1126
-
1127
- </td></tr>
1128
- </table>
1129
- <h3>Raises</h3>
1130
- <table>
1131
- <tr><td valign="top"><em>ArgumentError</em>:</td><td>if the value is not a legal SDL type
1132
-
1133
- </td></tr>
1134
- </table>
1135
- </div>
1136
- <div class='source'>
1137
- <a class='source-toggle' href='#' onclick="toggleCode('M000044-source'); return false">
1138
- [show source]
1139
- </a>
1140
- <pre id='M000044-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 251</span>&#x000A;251: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">value=</span>(<span class="ruby-identifier">value</span>)&#x000A;252: <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>)&#x000A;253: <span class="ruby-keyword kw">nil</span>&#x000A;254: <span class="ruby-keyword kw">end</span></pre>
1141
- </div>
1142
- </div>
1143
- <div class='method public-instance' id='method-M000058'>
1144
- <a name='M000058'></a>
1145
- <div class='synopsis'>
1146
- <span class='name'>values</span>
1147
- <span class='arguments'>( {|value| ...}</span>
1148
- </div>
1149
- <div class='description'>
1150
- <p>
1151
- Returns an Array of the values of this <a href="Tag.html">Tag</a> or
1152
- enumerates them.
1153
- </p>
1154
- <pre>tag.values # =&gt; [123, &quot;spices&quot;]&#x000A;tag.values { |value| puts value }</pre>
1155
- </div>
1156
- <div class='source'>
1157
- <a class='source-toggle' href='#' onclick="toggleCode('M000058-source'); return false">
1158
- [show source]
1159
- </a>
1160
- <pre id='M000058-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 478</span>&#x000A;478: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">values</span> <span class="ruby-comment cmt"># :yields: value</span>&#x000A;479: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>&#x000A;480: <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> }&#x000A;481: <span class="ruby-keyword kw">nil</span>&#x000A;482: <span class="ruby-keyword kw">else</span>&#x000A;483: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@values</span>&#x000A;484: <span class="ruby-keyword kw">end</span>&#x000A;485: <span class="ruby-keyword kw">end</span></pre>
1161
- </div>
1162
- </div>
1163
- <div class='method public-instance' id='method-M000059'>
1164
- <a name='M000059'></a>
1165
- <div class='synopsis'>
1166
- <span class='name'>values=</span>
1167
- <span class='arguments'>(someValues)</span>
1168
- </div>
1169
- <div class='description'>
1170
- <p>
1171
- Set the values for this tag. See <a href="Tag.html#M000054">add_value</a>
1172
- for legal value types.
1173
- </p>
1174
- <table>
1175
- <tr><td valign="top"><em>values</em>:</td><td>The new values
1176
-
1177
- </td></tr>
1178
- </table>
1179
- <p>
1180
- Raises an <tt>ArgumentError</tt> if the collection contains any values
1181
- which are not legal SDL types.
1182
- </p>
1183
- </div>
1184
- <div class='source'>
1185
- <a class='source-toggle' href='#' onclick="toggleCode('M000059-source'); return false">
1186
- [show source]
1187
- </a>
1188
- <pre id='M000059-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 493</span>&#x000A;493: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">values=</span>(<span class="ruby-identifier">someValues</span>)&#x000A;494: <span class="ruby-ivar">@values</span>.<span class="ruby-identifier">clear</span>()&#x000A;495: <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>&#x000A;496: <span class="ruby-comment cmt"># this is required to ensure validation of types</span>&#x000A;497: <span class="ruby-identifier">add_value</span>(<span class="ruby-identifier">v</span>)&#x000A;498: }&#x000A;499: <span class="ruby-keyword kw">nil</span>&#x000A;500: <span class="ruby-keyword kw">end</span></pre>
1189
- </div>
1190
- </div>
1191
- <div class='method public-instance' id='method-M000072'>
1192
- <a name='M000072'></a>
1193
- <div class='synopsis'>
1194
- <span class='name'>write</span>
1195
- <span class='arguments'>(output, include_root = false)</span>
1196
- </div>
1197
- <div class='description'>
1198
- <p>
1199
- Write this tag out to the given IO or StringIO or String (optionally
1200
- clipping the root.) Returns <tt>output</tt>.
1201
- </p>
1202
- <table>
1203
- <tr><td valign="top"><em>output</em>:</td><td>an IO or StringIO or a String to write to
1204
-
1205
- </td></tr>
1206
- <tr><td valign="top"><tt>include_root</tt>:</td><td>if true this tag will be written out as the root element, if false only the
1207
-
1208
- </td></tr>
1209
- </table>
1210
- <pre>children will be written. False by default.</pre>
1211
- </div>
1212
- <div class='source'>
1213
- <a class='source-toggle' href='#' onclick="toggleCode('M000072-source'); return false">
1214
- [show source]
1215
- </a>
1216
- <pre id='M000072-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 759</span>&#x000A;759: <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>)&#x000A;760: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">output</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">String</span>&#x000A;761: <span class="ruby-identifier">io</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">output</span>)&#x000A;762: <span class="ruby-identifier">close_io</span> = <span class="ruby-keyword kw">true</span> <span class="ruby-comment cmt"># indicates we close the IO ourselves</span>&#x000A;763: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">output</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">IO</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">output</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">StringIO</span>&#x000A;764: <span class="ruby-identifier">io</span> = <span class="ruby-identifier">output</span>&#x000A;765: <span class="ruby-identifier">close_io</span> = <span class="ruby-keyword kw">false</span> <span class="ruby-comment cmt"># let the caller close the IO</span>&#x000A;766: <span class="ruby-keyword kw">else</span>&#x000A;767: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;'output' should be a String or an IO but was #{output.class}&quot;</span>&#x000A;768: <span class="ruby-keyword kw">end</span>&#x000A;769: &#x000A;770: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">include_root</span>&#x000A;771: <span class="ruby-identifier">io</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">to_s</span>&#x000A;772: <span class="ruby-keyword kw">else</span>&#x000A;773: <span class="ruby-identifier">first</span> = <span class="ruby-keyword kw">true</span>&#x000A;774: <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>&#x000A;775: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">first</span>&#x000A;776: <span class="ruby-identifier">first</span> = <span class="ruby-keyword kw">false</span>&#x000A;777: <span class="ruby-keyword kw">else</span>&#x000A;778: <span class="ruby-identifier">io</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">$/</span>&#x000A;779: <span class="ruby-keyword kw">end</span>&#x000A;780: <span class="ruby-identifier">io</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">child</span>.<span class="ruby-identifier">to_s</span>&#x000A;781: <span class="ruby-keyword kw">end</span>&#x000A;782: <span class="ruby-keyword kw">end</span>&#x000A;783: &#x000A;784: <span class="ruby-identifier">io</span>.<span class="ruby-identifier">close</span>() <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">close_io</span>&#x000A;785: &#x000A;786: <span class="ruby-identifier">output</span>&#x000A;787: <span class="ruby-keyword kw">end</span></pre>
1217
- </div>
1218
- </div>
1219
- <h2>Protected instance methods</h2>
1220
- <div class='method protected-instance' id='method-M000080'>
1221
- <a name='M000080'></a>
1222
- <div class='synopsis'>
1223
- <span class='name'>_to_xml_string</span>
1224
- <span class='arguments'>(line_prefix, options)</span>
1225
- </div>
1226
- <div class='description'>
1227
- <p>
1228
- Implementation of <a href="Tag.html#M000079">to_xml_string</a> but without
1229
- the extra-treatment on parameters for default values.
1230
- </p>
1231
- </div>
1232
- <div class='source'>
1233
- <a class='source-toggle' href='#' onclick="toggleCode('M000080-source'); return false">
1234
- [show source]
1235
- </a>
1236
- <pre id='M000080-source'> <span class="ruby-comment cmt"># File lib/sdl4r/tag.rb, line 917</span>&#x000A;917: <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-identifier">options</span>)&#x000A;918: <span class="ruby-identifier">eol</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:eol</span>]&#x000A;919: &#x000A;920: <span class="ruby-identifier">s</span> = <span class="ruby-value str">&quot;&quot;</span>&#x000A;921: <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>&#x000A;922: <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>&#x000A;923: <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">name</span>&#x000A;924: &#x000A;925: <span class="ruby-comment cmt"># output namespace declarations</span>&#x000A;926: <span class="ruby-identifier">uri_by_namespace</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:uri_by_namespace</span>]&#x000A;927: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">uri_by_namespace</span>&#x000A;928: <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>&#x000A;929: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">namespace</span>&#x000A;930: <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>&#x000A;931: <span class="ruby-keyword kw">else</span>&#x000A;932: <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; xmlns=\&quot;#{uri}\&quot;&quot;</span>&#x000A;933: <span class="ruby-keyword kw">end</span>&#x000A;934: <span class="ruby-keyword kw">end</span>&#x000A;935: <span class="ruby-keyword kw">end</span>&#x000A;936: &#x000A;937: <span class="ruby-comment cmt"># output values</span>&#x000A;938: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@values</span>.<span class="ruby-identifier">empty?</span>&#x000A;939: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>&#x000A;940: <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>&#x000A;941: <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>&#x000A;942: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>&#x000A;943: <span class="ruby-keyword kw">end</span>&#x000A;944: <span class="ruby-keyword kw">end</span>&#x000A;945: &#x000A;946: <span class="ruby-comment cmt"># output attributes</span>&#x000A;947: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">has_attribute?</span>&#x000A;948: <span class="ruby-identifier">omit_null_attributes</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:omit_null_attributes</span>]&#x000A;949: <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>&#x000A;950: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">omit_null_attributes</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">attribute_value</span>.<span class="ruby-identifier">nil?</span>&#x000A;951: <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot; &quot;</span>&#x000A;952: <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>&#x000A;953: <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>&#x000A;954: <span class="ruby-keyword kw">end</span>&#x000A;955: <span class="ruby-keyword kw">end</span>&#x000A;956: <span class="ruby-keyword kw">end</span>&#x000A;957: &#x000A;958: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@children</span>.<span class="ruby-identifier">empty?</span>&#x000A;959: <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;/&gt;&quot;</span>&#x000A;960: <span class="ruby-keyword kw">else</span>&#x000A;961: <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;&gt;&quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">eol</span>&#x000A;962: <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>&#x000A;963: <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-identifier">options</span>[<span class="ruby-identifier">:indent</span>], <span class="ruby-identifier">options</span>) <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">eol</span>&#x000A;964: <span class="ruby-keyword kw">end</span>&#x000A;965: &#x000A;966: <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>&#x000A;967: <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>&#x000A;968: <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>&#x000A;969: <span class="ruby-keyword kw">end</span>&#x000A;970: &#x000A;971: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">s</span>&#x000A;972: <span class="ruby-keyword kw">end</span></pre>
1237
- </div>
1238
- </div>
1239
- </div>
1240
- </div>
1241
- </div>
1242
- </div>
1243
- <div id='footer-push'></div>
1244
- </div>
1245
- <div id='footer'>
1246
- <a href="http://github.com/mislav/hanna/tree/master"><strong>Hanna</strong> RDoc template</a>
1247
- </div>
1248
- </body>
1249
- </html>