sdl4r 0.9.6 → 0.9.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/CHANGELOG +49 -2
  2. data/Rakefile +35 -5
  3. data/TODO +29 -3
  4. data/doc/classes/SDL4R.html +386 -674
  5. data/doc/classes/SDL4R/Parser.html +183 -307
  6. data/doc/classes/SDL4R/ParserTest.html +357 -0
  7. data/doc/classes/SDL4R/SDL4RTest.html +532 -0
  8. data/doc/classes/SDL4R/SDLTest.html +77 -0
  9. data/doc/classes/SDL4R/SdlBinary.html +180 -295
  10. data/doc/classes/SDL4R/SdlParseError.html +105 -180
  11. data/doc/classes/SDL4R/SdlTimeSpan.html +628 -939
  12. data/doc/classes/SDL4R/Tag.html +1236 -2036
  13. data/doc/classes/SDL4R/TagTest.html +292 -0
  14. data/doc/created.rid +1 -1
  15. data/doc/files/CHANGELOG.html +183 -184
  16. data/doc/files/LICENSE.html +496 -755
  17. data/doc/files/README.html +399 -623
  18. data/doc/files/lib/sdl4r/parser/reader_rb.html +53 -106
  19. data/doc/files/lib/sdl4r/parser/time_span_with_zone_rb.html +53 -106
  20. data/doc/files/lib/sdl4r/parser/token_rb.html +53 -106
  21. data/doc/files/lib/sdl4r/parser/tokenizer_rb.html +53 -106
  22. data/doc/files/lib/sdl4r/parser_rb.html +60 -112
  23. data/doc/files/lib/sdl4r/sdl4r_rb.html +62 -114
  24. data/doc/files/lib/sdl4r/sdl_binary_rb.html +53 -106
  25. data/doc/files/lib/sdl4r/sdl_parse_error_rb.html +53 -106
  26. data/doc/files/lib/sdl4r/sdl_time_span_rb.html +53 -106
  27. data/doc/files/lib/sdl4r/tag_rb.html +62 -114
  28. data/doc/files/lib/sdl4r_rb.html +53 -106
  29. data/doc/files/test/sdl4r/parser_test_rb.html +63 -0
  30. data/doc/files/test/sdl4r/sdl4r_test_rb.html +66 -0
  31. data/doc/files/test/sdl4r/sdl_test_rb.html +63 -0
  32. data/doc/files/test/sdl4r/tag_test_rb.html +63 -0
  33. data/doc/fr_class_index.html +19 -32
  34. data/doc/fr_file_index.html +37 -40
  35. data/doc/fr_method_index.html +4707 -114
  36. data/doc/index.html +14 -23
  37. data/doc/rdoc-style.css +323 -203
  38. data/lib/sdl4r/parser/reader.rb +26 -19
  39. data/lib/sdl4r/parser/token.rb +3 -3
  40. data/lib/sdl4r/parser/tokenizer.rb +93 -98
  41. data/lib/sdl4r/sdl_parse_error.rb +2 -2
  42. data/lib/sdl4r/tag.rb +127 -73
  43. data/test/sdl4r/parser_test.rb +109 -11
  44. data/test/sdl4r/tag_test.rb +73 -4
  45. metadata +15 -12
data/CHANGELOG CHANGED
@@ -1,4 +1,51 @@
1
- == v0.9.7 (建設中)
1
+ == v0.9.8 (建設中)
2
+
3
+ == v0.9.7 (26-auf-2010)
4
+
5
+ === Major changes:
6
+
7
+ * It could prove a hassle to use the block idiom of Tag.new or Tag.new_child when handling another
8
+ set of data. Therefore, if the given block takes a (not-optional) parameter, the context remains
9
+ the context of the calling code.
10
+
11
+ class Elephant
12
+
13
+ def initialize
14
+ @weight = 1000
15
+ end
16
+
17
+ def to_sdl
18
+ SDL4R::Tag.new("elephant") do |tag|
19
+ tag.set_attribute("weight", @weight)
20
+ tag << "I love pink ones."
21
+ end
22
+ end
23
+
24
+ end
25
+
26
+ puts Elephant.new.to_sdl.to_s # ==> elephant "I love pink ones." weight=1000
27
+
28
+ * Tag.to_xml_string() has been refactor to take an option Hash (backward incompatible):
29
+
30
+ [:line_prefix] a text prefixing each line (default: "")
31
+ [:uri_by_namespace] a Hash giving the URIs for the namespaces
32
+ [:indent] text specifying one indentation (default: "\t")
33
+ [:eol] end of line expression (default: "\n")
34
+ [:omit_null_attributes]
35
+ if true, null/nil attributes are not exported (default: false). Otherwise, they are exported
36
+ as follows:
37
+ tag attr="null"
38
+
39
+ * Fixed the parsing of line continuations with anti-slashes.
40
+ * Fixed the parsing of double-quoted strings. It is better at detecting badly formed strings, now.
41
+ * Fixed the reporting of lines and columns in errors.
42
+ Although the column might be slightly off sometimes, the line should be correct.
43
+
44
+
45
+ === Minor changes:
46
+
47
+ * The RDoc is now generated with the template Hanna[http://github.com/mislav/hanna/tree/master].
48
+ * Tag.<< now behaves with Enumerables (except Strings) as it does with Arrays.
2
49
 
3
50
  == v0.9.6 (10-aug-2010)
4
51
 
@@ -30,7 +77,7 @@
30
77
 
31
78
  require 'sdl4r'
32
79
 
33
- * SDL4R#coerce_or_fail has been implemented, which means that random objects can't be added to a
80
+ * SDL4R#coerce_or_fail has been implemented, which means that random objects cannot be added to a
34
81
  Tag as before. Rational instances are coerced using Rational#to_f.
35
82
  * Added usual time methods to SdlTimeSpan: day(), hour(), min(), sec(), usec()
36
83
 
data/Rakefile CHANGED
@@ -1,16 +1,23 @@
1
1
  require 'rake'
2
2
  require 'rake/clean'
3
- require 'rake/testtask'
4
- require 'rake/rdoctask'
3
+ require 'rake/testtask'
5
4
  require 'rake/gempackagetask'
6
5
  require 'rake/packagetask'
7
6
  require 'rubygems'
8
7
 
8
+ if Gem.required_location("hanna", "hanna/rdoctask.rb")
9
+ puts "using Hanna RDoc template"
10
+ require 'hanna/rdoctask'
11
+ else
12
+ puts "using standard RDoc template"
13
+ require 'rake/rdoctask'
14
+ end
15
+
9
16
  spec = Gem::Specification.new do |s|
10
17
  s.platform = Gem::Platform::RUBY
11
18
  s.summary = "Simple Declarative Language for Ruby library"
12
19
  s.name = 'sdl4r'
13
- s.version = '0.9.6'
20
+ s.version = '0.9.7'
14
21
  s.requirements << 'none'
15
22
  s.require_path = 'lib'
16
23
  s.authors = ['Philippe Vosges', 'Daniel Leuck']
@@ -46,14 +53,37 @@ Rake::GemPackageTask.new(spec) do |pkg|
46
53
  end
47
54
 
48
55
  Rake::RDocTask.new do |rd|
49
- files = ['README', 'LICENSE', 'CHANGELOG',
50
- 'lib/sdl4r.rb', 'lib/sdl4r/**/*.rb', 'doc/**/*.rdoc', 'test/*.rb']
56
+ files = ['README', 'LICENSE', 'CHANGELOG', 'lib/**/*.rb', 'doc/**/*.rdoc', 'test/**/*.rb']
51
57
  rd.main = 'README'
52
58
  rd.rdoc_files.include(files)
59
+ rd.rdoc_files.exclude("lib/scratchpad.rb")
53
60
  rd.rdoc_dir = "doc"
54
61
  rd.title = "RDoc: Simple Declarative Language for Ruby"
55
62
  rd.options << '--charset' << 'utf-8'
63
+ rd.options << '--line-numbers'
64
+ rd.options << '--inline-source'
65
+ end
66
+
67
+ gen_rubyforge = task :gen_rubyforge => [:rdoc] do
68
+ # Modify the front page of the Rubyforge front page
69
+ File.open("doc/files/CHANGELOG.html", "r:UTF-8") do |f|
70
+ changelog = f.read
71
+ if changelog =~ /(<div id='content'>.*?)<div id='footer-push'>/im
72
+ changelog = $1
73
+ new_front_page = File.open("rubyforge/index.html", "r:UTF-8") do |f2|
74
+ f2.read.gsub(
75
+ /<!-- CHANGELOG_START -->.*?<!-- CHANGELOG_END -->/m,
76
+ "<!-- CHANGELOG_START -->\n" + changelog + "\n<!-- CHANGELOG_END -->")
77
+ end
78
+ File.open("rubyforge/index.html", "w:UTF-8") do |f2|
79
+ f2.write new_front_page
80
+ end
81
+ else
82
+ puts "couldn't extract info from changelog"
83
+ end
84
+ end
56
85
  end
86
+ gen_rubyforge.comment = "Includes the CHANGELOG into the Rubyforge front page"
57
87
 
58
88
  Rake::TestTask.new do |t|
59
89
  t.libs << "lib"
data/TODO CHANGED
@@ -74,13 +74,39 @@
74
74
  Tag.add_value
75
75
  ==> Minor change: we return nil for the methods were nothing was really returned explicitely
76
76
  (for the time being).
77
- [x] State somewhere that we support SDL 1.3.
78
- [ ] If there is any success, maybe create/recreate the Rubyforge site for the support.
77
+ [x] If there is any success, maybe create/recreate the Rubyforge site for the support.
79
78
  [ ] Should we allow to create a Tag without a name (== "content") for anonymous Tags?
80
- [ ] It would be cool to be able to right this:
79
+ [x] It would be cool to be able to write this:
81
80
 
82
81
  Tag.new "toto" do |tag|
83
82
  tag << 123
84
83
  end
85
84
 
85
+ ==> We can detect whether there is an argument or not.
86
+
86
87
  Note that instance_eval() doesn't allow to pass parameters right now.
88
+ [ ] Add latest doc access to RubyForge:
89
+ ==> Rake task?
90
+
91
+ [x] Is it right to translate the SDL
92
+ attr1=null
93
+ into the XML
94
+ attr1="null"
95
+ ?
96
+ Should we remove the attribute altogether? Check the Java version => same in Java
97
+ ==> Maybe provide an options Hash in to_xml_string():
98
+ :uri_by_namespace => {...} (breaks the old interface)
99
+ :hide_null_attributes => true|false
100
+ [x] Where we accept Arrays (operator <<, for instance), let's accept Enumerable or something like
101
+ that.
102
+ [ ] Implement the [] operator in order to access attributes:
103
+ ["attr"] <=> attribute("attr")
104
+ ["ns:attr"] <=> attribute("ns", "attr") (should we allow this?)
105
+ ["ns", "attr"] <=> attribute("ns", "attr")
106
+ Should we allow attribute("ns:attr")?
107
+ [ ] IDEA: marshaller? easy object <=> SDL read/write?
108
+ [ ] Check the coverage and make the tests better.
109
+ [ ] IDEA: add an option to the XML export allowing to write anonymous nodes as XML tag content?
110
+ [ ] IDEA: add an option to the XML export allowing to export without formatting?
111
+ [x] BUG: line continuation is not handled properly (skipping chars etc).
112
+ [ ] BUG: the rake task 'gen_rubyforge' doesn't work under 1.9 (only 1.8.7)
@@ -1,681 +1,393 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <!DOCTYPE html
3
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
-
6
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
- <head>
8
- <title>Module: SDL4R</title>
9
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10
- <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
- <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
- <script type="text/javascript">
13
- // <![CDATA[
14
-
15
- function popupCode( url ) {
16
- window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
- }
18
-
19
- function toggleCode( id ) {
20
- if ( document.getElementById )
21
- elem = document.getElementById( id );
22
- else if ( document.all )
23
- elem = eval( "document.all." + id );
24
- else
25
- return false;
26
-
27
- elemStyle = elem.style;
28
-
29
- if ( elemStyle.display != "block" ) {
30
- elemStyle.display = "block"
31
- } else {
32
- elemStyle.display = "none"
33
- }
34
-
35
- return true;
36
- }
37
-
38
- // Make codeblocks hidden by default
39
- document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
-
41
- // ]]>
42
- </script>
43
-
44
- </head>
45
- <body>
46
-
47
-
48
-
49
- <div id="classHeader">
50
- <table class="header-table">
51
- <tr class="top-aligned-row">
52
- <td><strong>Module</strong></td>
53
- <td class="class-name-in-header">SDL4R</td>
54
- </tr>
55
- <tr class="top-aligned-row">
56
- <td><strong>In:</strong></td>
57
- <td>
58
- <a href="../files/lib/sdl4r/sdl_time_span_rb.html">
59
- lib/sdl4r/sdl_time_span.rb
60
- </a>
61
- <br />
62
- <a href="../files/lib/sdl4r/sdl_parse_error_rb.html">
63
- lib/sdl4r/sdl_parse_error.rb
64
- </a>
65
- <br />
66
- <a href="../files/lib/sdl4r/tag_rb.html">
67
- lib/sdl4r/tag.rb
68
- </a>
69
- <br />
70
- <a href="../files/lib/sdl4r/parser_rb.html">
71
- lib/sdl4r/parser.rb
72
- </a>
73
- <br />
74
- <a href="../files/lib/sdl4r/sdl_binary_rb.html">
75
- lib/sdl4r/sdl_binary.rb
76
- </a>
77
- <br />
78
- <a href="../files/lib/sdl4r/parser/reader_rb.html">
79
- lib/sdl4r/parser/reader.rb
80
- </a>
81
- <br />
82
- <a href="../files/lib/sdl4r/parser/tokenizer_rb.html">
83
- lib/sdl4r/parser/tokenizer.rb
84
- </a>
85
- <br />
86
- <a href="../files/lib/sdl4r/parser/token_rb.html">
87
- lib/sdl4r/parser/token.rb
88
- </a>
89
- <br />
90
- <a href="../files/lib/sdl4r/parser/time_span_with_zone_rb.html">
91
- lib/sdl4r/parser/time_span_with_zone.rb
92
- </a>
93
- <br />
94
- <a href="../files/lib/sdl4r/sdl4r_rb.html">
95
- lib/sdl4r/sdl4r.rb
96
- </a>
97
- <br />
98
- </td>
99
- </tr>
100
-
101
- </table>
102
- </div>
103
- <!-- banner header -->
104
-
105
- <div id="bodyContent">
106
-
107
-
108
-
109
- <div id="contextContent">
110
-
111
- <div id="description">
112
- <p>
113
- Gathers utility methods.
114
- </p>
115
-
116
- </div>
117
-
118
-
119
- </div>
120
-
121
- <div id="method-list">
122
- <h3 class="section-bar">Methods</h3>
123
-
124
- <div class="name-list">
125
- <a href="#M000001">SdlBinary</a>&nbsp;&nbsp;
126
- <a href="#M000004">coerce_or_fail</a>&nbsp;&nbsp;
127
- <a href="#M000002">format</a>&nbsp;&nbsp;
128
- <a href="#M000003">new_date_time</a>&nbsp;&nbsp;
129
- <a href="#M000006">read</a>&nbsp;&nbsp;
130
- <a href="#M000009">to_attribute_map</a>&nbsp;&nbsp;
131
- <a href="#M000007">to_value</a>&nbsp;&nbsp;
132
- <a href="#M000008">to_value_array</a>&nbsp;&nbsp;
133
- <a href="#M000005">validate_identifier</a>&nbsp;&nbsp;
134
- </div>
135
- </div>
136
-
137
- </div>
138
-
139
-
140
- <!-- if includes -->
141
-
142
- <div id="section">
143
-
144
- <div id="class-list">
145
- <h3 class="section-bar">Classes and Modules</h3>
146
-
147
- Class <a href="SDL4R/Parser.html" class="link">SDL4R::Parser</a><br />
148
- Class <a href="SDL4R/SdlBinary.html" class="link">SDL4R::SdlBinary</a><br />
149
- Class <a href="SDL4R/SdlParseError.html" class="link">SDL4R::SdlParseError</a><br />
150
- Class <a href="SDL4R/SdlTimeSpan.html" class="link">SDL4R::SdlTimeSpan</a><br />
151
- Class <a href="SDL4R/Tag.html" class="link">SDL4R::Tag</a><br />
152
-
153
- </div>
154
-
155
- <div id="constants-list">
156
- <h3 class="section-bar">Constants</h3>
157
-
158
- <div class="name-list">
159
- <table summary="Constants">
160
- <tr class="top-aligned-row context-row">
161
- <td class="context-item-name">MAX_INTEGER_32</td>
162
- <td>=</td>
163
- <td class="context-item-value">2**31 - 1</td>
164
- </tr>
165
- <tr class="top-aligned-row context-row">
166
- <td class="context-item-name">MIN_INTEGER_32</td>
167
- <td>=</td>
168
- <td class="context-item-value">-(2**31)</td>
169
- </tr>
170
- <tr class="top-aligned-row context-row">
171
- <td class="context-item-name">MAX_INTEGER_64</td>
172
- <td>=</td>
173
- <td class="context-item-value">2**63 - 1</td>
174
- </tr>
175
- <tr class="top-aligned-row context-row">
176
- <td class="context-item-name">MIN_INTEGER_64</td>
177
- <td>=</td>
178
- <td class="context-item-value">-(2**63)</td>
179
- </tr>
180
- <tr class="top-aligned-row context-row">
181
- <td class="context-item-name">BASE64_WRAP_LINE_LENGTH</td>
182
- <td>=</td>
183
- <td class="context-item-value">72</td>
184
- </tr>
185
- <tr class="top-aligned-row context-row">
186
- <td class="context-item-name">ESCAPED_QUOTES</td>
187
- <td>=</td>
188
- <td class="context-item-value">{ &quot;\&quot;&quot; =&gt; &quot;\\\&quot;&quot;, &quot;'&quot; =&gt; &quot;\\'&quot;, &quot;`&quot; =&gt; &quot;\\`&quot;, }</td>
189
- </tr>
190
- <tr class="top-aligned-row context-row">
191
- <td class="context-item-name">ESCAPED_CHARS</td>
192
- <td>=</td>
193
- <td class="context-item-value">{ &quot;\\&quot; =&gt; &quot;\\\\&quot;, &quot;\t&quot; =&gt; &quot;\\t&quot;, &quot;\r&quot; =&gt; &quot;\\r&quot;, &quot;\n&quot; =&gt; &quot;\\n&quot;, }</td>
194
- </tr>
195
- </table>
196
- </div>
197
- </div>
198
-
199
-
200
-
201
-
202
-
203
-
204
- <!-- if method_list -->
205
- <div id="methods">
206
- <h3 class="section-bar">Public Class methods</h3>
207
-
208
- <div id="method-M000001" class="method-detail">
209
- <a name="M000001"></a>
210
-
211
- <div class="method-heading">
212
- <a href="#M000001" class="method-signature">
213
- <span class="method-name">SdlBinary</span><span class="method-args">(o)</span>
214
- </a>
215
- </div>
216
-
217
- <div class="method-description">
218
- <p>
219
- Try to coerce &#8216;o&#8217; into a <a
220
- href="SDL4R.html#M000001">SdlBinary</a>. Raise an ArgumentError if it
221
- fails.
222
- </p>
223
- <p><a class="source-toggle" href="#"
224
- onclick="toggleCode('M000001-source');return false;">[Source]</a></p>
225
- <div class="method-source-code" id="M000001-source">
226
- <pre>
227
- <span class="ruby-comment cmt"># File lib/sdl4r/sdl_binary.rb, line 72</span>
228
- <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-constant">SdlBinary</span>(<span class="ruby-identifier">o</span>)
229
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">SdlBinary</span>
230
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>
231
- <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">String</span>
232
- <span class="ruby-keyword kw">return</span> <span class="ruby-constant">SdlBinary</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">o</span>)
233
- <span class="ruby-keyword kw">else</span>
234
- <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;can't coerce argument&quot;</span>
235
- <span class="ruby-keyword kw">end</span>
236
- <span class="ruby-keyword kw">end</span>
237
- </pre>
238
- </div>
239
- </div>
240
- </div>
241
-
242
- <div id="method-M000004" class="method-detail">
243
- <a name="M000004"></a>
244
-
245
- <div class="method-heading">
246
- <a href="#M000004" class="method-signature">
247
- <span class="method-name">coerce_or_fail</span><span class="method-args">(o)</span>
248
- </a>
249
- </div>
250
-
251
- <div class="method-description">
252
- <p>
253
- Coerce the type to a standard SDL type or raises an ArgumentError.
254
- </p>
255
- <p>
256
- Returns <tt>o</tt> if of the following classes: NilClass, String, Numeric,
257
- Float, TrueClass, FalseClass, Date, DateTime, Time, <a
258
- href="SDL4R/SdlTimeSpan.html">SdlTimeSpan</a>, <a
259
- href="SDL4R.html#M000001">SdlBinary</a>,
260
- </p>
261
- <p>
262
- Rationals are turned into Floats using Rational#to_f.
263
- </p>
264
- <p><a class="source-toggle" href="#"
265
- onclick="toggleCode('M000004-source');return false;">[Source]</a></p>
266
- <div class="method-source-code" id="M000004-source">
267
- <pre>
268
- <span class="ruby-comment cmt"># File lib/sdl4r/sdl4r.rb, line 151</span>
269
- <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">coerce_or_fail</span>(<span class="ruby-identifier">o</span>)
270
- <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">o</span>
271
-
272
- <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Rational</span>
273
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">to_f</span>
274
-
275
- <span class="ruby-keyword kw">when</span> <span class="ruby-constant">NilClass</span>,
276
- <span class="ruby-constant">String</span>,
277
- <span class="ruby-constant">Numeric</span>,
278
- <span class="ruby-constant">Float</span>,
279
- <span class="ruby-constant">TrueClass</span>,
280
- <span class="ruby-constant">FalseClass</span>,
281
- <span class="ruby-constant">Date</span>,
282
- <span class="ruby-constant">DateTime</span>,
283
- <span class="ruby-constant">Time</span>,
284
- <span class="ruby-constant">SdlTimeSpan</span>,
285
- <span class="ruby-constant">SdlBinary</span>
286
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>
287
-
288
- <span class="ruby-keyword kw">end</span>
289
-
290
- <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;#{o.class.name} is not coercible to an SDL type&quot;</span>
291
- <span class="ruby-keyword kw">end</span>
292
- </pre>
293
- </div>
294
- </div>
295
- </div>
296
-
297
- <div id="method-M000002" class="method-detail">
298
- <a name="M000002"></a>
299
-
300
- <div class="method-heading">
301
- <a href="#M000002" class="method-signature">
302
- <span class="method-name">format</span><span class="method-args">(o, add_quotes = true, line_prefix = &quot;&quot;, indent = &quot;\t&quot;)</span>
303
- </a>
304
- </div>
305
-
306
- <div class="method-description">
307
- <p>
308
- Creates an SDL string representation for a given object and returns it.
309
- </p>
310
- <table>
311
- <tr><td valign="top"><tt>o</tt>:</td><td>the object to <a href="SDL4R.html#M000002">format</a>
312
-
313
- </td></tr>
314
- <tr><td valign="top"><tt>add_quotes</tt>:</td><td>indicates whether quotes will be added to Strings and characters (true by
315
- default)
316
-
317
- </td></tr>
318
- <tr><td valign="top"><tt>line_prefix</tt>:</td><td>the line prefix to use (&quot;&quot; by default)
319
-
320
- </td></tr>
321
- <tr><td valign="top"><tt>indent</tt>:</td><td>the indent string to use (&quot;\t&quot; by default)
322
-
323
- </td></tr>
324
- </table>
325
- <p><a class="source-toggle" href="#"
326
- onclick="toggleCode('M000002-source');return false;">[Source]</a></p>
327
- <div class="method-source-code" id="M000002-source">
328
- <pre>
329
- <span class="ruby-comment cmt"># File lib/sdl4r/sdl4r.rb, line 44</span>
330
- <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">format</span>(<span class="ruby-identifier">o</span>, <span class="ruby-identifier">add_quotes</span> = <span class="ruby-keyword kw">true</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>)
331
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">String</span>)
332
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">add_quotes</span>
333
- <span class="ruby-identifier">o_length</span> = <span class="ruby-value">0</span>
334
- <span class="ruby-identifier">o</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-regexp re">/./</span><span class="ruby-identifier">m</span>) { <span class="ruby-identifier">o_length</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> } <span class="ruby-comment cmt"># counts the number of chars (as opposed of bytes)</span>
335
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">o_length</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
336
- <span class="ruby-keyword kw">return</span> <span class="ruby-value str">&quot;'&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">escape</span>(<span class="ruby-identifier">o</span>, <span class="ruby-value str">&quot;'&quot;</span>) <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;'&quot;</span>
337
- <span class="ruby-keyword kw">else</span>
338
- <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'&quot;'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">escape</span>(<span class="ruby-identifier">o</span>, <span class="ruby-value str">'&quot;'</span>) <span class="ruby-operator">+</span> <span class="ruby-value str">'&quot;'</span>
339
- <span class="ruby-keyword kw">end</span>
340
- <span class="ruby-keyword kw">else</span>
341
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">escape</span>(<span class="ruby-identifier">o</span>)
342
- <span class="ruby-keyword kw">end</span>
343
-
344
- <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Bignum</span>)
345
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;BD&quot;</span>
346
-
347
- <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Integer</span>)
348
- <span class="ruby-keyword kw">if</span> <span class="ruby-constant">MIN_INTEGER_32</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-identifier">o</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">o</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-constant">MAX_INTEGER_32</span>
349
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">to_s</span>
350
- <span class="ruby-keyword kw">elsif</span> <span class="ruby-constant">MIN_INTEGER_64</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-identifier">o</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">o</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-constant">MAX_INTEGER_64</span>
351
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;L&quot;</span>
352
- <span class="ruby-keyword kw">else</span>
353
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;BD&quot;</span>
354
- <span class="ruby-keyword kw">end</span>
355
-
356
- <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Float</span>)
357
- <span class="ruby-keyword kw">return</span> (<span class="ruby-identifier">o</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;F&quot;</span>)
358
-
359
- <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Rational</span>)
360
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">to_f</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;F&quot;</span>
361
-
362
- <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">BigDecimal</span>)
363
- <span class="ruby-identifier">s</span> = <span class="ruby-identifier">o</span>.<span class="ruby-identifier">to_s</span>(<span class="ruby-value str">'F'</span>)
364
- <span class="ruby-identifier">s</span>.<span class="ruby-identifier">sub!</span>(<span class="ruby-regexp re">/\.0$/</span>, <span class="ruby-value str">&quot;&quot;</span>)
365
- <span class="ruby-keyword kw">return</span> <span class="ruby-node">&quot;#{s}BD&quot;</span>
366
-
367
- <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">nil?</span>
368
- <span class="ruby-keyword kw">return</span> <span class="ruby-value str">&quot;null&quot;</span>
369
-
370
- <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">SdlBinary</span>)
371
- <span class="ruby-identifier">encoded_o</span> = <span class="ruby-constant">Base64</span>.<span class="ruby-identifier">encode64</span>(<span class="ruby-identifier">o</span>.<span class="ruby-identifier">bytes</span>)
372
- <span class="ruby-identifier">encoded_o</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp re">/[\r\n]/</span><span class="ruby-identifier">m</span>, <span class="ruby-value str">&quot;&quot;</span>) <span class="ruby-comment cmt"># Remove the EOL inserted every 60 chars</span>
373
-
374
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">add_quotes</span>
375
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">encoded_o</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-constant">BASE64_WRAP_LINE_LENGTH</span>
376
- <span class="ruby-comment cmt"># FIXME: we should a constant or some parameter instead of hardcoded spaces</span>
377
- <span class="ruby-identifier">wrap_lines_in_ascii</span>(<span class="ruby-identifier">encoded_o</span>, <span class="ruby-constant">BASE64_WRAP_LINE_LENGTH</span>, <span class="ruby-node">&quot;#{line_prefix}#{indent}&quot;</span>)
378
- <span class="ruby-identifier">encoded_o</span>.<span class="ruby-identifier">insert</span>(<span class="ruby-value">0</span>, <span class="ruby-node">&quot;[#{$/}&quot;</span>)
379
- <span class="ruby-identifier">encoded_o</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{$/}#{line_prefix}]&quot;</span>
380
- <span class="ruby-keyword kw">else</span>
381
- <span class="ruby-identifier">encoded_o</span>.<span class="ruby-identifier">insert</span>(<span class="ruby-value">0</span>, <span class="ruby-value str">&quot;[&quot;</span>)
382
- <span class="ruby-identifier">encoded_o</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;]&quot;</span>
383
- <span class="ruby-keyword kw">end</span>
384
- <span class="ruby-keyword kw">end</span>
385
-
386
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">encoded_o</span>
387
-
388
- <span class="ruby-comment cmt"># Below, we use &quot;#{o.year}&quot; instead of &quot;%Y&quot; because &quot;%Y&quot; always emit 4 chars at least even if</span>
389
- <span class="ruby-comment cmt"># the date is before 1000.</span>
390
- <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">DateTime</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Time</span>)
391
- <span class="ruby-identifier">milliseconds</span> = <span class="ruby-identifier">get_datetime_milliseconds</span>(<span class="ruby-identifier">o</span>)
392
-
393
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">milliseconds</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
394
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">zone</span>
395
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-node">&quot;#{o.year}/%m/%d %H:%M:%S%Z&quot;</span>)
396
- <span class="ruby-keyword kw">else</span>
397
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-node">&quot;#{o.year}/%m/%d %H:%M:%S&quot;</span>)
398
- <span class="ruby-keyword kw">end</span>
399
- <span class="ruby-keyword kw">else</span>
400
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">zone</span>
401
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-node">&quot;#{o.year}/%m/%d %H:%M:%S.&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">milliseconds</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">ljust</span>(<span class="ruby-value">3</span>, <span class="ruby-value str">'0'</span>) <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;%Z&quot;</span>)
402
- <span class="ruby-keyword kw">else</span>
403
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-node">&quot;#{o.year}/%m/%d %H:%M:%S.&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">milliseconds</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">ljust</span>(<span class="ruby-value">3</span>, <span class="ruby-value str">'0'</span>))
404
- <span class="ruby-keyword kw">end</span>
405
- <span class="ruby-keyword kw">end</span>
406
-
407
- <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Date</span>)
408
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-node">&quot;#{o.year}/%m/%d&quot;</span>)
409
-
410
- <span class="ruby-keyword kw">else</span>
411
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">to_s</span>
412
- <span class="ruby-keyword kw">end</span>
413
- <span class="ruby-keyword kw">end</span>
414
- </pre>
415
- </div>
416
- </div>
417
- </div>
418
-
419
- <div id="method-M000003" class="method-detail">
420
- <a name="M000003"></a>
421
-
422
- <div class="method-heading">
423
- <a href="#M000003" class="method-signature">
424
- <span class="method-name">new_date_time</span><span class="method-args">(year, month, day, hour, min, sec, time_zone_offset)</span>
425
- </a>
426
- </div>
427
-
428
- <div class="method-description">
429
- <p>
430
- Creates and returns the object representing a datetime (DateTime in the
431
- default implementation). This method is, by default, called by the <a
432
- href="SDL4R/Parser.html">Parser</a> class. It could be overriden as follows
433
- in order to get Time instances from all the <a href="SDL4R.html">SDL4R</a>
434
- parsers.
435
- </p>
436
- <pre>
437
- module SDL4R
438
- def self.new_date_time(year, month, day, hour, min, sec, time_zone_offset)
439
- Time.utc(year, month, day, hour, min, sec)
440
- end
441
- end
442
- </pre>
443
- <p><a class="source-toggle" href="#"
444
- onclick="toggleCode('M000003-source');return false;">[Source]</a></p>
445
- <div class="method-source-code" id="M000003-source">
446
- <pre>
447
- <span class="ruby-comment cmt"># File lib/sdl4r/sdl4r.rb, line 139</span>
448
- <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">new_date_time</span>(<span class="ruby-identifier">year</span>, <span class="ruby-identifier">month</span>, <span class="ruby-identifier">day</span>, <span class="ruby-identifier">hour</span>, <span class="ruby-identifier">min</span>, <span class="ruby-identifier">sec</span>, <span class="ruby-identifier">time_zone_offset</span>)
449
- <span class="ruby-constant">DateTime</span>.<span class="ruby-identifier">civil</span>(<span class="ruby-identifier">year</span>, <span class="ruby-identifier">month</span>, <span class="ruby-identifier">day</span>, <span class="ruby-identifier">hour</span>, <span class="ruby-identifier">min</span>, <span class="ruby-identifier">sec</span>, <span class="ruby-identifier">time_zone_offset</span>)
450
- <span class="ruby-keyword kw">end</span>
451
- </pre>
452
- </div>
453
- </div>
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 [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'>Module</span>
30
+ SDL4R
31
+ </h1>
32
+ <ol class='paths'>
33
+ <li>
34
+ <a href="../files/lib/sdl4r/sdl_time_span_rb.html">lib/sdl4r/sdl_time_span.rb</a>
35
+ </li>
36
+ <li class='other'>
37
+ <a href="../files/lib/sdl4r/sdl_parse_error_rb.html">lib/sdl4r/sdl_parse_error.rb</a>
38
+ </li>
39
+ <li class='other'>
40
+ <a href="../files/lib/sdl4r/tag_rb.html">lib/sdl4r/tag.rb</a>
41
+ </li>
42
+ <li class='other'>
43
+ <a href="../files/lib/sdl4r/parser_rb.html">lib/sdl4r/parser.rb</a>
44
+ </li>
45
+ <li class='other'>
46
+ <a href="../files/lib/sdl4r/sdl_binary_rb.html">lib/sdl4r/sdl_binary.rb</a>
47
+ </li>
48
+ <li class='other'>
49
+ <a href="../files/lib/sdl4r/parser/reader_rb.html">lib/sdl4r/parser/reader.rb</a>
50
+ </li>
51
+ <li class='other'>
52
+ <a href="../files/lib/sdl4r/parser/tokenizer_rb.html">lib/sdl4r/parser/tokenizer.rb</a>
53
+ </li>
54
+ <li class='other'>
55
+ <a href="../files/lib/sdl4r/parser/token_rb.html">lib/sdl4r/parser/token.rb</a>
56
+ </li>
57
+ <li class='other'>
58
+ <a href="../files/lib/sdl4r/sdl4r_rb.html">lib/sdl4r/sdl4r.rb</a>
59
+ </li>
60
+ <li class='other'>
61
+ <a href="../files/lib/sdl4r/parser/time_span_with_zone_rb.html">lib/sdl4r/parser/time_span_with_zone.rb</a>
62
+ </li>
63
+ <li class='other'>
64
+ <a href="../files/test/sdl4r/parser_test_rb.html">test/sdl4r/parser_test.rb</a>
65
+ </li>
66
+ <li class='other'>
67
+ <a href="../files/test/sdl4r/tag_test_rb.html">test/sdl4r/tag_test.rb</a>
68
+ </li>
69
+ <li class='other'>
70
+ <a href="../files/test/sdl4r/sdl_test_rb.html">test/sdl4r/sdl_test.rb</a>
71
+ </li>
72
+ <li class='other'>
73
+ <a href="../files/test/sdl4r/sdl4r_test_rb.html">test/sdl4r/sdl4r_test.rb</a>
74
+ </li>
75
+ <li>
76
+ <a class='show' href='#' onclick='this.parentNode.parentNode.className += " expanded"; this.parentNode.removeChild(this); return false'>show all</a>
77
+ </li>
78
+ </ol>
454
79
  </div>
455
-
456
- <div id="method-M000006" class="method-detail">
457
- <a name="M000006"></a>
458
-
459
- <div class="method-heading">
460
- <a href="#M000006" class="method-signature">
461
- <span class="method-name">read</span><span class="method-args">(input)</span>
462
- </a>
463
- </div>
464
-
465
- <div class="method-description">
466
- <p>
467
- Creates and returns a tag named &quot;root&quot; and add all the tags
468
- specified in the given <tt>input</tt>.
469
- </p>
470
- <table>
471
- <tr><td valign="top"><tt>input</tt>:</td><td>String, IO, Pathname or URI.
472
-
473
- </td></tr>
474
- </table>
475
- <pre>
476
- root = SDL4R::read(&lt;&lt;EOF
477
- planets {
478
- earth area_km2=510900000
479
- mars
480
- }
481
- EOF
482
- )
483
-
484
- root = SDL4R::read(Pathname.new(&quot;my_dir/my_file.sdl&quot;))
485
-
486
- IO.open(&quot;my_dir/my_file.sdl&quot;, &quot;r&quot;) { |io|
487
- root = SDL4R::read(io)
488
- }
489
-
490
- root = SDL4R::read(URI.new(&quot;http://my_site/my_file.sdl&quot;))
491
- </pre>
492
- <p><a class="source-toggle" href="#"
493
- onclick="toggleCode('M000006-source');return false;">[Source]</a></p>
494
- <div class="method-source-code" id="M000006-source">
495
- <pre>
496
- <span class="ruby-comment cmt"># File lib/sdl4r/sdl4r.rb, line 232</span>
497
- <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">input</span>)
498
- <span class="ruby-constant">Tag</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">&quot;root&quot;</span>).<span class="ruby-identifier">read</span>(<span class="ruby-identifier">input</span>)
499
- <span class="ruby-keyword kw">end</span>
500
- </pre>
80
+ <div id='content'>
81
+ <div id='text'>
82
+ <div id='description'>
83
+ <hr size="1"></hr><p>
84
+ Gathers utility methods.
85
+ </p>
86
+ <hr size="1"></hr>
501
87
  </div>
502
- </div>
503
- </div>
504
-
505
- <div id="method-M000009" class="method-detail">
506
- <a name="M000009"></a>
507
-
508
- <div class="method-heading">
509
- <a href="#M000009" class="method-signature">
510
- <span class="method-name">to_attribute_map</span><span class="method-args">(s)</span>
511
- </a>
512
- </div>
513
-
514
- <div class="method-description">
515
- <p>
516
- Parse a string representing the attributes portion of an SDL tag and return
517
- the results as a map.
518
- </p>
519
- <p>
520
- Example
521
- </p>
522
- <pre>
523
- hash = SDL4R.to_attribute_hash(&quot;value=1 debugging=on time=12:24:01&quot;);
524
-
525
- # { &quot;value&quot; =&gt; 1, &quot;debugging&quot; =&gt; true, &quot;time&quot; =&gt; SdlTimeSpan.new(12, 24, 01) }
526
- </pre>
527
- <p><a class="source-toggle" href="#"
528
- onclick="toggleCode('M000009-source');return false;">[Source]</a></p>
529
- <div class="method-source-code" id="M000009-source">
530
- <pre>
531
- <span class="ruby-comment cmt"># File lib/sdl4r/sdl4r.rb, line 270</span>
532
- <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">to_attribute_map</span>(<span class="ruby-identifier">s</span>)
533
- <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;'s' cannot be null&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">s</span>.<span class="ruby-identifier">nil?</span>
534
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">read</span>(<span class="ruby-value str">&quot;atts &quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">s</span>).<span class="ruby-identifier">child</span>.<span class="ruby-identifier">attributes</span>
535
- <span class="ruby-keyword kw">end</span>
536
- </pre>
88
+ <div id='method-list'>
89
+ <h2>Methods</h2>
90
+ <h3>public class</h3>
91
+ <ol>
92
+ <li><a href="#M000001">SdlBinary</a></li>
93
+ <li><a href="#M000004">coerce_or_fail</a></li>
94
+ <li><a href="#M000002">format</a></li>
95
+ <li><a href="#M000003">new_date_time</a></li>
96
+ <li><a href="#M000006">read</a></li>
97
+ <li><a href="#M000009">to_attribute_map</a></li>
98
+ <li><a href="#M000007">to_value</a></li>
99
+ <li><a href="#M000008">to_value_array</a></li>
100
+ <li><a href="#M000005">validate_identifier</a></li>
101
+ </ol>
537
102
  </div>
538
- </div>
539
- </div>
540
-
541
- <div id="method-M000007" class="method-detail">
542
- <a name="M000007"></a>
543
-
544
- <div class="method-heading">
545
- <a href="#M000007" class="method-signature">
546
- <span class="method-name">to_value</span><span class="method-args">(s)</span>
547
- </a>
548
- </div>
549
-
550
- <div class="method-description">
551
- <p>
552
- Parses and returns the value corresponding with the specified SDL literal.
553
- </p>
554
- <pre>
555
- SDL4R.to_value(&quot;\&quot;abcd\&quot;&quot;) # =&gt; &quot;abcd&quot;
556
- SDL4R.to_value(&quot;1&quot;) # =&gt; 1
557
- SDL4R.to_value(&quot;null&quot;) # =&gt; nil
558
- </pre>
559
- <p><a class="source-toggle" href="#"
560
- onclick="toggleCode('M000007-source');return false;">[Source]</a></p>
561
- <div class="method-source-code" id="M000007-source">
562
- <pre>
563
- <span class="ruby-comment cmt"># File lib/sdl4r/sdl4r.rb, line 242</span>
564
- <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">to_value</span>(<span class="ruby-identifier">s</span>)
565
- <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;'s' cannot be null&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">s</span>.<span class="ruby-identifier">nil?</span>
566
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">read</span>(<span class="ruby-identifier">s</span>).<span class="ruby-identifier">child</span>.<span class="ruby-identifier">value</span>
567
- <span class="ruby-keyword kw">end</span>
568
- </pre>
103
+ <div id='section'>
104
+ <div id='class-list'>
105
+ <h2>Classes and Modules</h2>
106
+ Class <a href="SDL4R/Parser.html" class="link">SDL4R::Parser</a><br />
107
+ Class <a href="SDL4R/ParserTest.html" class="link">SDL4R::ParserTest</a><br />
108
+ Class <a href="SDL4R/SDL4RTest.html" class="link">SDL4R::SDL4RTest</a><br />
109
+ Class <a href="SDL4R/SDLTest.html" class="link">SDL4R::SDLTest</a><br />
110
+ Class <a href="SDL4R/SdlBinary.html" class="link">SDL4R::SdlBinary</a><br />
111
+ Class <a href="SDL4R/SdlParseError.html" class="link">SDL4R::SdlParseError</a><br />
112
+ Class <a href="SDL4R/SdlTimeSpan.html" class="link">SDL4R::SdlTimeSpan</a><br />
113
+ Class <a href="SDL4R/Tag.html" class="link">SDL4R::Tag</a><br />
114
+ Class <a href="SDL4R/TagTest.html" class="link">SDL4R::TagTest</a><br />
115
+ </div>
116
+ <div id='constants-list'>
117
+ <h2>Constants</h2>
118
+ <div class='name-list'>
119
+ <table summary='Constants'>
120
+ <tr class='top-aligned-row context-row'>
121
+ <td class='context-item-name'>MAX_INTEGER_32</td>
122
+ <td>=</td>
123
+ <td class='context-item-value'>2**31 - 1</td>
124
+ </tr>
125
+ <tr class='top-aligned-row context-row'>
126
+ <td class='context-item-name'>MIN_INTEGER_32</td>
127
+ <td>=</td>
128
+ <td class='context-item-value'>-(2**31)</td>
129
+ </tr>
130
+ <tr class='top-aligned-row context-row'>
131
+ <td class='context-item-name'>MAX_INTEGER_64</td>
132
+ <td>=</td>
133
+ <td class='context-item-value'>2**63 - 1</td>
134
+ </tr>
135
+ <tr class='top-aligned-row context-row'>
136
+ <td class='context-item-name'>MIN_INTEGER_64</td>
137
+ <td>=</td>
138
+ <td class='context-item-value'>-(2**63)</td>
139
+ </tr>
140
+ <tr class='top-aligned-row context-row'>
141
+ <td class='context-item-name'>BASE64_WRAP_LINE_LENGTH</td>
142
+ <td>=</td>
143
+ <td class='context-item-value'>72</td>
144
+ </tr>
145
+ <tr class='top-aligned-row context-row'>
146
+ <td class='context-item-name'>ESCAPED_QUOTES</td>
147
+ <td>=</td>
148
+ <td class='context-item-value'>{ &quot;\&quot;&quot; =&gt; &quot;\\\&quot;&quot;, &quot;'&quot; =&gt; &quot;\\'&quot;, &quot;`&quot; =&gt; &quot;\\`&quot;, }</td>
149
+ </tr>
150
+ <tr class='top-aligned-row context-row'>
151
+ <td class='context-item-name'>ESCAPED_CHARS</td>
152
+ <td>=</td>
153
+ <td class='context-item-value'>{ &quot;\\&quot; =&gt; &quot;\\\\&quot;, &quot;\t&quot; =&gt; &quot;\\t&quot;, &quot;\r&quot; =&gt; &quot;\\r&quot;, &quot;\n&quot; =&gt; &quot;\\n&quot;, }</td>
154
+ </tr>
155
+ </table>
156
+ </div>
157
+ </div>
158
+ <div id='methods'>
159
+ <h2>Public class methods</h2>
160
+ <div class='method public-class' id='method-M000001'>
161
+ <a name='M000001'></a>
162
+ <div class='synopsis'>
163
+ <span class='name'>SdlBinary</span>
164
+ <span class='arguments'>(o)</span>
165
+ </div>
166
+ <div class='description'>
167
+ <p>
168
+ Try to coerce &#8216;o&#8217; into a <a
169
+ href="SDL4R.html#M000001">SdlBinary</a>. Raise an ArgumentError if it
170
+ fails.
171
+ </p>
172
+ </div>
173
+ <div class='source'>
174
+ <a class='source-toggle' href='#' onclick="toggleCode('M000001-source'); return false">
175
+ [show source]
176
+ </a>
177
+ <pre id='M000001-source'> <span class="ruby-comment cmt"># File lib/sdl4r/sdl_binary.rb, line 72</span>&#x000A;72: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-constant">SdlBinary</span>(<span class="ruby-identifier">o</span>)&#x000A;73: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">SdlBinary</span>&#x000A;74: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>&#x000A;75: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">String</span>&#x000A;76: <span class="ruby-keyword kw">return</span> <span class="ruby-constant">SdlBinary</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">o</span>)&#x000A;77: <span class="ruby-keyword kw">else</span>&#x000A;78: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;can't coerce argument&quot;</span>&#x000A;79: <span class="ruby-keyword kw">end</span>&#x000A;80: <span class="ruby-keyword kw">end</span></pre>
178
+ </div>
179
+ </div>
180
+ <div class='method public-class' id='method-M000004'>
181
+ <a name='M000004'></a>
182
+ <div class='synopsis'>
183
+ <span class='name'>coerce_or_fail</span>
184
+ <span class='arguments'>(o)</span>
185
+ </div>
186
+ <div class='description'>
187
+ <p>
188
+ Coerce the type to a standard SDL type or raises an ArgumentError.
189
+ </p>
190
+ <p>
191
+ Returns <tt>o</tt> if of the following classes: NilClass, String, Numeric,
192
+ Float, TrueClass, FalseClass, Date, DateTime, Time, <a
193
+ href="SDL4R/SdlTimeSpan.html">SdlTimeSpan</a>, <a
194
+ href="SDL4R.html#M000001">SdlBinary</a>,
195
+ </p>
196
+ <p>
197
+ Rationals are turned into Floats using Rational#to_f.
198
+ </p>
199
+ </div>
200
+ <div class='source'>
201
+ <a class='source-toggle' href='#' onclick="toggleCode('M000004-source'); return false">
202
+ [show source]
203
+ </a>
204
+ <pre id='M000004-source'> <span class="ruby-comment cmt"># File lib/sdl4r/sdl4r.rb, line 151</span>&#x000A;151: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">coerce_or_fail</span>(<span class="ruby-identifier">o</span>)&#x000A;152: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">o</span>&#x000A;153: &#x000A;154: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Rational</span>&#x000A;155: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">to_f</span>&#x000A;156: &#x000A;157: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">NilClass</span>,&#x000A;158: <span class="ruby-constant">String</span>,&#x000A;159: <span class="ruby-constant">Numeric</span>,&#x000A;160: <span class="ruby-constant">Float</span>,&#x000A;161: <span class="ruby-constant">TrueClass</span>,&#x000A;162: <span class="ruby-constant">FalseClass</span>,&#x000A;163: <span class="ruby-constant">Date</span>,&#x000A;164: <span class="ruby-constant">DateTime</span>,&#x000A;165: <span class="ruby-constant">Time</span>,&#x000A;166: <span class="ruby-constant">SdlTimeSpan</span>,&#x000A;167: <span class="ruby-constant">SdlBinary</span>&#x000A;168: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>&#x000A;169: &#x000A;170: <span class="ruby-keyword kw">end</span>&#x000A;171: &#x000A;172: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;#{o.class.name} is not coercible to an SDL type&quot;</span>&#x000A;173: <span class="ruby-keyword kw">end</span></pre>
205
+ </div>
206
+ </div>
207
+ <div class='method public-class' id='method-M000002'>
208
+ <a name='M000002'></a>
209
+ <div class='synopsis'>
210
+ <span class='name'>format</span>
211
+ <span class='arguments'>(o, add_quotes = true, line_prefix = &quot;&quot;, indent = &quot;\t&quot;)</span>
212
+ </div>
213
+ <div class='description'>
214
+ <p>
215
+ Creates an SDL string representation for a given object and returns it.
216
+ </p>
217
+ <table>
218
+ <tr><td valign="top"><tt>o</tt>:</td><td>the object to format
219
+
220
+ </td></tr>
221
+ <tr><td valign="top"><tt>add_quotes</tt>:</td><td>indicates whether quotes will be added to Strings and characters (true by
222
+ default)
223
+
224
+ </td></tr>
225
+ <tr><td valign="top"><tt>line_prefix</tt>:</td><td>the line prefix to use (&#8220;&#8221; by default)
226
+
227
+ </td></tr>
228
+ <tr><td valign="top"><tt>indent</tt>:</td><td>the indent string to use (&#8220;t&#8220; by default)
229
+
230
+ </td></tr>
231
+ </table>
232
+ </div>
233
+ <div class='source'>
234
+ <a class='source-toggle' href='#' onclick="toggleCode('M000002-source'); return false">
235
+ [show source]
236
+ </a>
237
+ <pre id='M000002-source'> <span class="ruby-comment cmt"># File lib/sdl4r/sdl4r.rb, line 44</span>&#x000A; 44: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">format</span>(<span class="ruby-identifier">o</span>, <span class="ruby-identifier">add_quotes</span> = <span class="ruby-keyword kw">true</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; 45: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">String</span>)&#x000A; 46: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">add_quotes</span>&#x000A; 47: <span class="ruby-identifier">o_length</span> = <span class="ruby-value">0</span>&#x000A; 48: <span class="ruby-identifier">o</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-regexp re">/./</span><span class="ruby-identifier">m</span>) { <span class="ruby-identifier">o_length</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> } <span class="ruby-comment cmt"># counts the number of chars (as opposed of bytes)</span>&#x000A; 49: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">o_length</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>&#x000A; 50: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">&quot;'&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">escape</span>(<span class="ruby-identifier">o</span>, <span class="ruby-value str">&quot;'&quot;</span>) <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;'&quot;</span>&#x000A; 51: <span class="ruby-keyword kw">else</span>&#x000A; 52: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'&quot;'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">escape</span>(<span class="ruby-identifier">o</span>, <span class="ruby-value str">'&quot;'</span>) <span class="ruby-operator">+</span> <span class="ruby-value str">'&quot;'</span>&#x000A; 53: <span class="ruby-keyword kw">end</span>&#x000A; 54: <span class="ruby-keyword kw">else</span>&#x000A; 55: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">escape</span>(<span class="ruby-identifier">o</span>)&#x000A; 56: <span class="ruby-keyword kw">end</span>&#x000A; 57: &#x000A; 58: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Bignum</span>)&#x000A; 59: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;BD&quot;</span>&#x000A; 60: &#x000A; 61: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Integer</span>)&#x000A; 62: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">MIN_INTEGER_32</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-identifier">o</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">o</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-constant">MAX_INTEGER_32</span>&#x000A; 63: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">to_s</span>&#x000A; 64: <span class="ruby-keyword kw">elsif</span> <span class="ruby-constant">MIN_INTEGER_64</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-identifier">o</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">o</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-constant">MAX_INTEGER_64</span>&#x000A; 65: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;L&quot;</span>&#x000A; 66: <span class="ruby-keyword kw">else</span>&#x000A; 67: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;BD&quot;</span>&#x000A; 68: <span class="ruby-keyword kw">end</span>&#x000A; 69: &#x000A; 70: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Float</span>)&#x000A; 71: <span class="ruby-keyword kw">return</span> (<span class="ruby-identifier">o</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;F&quot;</span>)&#x000A; 72: &#x000A; 73: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Rational</span>)&#x000A; 74: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">to_f</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;F&quot;</span>&#x000A; 75: &#x000A; 76: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">BigDecimal</span>)&#x000A; 77: <span class="ruby-identifier">s</span> = <span class="ruby-identifier">o</span>.<span class="ruby-identifier">to_s</span>(<span class="ruby-value str">'F'</span>)&#x000A; 78: <span class="ruby-identifier">s</span>.<span class="ruby-identifier">sub!</span>(<span class="ruby-regexp re">/\.0$/</span>, <span class="ruby-value str">&quot;&quot;</span>)&#x000A; 79: <span class="ruby-keyword kw">return</span> <span class="ruby-node">&quot;#{s}BD&quot;</span>&#x000A; 80: &#x000A; 81: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">nil?</span>&#x000A; 82: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">&quot;null&quot;</span>&#x000A; 83: &#x000A; 84: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">SdlBinary</span>)&#x000A; 85: <span class="ruby-identifier">encoded_o</span> = <span class="ruby-constant">Base64</span>.<span class="ruby-identifier">encode64</span>(<span class="ruby-identifier">o</span>.<span class="ruby-identifier">bytes</span>)&#x000A; 86: <span class="ruby-identifier">encoded_o</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp re">/[\r\n]/</span><span class="ruby-identifier">m</span>, <span class="ruby-value str">&quot;&quot;</span>) <span class="ruby-comment cmt"># Remove the EOL inserted every 60 chars</span>&#x000A; 87: &#x000A; 88: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">add_quotes</span>&#x000A; 89: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">encoded_o</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-constant">BASE64_WRAP_LINE_LENGTH</span>&#x000A; 90: <span class="ruby-comment cmt"># FIXME: we should a constant or some parameter instead of hardcoded spaces</span>&#x000A; 91: <span class="ruby-identifier">wrap_lines_in_ascii</span>(<span class="ruby-identifier">encoded_o</span>, <span class="ruby-constant">BASE64_WRAP_LINE_LENGTH</span>, <span class="ruby-node">&quot;#{line_prefix}#{indent}&quot;</span>)&#x000A; 92: <span class="ruby-identifier">encoded_o</span>.<span class="ruby-identifier">insert</span>(<span class="ruby-value">0</span>, <span class="ruby-node">&quot;[#{$/}&quot;</span>)&#x000A; 93: <span class="ruby-identifier">encoded_o</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{$/}#{line_prefix}]&quot;</span>&#x000A; 94: <span class="ruby-keyword kw">else</span>&#x000A; 95: <span class="ruby-identifier">encoded_o</span>.<span class="ruby-identifier">insert</span>(<span class="ruby-value">0</span>, <span class="ruby-value str">&quot;[&quot;</span>)&#x000A; 96: <span class="ruby-identifier">encoded_o</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;]&quot;</span>&#x000A; 97: <span class="ruby-keyword kw">end</span>&#x000A; 98: <span class="ruby-keyword kw">end</span>&#x000A; 99: &#x000A;100: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">encoded_o</span>&#x000A;101: &#x000A;102: <span class="ruby-comment cmt"># Below, we use &quot;#{o.year}&quot; instead of &quot;%Y&quot; because &quot;%Y&quot; always emit 4 chars at least even if</span>&#x000A;103: <span class="ruby-comment cmt"># the date is before 1000.</span>&#x000A;104: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">DateTime</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Time</span>)&#x000A;105: <span class="ruby-identifier">milliseconds</span> = <span class="ruby-identifier">get_datetime_milliseconds</span>(<span class="ruby-identifier">o</span>)&#x000A;106: &#x000A;107: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">milliseconds</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>&#x000A;108: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">zone</span>&#x000A;109: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-node">&quot;#{o.year}/%m/%d %H:%M:%S%Z&quot;</span>)&#x000A;110: <span class="ruby-keyword kw">else</span>&#x000A;111: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-node">&quot;#{o.year}/%m/%d %H:%M:%S&quot;</span>)&#x000A;112: <span class="ruby-keyword kw">end</span>&#x000A;113: <span class="ruby-keyword kw">else</span>&#x000A;114: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">zone</span>&#x000A;115: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-node">&quot;#{o.year}/%m/%d %H:%M:%S.&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">milliseconds</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">ljust</span>(<span class="ruby-value">3</span>, <span class="ruby-value str">'0'</span>) <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;%Z&quot;</span>)&#x000A;116: <span class="ruby-keyword kw">else</span>&#x000A;117: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-node">&quot;#{o.year}/%m/%d %H:%M:%S.&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">milliseconds</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">ljust</span>(<span class="ruby-value">3</span>, <span class="ruby-value str">'0'</span>))&#x000A;118: <span class="ruby-keyword kw">end</span>&#x000A;119: <span class="ruby-keyword kw">end</span>&#x000A;120: &#x000A;121: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Date</span>)&#x000A;122: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-node">&quot;#{o.year}/%m/%d&quot;</span>)&#x000A;123: &#x000A;124: <span class="ruby-keyword kw">else</span>&#x000A;125: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">to_s</span>&#x000A;126: <span class="ruby-keyword kw">end</span>&#x000A;127: <span class="ruby-keyword kw">end</span></pre>
238
+ </div>
239
+ </div>
240
+ <div class='method public-class' id='method-M000003'>
241
+ <a name='M000003'></a>
242
+ <div class='synopsis'>
243
+ <span class='name'>new_date_time</span>
244
+ <span class='arguments'>(year, month, day, hour, min, sec, time_zone_offset)</span>
245
+ </div>
246
+ <div class='description'>
247
+ <p>
248
+ Creates and returns the object representing a datetime (DateTime in the
249
+ default implementation). This method is, by default, called by the <a
250
+ href="SDL4R/Parser.html">Parser</a> class. It could be overriden as follows
251
+ in order to get Time instances from all the <a href="SDL4R.html">SDL4R</a>
252
+ parsers.
253
+ </p>
254
+ <pre>module SDL4R&#x000A; def self.new_date_time(year, month, day, hour, min, sec, time_zone_offset)&#x000A; Time.utc(year, month, day, hour, min, sec)&#x000A; end&#x000A;end</pre>
255
+ </div>
256
+ <div class='source'>
257
+ <a class='source-toggle' href='#' onclick="toggleCode('M000003-source'); return false">
258
+ [show source]
259
+ </a>
260
+ <pre id='M000003-source'> <span class="ruby-comment cmt"># File lib/sdl4r/sdl4r.rb, line 139</span>&#x000A;139: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">new_date_time</span>(<span class="ruby-identifier">year</span>, <span class="ruby-identifier">month</span>, <span class="ruby-identifier">day</span>, <span class="ruby-identifier">hour</span>, <span class="ruby-identifier">min</span>, <span class="ruby-identifier">sec</span>, <span class="ruby-identifier">time_zone_offset</span>)&#x000A;140: <span class="ruby-constant">DateTime</span>.<span class="ruby-identifier">civil</span>(<span class="ruby-identifier">year</span>, <span class="ruby-identifier">month</span>, <span class="ruby-identifier">day</span>, <span class="ruby-identifier">hour</span>, <span class="ruby-identifier">min</span>, <span class="ruby-identifier">sec</span>, <span class="ruby-identifier">time_zone_offset</span>)&#x000A;141: <span class="ruby-keyword kw">end</span></pre>
261
+ </div>
262
+ </div>
263
+ <div class='method public-class' id='method-M000006'>
264
+ <a name='M000006'></a>
265
+ <div class='synopsis'>
266
+ <span class='name'>read</span>
267
+ <span class='arguments'>(input)</span>
268
+ </div>
269
+ <div class='description'>
270
+ <p>
271
+ Creates and returns a tag named &#8220;root&#8221; and add all the tags
272
+ specified in the given <tt>input</tt>.
273
+ </p>
274
+ <table>
275
+ <tr><td valign="top"><tt>input</tt>:</td><td>String, IO, Pathname or URI.
276
+
277
+ </td></tr>
278
+ </table>
279
+ <pre>root = SDL4R::read(&lt;&lt;EOF&#x000A;planets {&#x000A; earth area_km2=510900000&#x000A; mars&#x000A;}&#x000A;EOF&#x000A;)&#x000A;&#x000A;root = SDL4R::read(Pathname.new(&quot;my_dir/my_file.sdl&quot;))&#x000A;&#x000A;IO.open(&quot;my_dir/my_file.sdl&quot;, &quot;r&quot;) { |io|&#x000A; root = SDL4R::read(io)&#x000A;}&#x000A;&#x000A;root = SDL4R::read(URI.new(&quot;http://my_site/my_file.sdl&quot;))</pre>
280
+ </div>
281
+ <div class='source'>
282
+ <a class='source-toggle' href='#' onclick="toggleCode('M000006-source'); return false">
283
+ [show source]
284
+ </a>
285
+ <pre id='M000006-source'> <span class="ruby-comment cmt"># File lib/sdl4r/sdl4r.rb, line 232</span>&#x000A;232: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">input</span>)&#x000A;233: <span class="ruby-constant">Tag</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">&quot;root&quot;</span>).<span class="ruby-identifier">read</span>(<span class="ruby-identifier">input</span>)&#x000A;234: <span class="ruby-keyword kw">end</span></pre>
286
+ </div>
287
+ </div>
288
+ <div class='method public-class' id='method-M000009'>
289
+ <a name='M000009'></a>
290
+ <div class='synopsis'>
291
+ <span class='name'>to_attribute_map</span>
292
+ <span class='arguments'>(s)</span>
293
+ </div>
294
+ <div class='description'>
295
+ <p>
296
+ Parse a string representing the attributes portion of an SDL tag and return
297
+ the results as a map.
298
+ </p>
299
+ <p>
300
+ Example
301
+ </p>
302
+ <pre>hash = SDL4R.to_attribute_hash(&quot;value=1 debugging=on time=12:24:01&quot;);&#x000A;&#x000A;# { &quot;value&quot; =&gt; 1, &quot;debugging&quot; =&gt; true, &quot;time&quot; =&gt; SdlTimeSpan.new(12, 24, 01) }</pre>
303
+ </div>
304
+ <div class='source'>
305
+ <a class='source-toggle' href='#' onclick="toggleCode('M000009-source'); return false">
306
+ [show source]
307
+ </a>
308
+ <pre id='M000009-source'> <span class="ruby-comment cmt"># File lib/sdl4r/sdl4r.rb, line 270</span>&#x000A;270: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">to_attribute_map</span>(<span class="ruby-identifier">s</span>)&#x000A;271: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;'s' cannot be null&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">s</span>.<span class="ruby-identifier">nil?</span>&#x000A;272: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">read</span>(<span class="ruby-value str">&quot;atts &quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">s</span>).<span class="ruby-identifier">child</span>.<span class="ruby-identifier">attributes</span>&#x000A;273: <span class="ruby-keyword kw">end</span></pre>
309
+ </div>
310
+ </div>
311
+ <div class='method public-class' id='method-M000007'>
312
+ <a name='M000007'></a>
313
+ <div class='synopsis'>
314
+ <span class='name'>to_value</span>
315
+ <span class='arguments'>(s)</span>
316
+ </div>
317
+ <div class='description'>
318
+ <p>
319
+ Parses and returns the value corresponding with the specified SDL literal.
320
+ </p>
321
+ <pre>SDL4R.to_value(&quot;\&quot;abcd\&quot;&quot;) # =&gt; &quot;abcd&quot;&#x000A;SDL4R.to_value(&quot;1&quot;) # =&gt; 1&#x000A;SDL4R.to_value(&quot;null&quot;) # =&gt; nil</pre>
322
+ </div>
323
+ <div class='source'>
324
+ <a class='source-toggle' href='#' onclick="toggleCode('M000007-source'); return false">
325
+ [show source]
326
+ </a>
327
+ <pre id='M000007-source'> <span class="ruby-comment cmt"># File lib/sdl4r/sdl4r.rb, line 242</span>&#x000A;242: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">to_value</span>(<span class="ruby-identifier">s</span>)&#x000A;243: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;'s' cannot be null&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">s</span>.<span class="ruby-identifier">nil?</span>&#x000A;244: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">read</span>(<span class="ruby-identifier">s</span>).<span class="ruby-identifier">child</span>.<span class="ruby-identifier">value</span>&#x000A;245: <span class="ruby-keyword kw">end</span></pre>
328
+ </div>
329
+ </div>
330
+ <div class='method public-class' id='method-M000008'>
331
+ <a name='M000008'></a>
332
+ <div class='synopsis'>
333
+ <span class='name'>to_value_array</span>
334
+ <span class='arguments'>(s)</span>
335
+ </div>
336
+ <div class='description'>
337
+ <p>
338
+ Parse the string of values and return a list. The string is handled as if
339
+ it is the values portion of an SDL tag.
340
+ </p>
341
+ <p>
342
+ Example
343
+ </p>
344
+ <pre>array = SDL4R.to_value_array(&quot;1 true 12:24:01&quot;)</pre>
345
+ <p>
346
+ Will return an int, a boolean, and a time span.
347
+ </p>
348
+ </div>
349
+ <div class='source'>
350
+ <a class='source-toggle' href='#' onclick="toggleCode('M000008-source'); return false">
351
+ [show source]
352
+ </a>
353
+ <pre id='M000008-source'> <span class="ruby-comment cmt"># File lib/sdl4r/sdl4r.rb, line 256</span>&#x000A;256: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">to_value_array</span>(<span class="ruby-identifier">s</span>)&#x000A;257: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;'s' cannot be null&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">s</span>.<span class="ruby-identifier">nil?</span>&#x000A;258: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">read</span>(<span class="ruby-identifier">s</span>).<span class="ruby-identifier">child</span>.<span class="ruby-identifier">values</span>&#x000A;259: <span class="ruby-keyword kw">end</span></pre>
354
+ </div>
355
+ </div>
356
+ <div class='method public-class' id='method-M000005'>
357
+ <a name='M000005'></a>
358
+ <div class='synopsis'>
359
+ <span class='name'>validate_identifier</span>
360
+ <span class='arguments'>(identifier)</span>
361
+ </div>
362
+ <div class='description'>
363
+ <p>
364
+ Validates an SDL identifier String. SDL Identifiers must start with a
365
+ Unicode letter or underscore (_) and contain only unicode letters, digits,
366
+ underscores (_), dashes(-) and periods (.).
367
+ </p>
368
+ <h2>Raises</h2>
369
+ <p>
370
+ ArgumentError if the identifier is not legal
371
+ </p>
372
+ <p>
373
+ TODO: support UTF-8 identifiers
374
+ </p>
375
+ </div>
376
+ <div class='source'>
377
+ <a class='source-toggle' href='#' onclick="toggleCode('M000005-source'); return false">
378
+ [show source]
379
+ </a>
380
+ <pre id='M000005-source'> <span class="ruby-comment cmt"># File lib/sdl4r/sdl4r.rb, line 184</span>&#x000A;184: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">validate_identifier</span>(<span class="ruby-identifier">identifier</span>)&#x000A;185: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">identifier</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">identifier</span>.<span class="ruby-identifier">empty?</span>&#x000A;186: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;SDL identifiers cannot be null or empty.&quot;</span>&#x000A;187: <span class="ruby-keyword kw">end</span>&#x000A;188: &#x000A;189: <span class="ruby-comment cmt"># in Java, was if(!Character.isJavaIdentifierStart(identifier.charAt(0)))</span>&#x000A;190: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">identifier</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^[a-zA-Z_]/</span>&#x000A;191: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>,&#x000A;192: <span class="ruby-value str">&quot;'&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">identifier</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">0</span>] <span class="ruby-operator">+</span>&#x000A;193: <span class="ruby-value str">&quot;' is not a legal first character for an SDL identifier. &quot;</span> <span class="ruby-operator">+</span>&#x000A;194: <span class="ruby-value str">&quot;SDL Identifiers must start with a unicode letter or &quot;</span> <span class="ruby-operator">+</span>&#x000A;195: <span class="ruby-value str">&quot;an underscore (_).&quot;</span>&#x000A;196: <span class="ruby-keyword kw">end</span>&#x000A;197: &#x000A;198: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">identifier</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">identifier</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^[a-zA-Z_][a-zA-Z_0-9\-\.]*$/</span>&#x000A;199: <span class="ruby-keyword kw">for</span> <span class="ruby-identifier">i</span> <span class="ruby-keyword kw">in</span> <span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-identifier">identifier</span>.<span class="ruby-identifier">length</span>&#x000A;200: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">identifier</span>[<span class="ruby-identifier">i</span><span class="ruby-operator">..</span><span class="ruby-identifier">i</span>] <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^[a-zA-Z_0-9\-]$/</span>&#x000A;201: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>,&#x000A;202: <span class="ruby-value str">&quot;'&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">identifier</span>[<span class="ruby-identifier">i</span><span class="ruby-operator">..</span><span class="ruby-identifier">i</span>] <span class="ruby-operator">+</span> &#x000A;203: <span class="ruby-value str">&quot;' is not a legal character for an SDL identifier. &quot;</span> <span class="ruby-operator">+</span>&#x000A;204: <span class="ruby-value str">&quot;SDL Identifiers must start with a unicode letter or &quot;</span> <span class="ruby-operator">+</span>&#x000A;205: <span class="ruby-value str">&quot;underscore (_) followed by 0 or more unicode &quot;</span> <span class="ruby-operator">+</span>&#x000A;206: <span class="ruby-value str">&quot;letters, digits, underscores (_), or dashes (-)&quot;</span>&#x000A;207: <span class="ruby-keyword kw">end</span>&#x000A;208: <span class="ruby-keyword kw">end</span>&#x000A;209: <span class="ruby-keyword kw">end</span>&#x000A;210: <span class="ruby-keyword kw">end</span></pre>
381
+ </div>
382
+ </div>
383
+ </div>
569
384
  </div>
570
385
  </div>
571
386
  </div>
572
-
573
- <div id="method-M000008" class="method-detail">
574
- <a name="M000008"></a>
575
-
576
- <div class="method-heading">
577
- <a href="#M000008" class="method-signature">
578
- <span class="method-name">to_value_array</span><span class="method-args">(s)</span>
579
- </a>
580
- </div>
581
-
582
- <div class="method-description">
583
- <p>
584
- Parse the string of values and return a list. The string is handled as if
585
- it is the values portion of an SDL tag.
586
- </p>
587
- <p>
588
- Example
589
- </p>
590
- <pre>
591
- array = SDL4R.to_value_array(&quot;1 true 12:24:01&quot;)
592
- </pre>
593
- <p>
594
- Will return an int, a boolean, and a time span.
595
- </p>
596
- <p><a class="source-toggle" href="#"
597
- onclick="toggleCode('M000008-source');return false;">[Source]</a></p>
598
- <div class="method-source-code" id="M000008-source">
599
- <pre>
600
- <span class="ruby-comment cmt"># File lib/sdl4r/sdl4r.rb, line 256</span>
601
- <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">to_value_array</span>(<span class="ruby-identifier">s</span>)
602
- <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;'s' cannot be null&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">s</span>.<span class="ruby-identifier">nil?</span>
603
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">read</span>(<span class="ruby-identifier">s</span>).<span class="ruby-identifier">child</span>.<span class="ruby-identifier">values</span>
604
- <span class="ruby-keyword kw">end</span>
605
- </pre>
606
- </div>
607
- </div>
608
- </div>
609
-
610
- <div id="method-M000005" class="method-detail">
611
- <a name="M000005"></a>
612
-
613
- <div class="method-heading">
614
- <a href="#M000005" class="method-signature">
615
- <span class="method-name">validate_identifier</span><span class="method-args">(identifier)</span>
616
- </a>
617
- </div>
618
-
619
- <div class="method-description">
620
- <p>
621
- Validates an SDL identifier String. SDL Identifiers must start with a
622
- Unicode letter or underscore (_) and contain only unicode letters, digits,
623
- underscores (_), dashes(-) and periods (.).
624
- </p>
625
- <h2>Raises</h2>
626
- <p>
627
- ArgumentError if the identifier is not legal
628
- </p>
629
- <p>
630
- TODO: support UTF-8 identifiers
631
- </p>
632
- <p><a class="source-toggle" href="#"
633
- onclick="toggleCode('M000005-source');return false;">[Source]</a></p>
634
- <div class="method-source-code" id="M000005-source">
635
- <pre>
636
- <span class="ruby-comment cmt"># File lib/sdl4r/sdl4r.rb, line 184</span>
637
- <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">validate_identifier</span>(<span class="ruby-identifier">identifier</span>)
638
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">identifier</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">identifier</span>.<span class="ruby-identifier">empty?</span>
639
- <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;SDL identifiers cannot be null or empty.&quot;</span>
640
- <span class="ruby-keyword kw">end</span>
641
-
642
- <span class="ruby-comment cmt"># in Java, was if(!Character.isJavaIdentifierStart(identifier.charAt(0)))</span>
643
- <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">identifier</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^[a-zA-Z_]/</span>
644
- <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>,
645
- <span class="ruby-value str">&quot;'&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">identifier</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">0</span>] <span class="ruby-operator">+</span>
646
- <span class="ruby-value str">&quot;' is not a legal first character for an SDL identifier. &quot;</span> <span class="ruby-operator">+</span>
647
- <span class="ruby-value str">&quot;SDL Identifiers must start with a unicode letter or &quot;</span> <span class="ruby-operator">+</span>
648
- <span class="ruby-value str">&quot;an underscore (_).&quot;</span>
649
- <span class="ruby-keyword kw">end</span>
650
-
651
- <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">identifier</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">identifier</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^[a-zA-Z_][a-zA-Z_0-9\-\.]*$/</span>
652
- <span class="ruby-keyword kw">for</span> <span class="ruby-identifier">i</span> <span class="ruby-keyword kw">in</span> <span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-identifier">identifier</span>.<span class="ruby-identifier">length</span>
653
- <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">identifier</span>[<span class="ruby-identifier">i</span><span class="ruby-operator">..</span><span class="ruby-identifier">i</span>] <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^[a-zA-Z_0-9\-]$/</span>
654
- <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>,
655
- <span class="ruby-value str">&quot;'&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">identifier</span>[<span class="ruby-identifier">i</span><span class="ruby-operator">..</span><span class="ruby-identifier">i</span>] <span class="ruby-operator">+</span>
656
- <span class="ruby-value str">&quot;' is not a legal character for an SDL identifier. &quot;</span> <span class="ruby-operator">+</span>
657
- <span class="ruby-value str">&quot;SDL Identifiers must start with a unicode letter or &quot;</span> <span class="ruby-operator">+</span>
658
- <span class="ruby-value str">&quot;underscore (_) followed by 0 or more unicode &quot;</span> <span class="ruby-operator">+</span>
659
- <span class="ruby-value str">&quot;letters, digits, underscores (_), or dashes (-)&quot;</span>
660
- <span class="ruby-keyword kw">end</span>
661
- <span class="ruby-keyword kw">end</span>
662
- <span class="ruby-keyword kw">end</span>
663
- <span class="ruby-keyword kw">end</span>
664
- </pre>
665
- </div>
666
- </div>
667
- </div>
668
-
669
-
387
+ <div id='footer-push'></div>
388
+ </div>
389
+ <div id='footer'>
390
+ <a href="http://github.com/mislav/hanna/tree/master"><strong>Hanna</strong> RDoc template</a>
670
391
  </div>
671
-
672
-
673
- </div>
674
-
675
-
676
- <div id="validator-badges">
677
- <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
678
- </div>
679
-
680
- </body>
681
- </html>
392
+ </body>
393
+ </html>