sdl4r 0.9.7 → 0.9.8

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,6 +1,16 @@
1
- == v0.9.8 (建設中)
1
+ == v0.9.9 (建設中)
2
+ == v0.9.8 (16-sep-2010)
2
3
 
3
- == v0.9.7 (26-auf-2010)
4
+ === Major changes:
5
+
6
+ * Bug fix: dollar ($) is now supported as a valid identifier character.
7
+
8
+ === Minor changes:
9
+
10
+ * New constants: SDL4R#ANONYMOUS_TAG_NAME and SDL4R#ROOT_TAG_NAME.
11
+ * Bug fixes related to the error handling in the parser.
12
+
13
+ == v0.9.7 (26-aug-2010)
4
14
 
5
15
  === Major changes:
6
16
 
data/README CHANGED
@@ -360,6 +360,14 @@ Alternatively you can use the following options when launching the Ruby interpre
360
360
 
361
361
  /path/to/ruby -Ku -rjcode
362
362
 
363
+ == Ruby Support
364
+
365
+ SDL4R has been tested on:
366
+
367
+ * Ruby 1.8.7
368
+ * Ruby 1.9.1
369
+ * Ruby 1.9.2
370
+ * JRuby 1.5.1
363
371
 
364
372
  == License
365
373
 
data/Rakefile CHANGED
@@ -5,11 +5,11 @@ require 'rake/gempackagetask'
5
5
  require 'rake/packagetask'
6
6
  require 'rubygems'
7
7
 
8
- if Gem.required_location("hanna", "hanna/rdoctask.rb")
9
- puts "using Hanna RDoc template"
8
+ # Use Hanna as the documentation template if installated,
9
+ # otherwise generate with the default RDoc generator.
10
+ if USING_HANNA = Gem.required_location("hanna", "hanna/rdoctask.rb")
10
11
  require 'hanna/rdoctask'
11
12
  else
12
- puts "using standard RDoc template"
13
13
  require 'rake/rdoctask'
14
14
  end
15
15
 
@@ -17,7 +17,7 @@ spec = Gem::Specification.new do |s|
17
17
  s.platform = Gem::Platform::RUBY
18
18
  s.summary = "Simple Declarative Language for Ruby library"
19
19
  s.name = 'sdl4r'
20
- s.version = '0.9.7'
20
+ s.version = '0.9.8'
21
21
  s.requirements << 'none'
22
22
  s.require_path = 'lib'
23
23
  s.authors = ['Philippe Vosges', 'Daniel Leuck']
@@ -35,23 +35,26 @@ spec = Gem::Specification.new do |s|
35
35
  EOF
36
36
  end
37
37
 
38
+ Rake::GemPackageTask.new(spec) do |pkg|
39
+ pkg.need_zip = true
40
+ pkg.need_tar = true
41
+ end
42
+
43
+ # FIXME The package task tries to package twice and it shouldn't:
44
+ # - once with the provided command (i.e. 7zip if zip is not available)
45
+ # - once with "zip" disregarding the configuration (that attempt fails if you do not have the
46
+ # "zip" command)
38
47
  Rake::PackageTask.new(spec.name, spec.version) do |p|
39
48
  p.need_zip = true
40
49
  p.need_tar = false
41
50
  p.need_tar_gz = false
42
51
  p.need_tar_bz2 = false
43
- #p.package_files.include("lib/sdl4r/**/*.rb")
44
52
 
45
53
  # If "zip" is not available, we try 7-zip.
46
54
  system("zip")
47
55
  p.zip_command = "7z a -tzip" if $?.exitstatus == 127
48
56
  end
49
57
 
50
- Rake::GemPackageTask.new(spec) do |pkg|
51
- pkg.need_zip = true
52
- pkg.need_tar = true
53
- end
54
-
55
58
  Rake::RDocTask.new do |rd|
56
59
  files = ['README', 'LICENSE', 'CHANGELOG', 'lib/**/*.rb', 'doc/**/*.rdoc', 'test/**/*.rb']
57
60
  rd.main = 'README'
@@ -64,29 +67,16 @@ Rake::RDocTask.new do |rd|
64
67
  rd.options << '--inline-source'
65
68
  end
66
69
 
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
85
- end
86
- gen_rubyforge.comment = "Includes the CHANGELOG into the Rubyforge front page"
87
-
88
70
  Rake::TestTask.new do |t|
89
- t.libs << "lib"
90
71
  t.test_files = FileList['test/**/*test.rb']
91
72
  t.verbose = true
92
73
  end
74
+
75
+ # Generates the SDL4R site with Nanoc.
76
+ nanoc_compile = task :nanoc_compile do
77
+ puts "The Nanoc tasks might work better from the command line." if ENV["NB_EXEC_EXTEXECUTION_PROCESS_UUID"]
78
+ Dir.chdir("nanoc") {
79
+ system("nanoc", "compile")
80
+ }
81
+ end
82
+ nanoc_compile.comment = "Builds the site with Nanoc"
data/TODO CHANGED
@@ -1,6 +1,4 @@
1
- [x] Is Base64 really compatible with the format defined in the Java version ?
2
- ==> Seems so after having implemented more of the standard tests.
3
- [ ] Add more unit tests
1
+ [x] Add more unit tests
4
2
  [x] Attribute tests
5
3
  [x] Date tests
6
4
  [x] Date + time test
@@ -10,9 +8,9 @@
10
8
  [x] Sub tags tests
11
9
  [x] "null" value test
12
10
  [x] Comment tests
13
- [ ] Bad syntax tests
11
+ [x] Bad syntax tests
14
12
  [ ] Test write (unit tests)
15
- [ ] Dates
13
+ [x] Dates
16
14
  [ ] Numbers
17
15
  [A] Use YARD in order to generate documentation ?
18
16
  ==> alternatively, I tried to generate some RDoc templates but none worked in Rake...
@@ -39,33 +37,23 @@
39
37
  [ ] Allow unicode characters in identifiers.
40
38
  [ ] FUTURE: It might be useful to allow people to replace the standard types by their own. This
41
39
  could be useful for dates or numbers, for instance.
42
- [N] To install a gem in the Netbeans gems repository, it needs to run as an administrator.
43
- Otherwise, it fails silently.
44
40
  [ ] FUTURE: Consider being able to read text files that are not UTF-8(?)
45
41
  [ ] BUG: the report on the line no in errors is off by 1 (at least in some cases)
46
- [x] Return copies or original arrays in Tag?
47
- ==> we return the implementation Arrays or Hashes (or whatever) for efficiency.
48
- However, we ask the users not to assume anything as we might protect the returned objects in
49
- the future.
50
42
  [ ] Tag.hash: the implementation is not very efficient.
51
43
  ==> Difficult to make better and still simple
52
44
  ==> Maybe possible when it's frozen.
53
45
  [ ] FUTURE: xpath, ypath ==> sdlpath(?)
54
46
  [ ] FUTURE: evenemential parsing(?)
55
- [ ] FUTURE: add a way to insert a tag after or before another(?)
47
+ [ ] FUTURE: add a way to insert a tag after or before another or at some index(?)
56
48
  [ ] FUTURE: allow some way of generating YAML(?)
57
49
  [ ] FUTURE: allow to turn a YAML structure into a SDL one(?)
58
50
  [ ] BUG: "rake package" tries to archive the contents twice: once with the command that I configure
59
51
  in Rakefile, once with a zip command that can't work on my machine (zip is not installed). Why?
60
52
  At least, the first archive is created and seems correct.
61
- [ ] FUTURE: Would we need a "write" method in SDL4R?
62
- [x] Add tests and release a RC or beta version
63
- [x] Make the methods of Tag that take a block have a better yield doc/completion
64
- ==> I added :yields: RDoc directives, which doesn't look like it's helping but I guess that's
65
- all I can do for now.
53
+ [A] FUTURE: Would we need a "write" method in SDL4R?
54
+ ==> Na, there's already Tag.write(), I guess.
66
55
  [N] Never call a class "Test" => it can easily conflict with the "Test" module of Test::Unit and
67
56
  then, it becomes quite difficult to understand why.
68
- [ ] Input relevant URLs on http://rubygems.org
69
57
  [x] What prevents from doing the following?
70
58
  tag.values << IO.new("toto.txt")
71
59
  ==> It doesn't break the behavior as long as the value type is OK. Even if it is not allowed,
@@ -76,37 +64,89 @@
76
64
  (for the time being).
77
65
  [x] If there is any success, maybe create/recreate the Rubyforge site for the support.
78
66
  [ ] Should we allow to create a Tag without a name (== "content") for anonymous Tags?
79
- [x] It would be cool to be able to write this:
80
-
81
- Tag.new "toto" do |tag|
82
- tag << 123
83
- end
84
-
85
- ==> We can detect whether there is an argument or not.
86
-
87
- Note that instance_eval() doesn't allow to pass parameters right now.
88
- [ ] Add latest doc access to RubyForge:
67
+ [x] Add latest doc access to RubyForge:
89
68
  ==> Rake task?
90
69
 
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:
70
+ [ ] ONWAIT: Implement the [] operator in order to access attributes:
103
71
  ["attr"] <=> attribute("attr")
104
72
  ["ns:attr"] <=> attribute("ns", "attr") (should we allow this?)
105
73
  ["ns", "attr"] <=> attribute("ns", "attr")
106
74
  Should we allow attribute("ns:attr")?
75
+ ==> Mmmm, but it could also mean "get child with that name". Let's wait.
107
76
  [ ] IDEA: marshaller? easy object <=> SDL read/write?
108
77
  [ ] Check the coverage and make the tests better.
78
+ ==> Might be better to use some other tool than
109
79
  [ ] IDEA: add an option to the XML export allowing to write anonymous nodes as XML tag content?
110
80
  [ ] IDEA: add an option to the XML export allowing to export without formatting?
111
81
  [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)
82
+ [ ] BUG: the rake task 'gen_rubyforge' doesn't work under 1.9 (only 1.8.7)
83
+ ==> when Hanna is not installed the CHANGELOG HTML file must have a different name.
84
+ [ ] Look into performances, compared to YAML or XML parsers
85
+ [ ] Future: SDL + ERB to have dynamic config templates
86
+ see http://github.com/binarylogic/settingslogic
87
+ [ ] Future: object dump/load as YAML does
88
+ - add to_sdl(4r) to Object
89
+
90
+ - for each object:
91
+ - if it is an array => export values
92
+ - what if one of the values is a basic object? scan once first? series of anonymous tags with one value?
93
+ - if it is a hash?
94
+ - if String, dates etc => values
95
+ - otherwise create subtags
96
+ - for each variable
97
+ - create an attribute if simple value
98
+ - create a subtag otherwise
99
+ - what about fields that we don't want to serialize?
100
+ - what about references? We would need something like:
101
+ product _oid="&243" {
102
+ producer _oid="*189"
103
+ }
104
+ or
105
+ product &243 price=345.99 {
106
+ producer *189
107
+ code "123732u98r456"
108
+ }
109
+ - use Class.allocate() to have a blank object on deserialization.
110
+
111
+ [ ] Have to_string implement options
112
+ [x] Put the docs online
113
+ [ ] Document Rakefile and dependencies
114
+ [x] BUG: in Ruby 1.9.2
115
+ <internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- test/sdl4r/../../lib
116
+ /sdl4r/tag (LoadError)
117
+ from <internal:lib/rubygems/custom_require>:29:in `require'
118
+ from test/sdl4r/parser_test.rb:27:in `<module:SDL4R>'
119
+ from test/sdl4r/parser_test.rb:22:in `<top (required)>'
120
+ from C:/Ruby192/lib/ruby/1.9.1/rake/rake_test_loader.rb:5:in `load'
121
+ from C:/Ruby192/lib/ruby/1.9.1/rake/rake_test_loader.rb:5:in `block in <main>'
122
+ from C:/Ruby192/lib/ruby/1.9.1/rake/rake_test_loader.rb:5:in `each'
123
+ from C:/Ruby192/lib/ruby/1.9.1/rake/rake_test_loader.rb:5:in `<main>'
124
+ ==> This is a problem triggered by the work-around I used in order to run tests individually in
125
+ Netbeans. Removed the work-around.
126
+ [x] Generate the static site with something like Jekyll (http://wiki.github.com/mojombo/jekyll)
127
+ ==> Done with Nanoc
128
+ [x] Add a page for the SyntaxHighlighter Brush (plus a test page).
129
+ [x] Add a contact page or paragraph
130
+ [x] Add a readme page (generated from the rdoc readme)
131
+ ==> We link to the RDoc for the time being.
132
+ ====================================================================================================
133
+ [x] Add a line about the support of of 1.9 in README (1.9.1 and 1.9.2)
134
+ [ ] Get the version from some common (Rakefile?) place in Nanoc
135
+ [ ] Add a modification date to site pages?
136
+ [x] Clean up the Rakefile and see whether that Rubyforge upload task is necessary.
137
+ ==> Easier to upload the site manually: I removed the code.
138
+ [ ] Future (not necessarily for Ruby): SDL parser ==> SAX
139
+ [ ] Optimization: cache strings in order not to duplicate them (especially tag names?)
140
+ [x] Add a constant for "content".
141
+ ==> ANONYMOUS_TAG_NAME
142
+ ==> Also added ROOT_TAG_NAME
143
+ [x] Fixed missing Parser.parse_error() error.
144
+ [ ] BUG: this is parsed
145
+ vegetable {
146
+ }
147
+ while this is not
148
+ vegetable {}
149
+
150
+ ==> It seems this is not supported by the Java parser. Is it invalid/valid syntax?
151
+ It will be in the next version of SDL.
152
+ [x] BUG: '$' is a valid identifier character and it is not accepted.
@@ -48,18 +48,18 @@
48
48
  <li class='other'>
49
49
  <a href="../files/lib/sdl4r/parser/reader_rb.html">lib/sdl4r/parser/reader.rb</a>
50
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
51
  <li class='other'>
55
52
  <a href="../files/lib/sdl4r/parser/token_rb.html">lib/sdl4r/parser/token.rb</a>
56
53
  </li>
57
54
  <li class='other'>
58
- <a href="../files/lib/sdl4r/sdl4r_rb.html">lib/sdl4r/sdl4r.rb</a>
55
+ <a href="../files/lib/sdl4r/parser/tokenizer_rb.html">lib/sdl4r/parser/tokenizer.rb</a>
59
56
  </li>
60
57
  <li class='other'>
61
58
  <a href="../files/lib/sdl4r/parser/time_span_with_zone_rb.html">lib/sdl4r/parser/time_span_with_zone.rb</a>
62
59
  </li>
60
+ <li class='other'>
61
+ <a href="../files/lib/sdl4r/sdl4r_rb.html">lib/sdl4r/sdl4r.rb</a>
62
+ </li>
63
63
  <li class='other'>
64
64
  <a href="../files/test/sdl4r/parser_test_rb.html">test/sdl4r/parser_test.rb</a>
65
65
  </li>
@@ -83,7 +83,12 @@
83
83
  <hr size="1"></hr><p>
84
84
  Gathers utility methods.
85
85
  </p>
86
- <hr size="1"></hr>
86
+ <hr size="1"></hr><p>
87
+ Work-around a bug in NetBeans (<a
88
+ href="http://netbeans.org/bugzilla/show_bug.cgi?id=188653">netbeans.org/bugzilla/show_bug.cgi?id=188653</a>)
89
+ $:[0] = File.join(File.dirname(<em>FILE</em>),&#8217;../../lib&#8217;) if
90
+ ENV[&#8220;NB_EXEC_EXTEXECUTION_PROCESS_UUID&#8220;]
91
+ </p>
87
92
  </div>
88
93
  <div id='method-list'>
89
94
  <h2>Methods</h2>
@@ -142,6 +147,16 @@
142
147
  <td>=</td>
143
148
  <td class='context-item-value'>72</td>
144
149
  </tr>
150
+ <tr class='top-aligned-row context-row'>
151
+ <td class='context-item-name'>ANONYMOUS_TAG_NAME</td>
152
+ <td>=</td>
153
+ <td class='context-item-value'>&quot;content&quot;</td>
154
+ </tr>
155
+ <tr class='top-aligned-row context-row'>
156
+ <td class='context-item-name'>ROOT_TAG_NAME</td>
157
+ <td>=</td>
158
+ <td class='context-item-value'>&quot;root&quot;</td>
159
+ </tr>
145
160
  <tr class='top-aligned-row context-row'>
146
161
  <td class='context-item-name'>ESCAPED_QUOTES</td>
147
162
  <td>=</td>
@@ -201,7 +216,7 @@
201
216
  <a class='source-toggle' href='#' onclick="toggleCode('M000004-source'); return false">
202
217
  [show source]
203
218
  </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>
219
+ <pre id='M000004-source'> <span class="ruby-comment cmt"># File lib/sdl4r/sdl4r.rb, line 156</span>&#x000A;156: <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;157: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">o</span>&#x000A;158: &#x000A;159: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Rational</span>&#x000A;160: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">to_f</span>&#x000A;161: &#x000A;162: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">NilClass</span>,&#x000A;163: <span class="ruby-constant">String</span>,&#x000A;164: <span class="ruby-constant">Numeric</span>,&#x000A;165: <span class="ruby-constant">Float</span>,&#x000A;166: <span class="ruby-constant">TrueClass</span>,&#x000A;167: <span class="ruby-constant">FalseClass</span>,&#x000A;168: <span class="ruby-constant">Date</span>,&#x000A;169: <span class="ruby-constant">DateTime</span>,&#x000A;170: <span class="ruby-constant">Time</span>,&#x000A;171: <span class="ruby-constant">SdlTimeSpan</span>,&#x000A;172: <span class="ruby-constant">SdlBinary</span>&#x000A;173: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>&#x000A;174: &#x000A;175: <span class="ruby-keyword kw">end</span>&#x000A;176: &#x000A;177: <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;178: <span class="ruby-keyword kw">end</span></pre>
205
220
  </div>
206
221
  </div>
207
222
  <div class='method public-class' id='method-M000002'>
@@ -234,7 +249,7 @@
234
249
  <a class='source-toggle' href='#' onclick="toggleCode('M000002-source'); return false">
235
250
  [show source]
236
251
  </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>
252
+ <pre id='M000002-source'> <span class="ruby-comment cmt"># File lib/sdl4r/sdl4r.rb, line 47</span>&#x000A; 47: <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; 48: <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; 49: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">add_quotes</span>&#x000A; 50: <span class="ruby-identifier">o_length</span> = <span class="ruby-value">0</span>&#x000A; 51: <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; 52: <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; 53: <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; 54: <span class="ruby-keyword kw">else</span>&#x000A; 55: <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; 56: <span class="ruby-keyword kw">end</span>&#x000A; 57: <span class="ruby-keyword kw">else</span>&#x000A; 58: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">escape</span>(<span class="ruby-identifier">o</span>)&#x000A; 59: <span class="ruby-keyword kw">end</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">Bignum</span>)&#x000A; 62: <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; 63: &#x000A; 64: <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; 65: <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; 66: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">to_s</span>&#x000A; 67: <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; 68: <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; 69: <span class="ruby-keyword kw">else</span>&#x000A; 70: <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; 71: <span class="ruby-keyword kw">end</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">Float</span>)&#x000A; 74: <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; 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">Rational</span>)&#x000A; 77: <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; 78: &#x000A; 79: <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; 80: <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; 81: <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; 82: <span class="ruby-keyword kw">return</span> <span class="ruby-node">&quot;#{s}BD&quot;</span>&#x000A; 83: &#x000A; 84: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">nil?</span>&#x000A; 85: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">&quot;null&quot;</span>&#x000A; 86: &#x000A; 87: <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; 88: <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; 89: <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; 90: &#x000A; 91: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">add_quotes</span>&#x000A; 92: <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; 93: <span class="ruby-comment cmt"># FIXME: we should a constant or some parameter instead of hardcoded spaces</span>&#x000A; 94: <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; 95: <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; 96: <span class="ruby-identifier">encoded_o</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{$/}#{line_prefix}]&quot;</span>&#x000A; 97: <span class="ruby-keyword kw">else</span>&#x000A; 98: <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; 99: <span class="ruby-identifier">encoded_o</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;]&quot;</span>&#x000A;100: <span class="ruby-keyword kw">end</span>&#x000A;101: <span class="ruby-keyword kw">end</span>&#x000A;102: &#x000A;103: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">encoded_o</span>&#x000A;104: &#x000A;105: <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;106: <span class="ruby-comment cmt"># the date is before 1000.</span>&#x000A;107: <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;108: <span class="ruby-identifier">milliseconds</span> = <span class="ruby-identifier">get_datetime_milliseconds</span>(<span class="ruby-identifier">o</span>)&#x000A;109: &#x000A;110: <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;111: <span class="ruby-identifier">zone_part</span> = <span class="ruby-identifier">o</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-value str">&quot;%:z&quot;</span>)&#x000A;112: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">zone_part</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">zone_part</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">&quot;+00:00&quot;</span>&#x000A;113: <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#{zone_part}&quot;</span>)&#x000A;114: <span class="ruby-keyword kw">else</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>)&#x000A;116: <span class="ruby-keyword kw">end</span>&#x000A;117: <span class="ruby-keyword kw">else</span>&#x000A;118: <span class="ruby-identifier">ms_part</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;119: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">zone_part</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">zone_part</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">&quot;+00:00&quot;</span>&#x000A;120: <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">ms_part</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">zone_part</span>)&#x000A;121: <span class="ruby-keyword kw">else</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 %H:%M:%S.&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">ms_part</span>)&#x000A;123: <span class="ruby-keyword kw">end</span>&#x000A;124: <span class="ruby-keyword kw">end</span>&#x000A;125: &#x000A;126: <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;127: <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;128: &#x000A;129: <span class="ruby-keyword kw">else</span>&#x000A;130: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">to_s</span>&#x000A;131: <span class="ruby-keyword kw">end</span>&#x000A;132: <span class="ruby-keyword kw">end</span></pre>
238
253
  </div>
239
254
  </div>
240
255
  <div class='method public-class' id='method-M000003'>
@@ -257,7 +272,7 @@
257
272
  <a class='source-toggle' href='#' onclick="toggleCode('M000003-source'); return false">
258
273
  [show source]
259
274
  </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>
275
+ <pre id='M000003-source'> <span class="ruby-comment cmt"># File lib/sdl4r/sdl4r.rb, line 144</span>&#x000A;144: <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;145: <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;146: <span class="ruby-keyword kw">end</span></pre>
261
276
  </div>
262
277
  </div>
263
278
  <div class='method public-class' id='method-M000006'>
@@ -282,7 +297,7 @@
282
297
  <a class='source-toggle' href='#' onclick="toggleCode('M000006-source'); return false">
283
298
  [show source]
284
299
  </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>
300
+ <pre id='M000006-source'> <span class="ruby-comment cmt"># File lib/sdl4r/sdl4r.rb, line 237</span>&#x000A;237: <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;238: <span class="ruby-constant">Tag</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">ROOT_TAG_NAME</span>).<span class="ruby-identifier">read</span>(<span class="ruby-identifier">input</span>)&#x000A;239: <span class="ruby-keyword kw">end</span></pre>
286
301
  </div>
287
302
  </div>
288
303
  <div class='method public-class' id='method-M000009'>
@@ -305,7 +320,7 @@
305
320
  <a class='source-toggle' href='#' onclick="toggleCode('M000009-source'); return false">
306
321
  [show source]
307
322
  </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>
323
+ <pre id='M000009-source'> <span class="ruby-comment cmt"># File lib/sdl4r/sdl4r.rb, line 275</span>&#x000A;275: <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;276: <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;277: <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;278: <span class="ruby-keyword kw">end</span></pre>
309
324
  </div>
310
325
  </div>
311
326
  <div class='method public-class' id='method-M000007'>
@@ -324,7 +339,7 @@
324
339
  <a class='source-toggle' href='#' onclick="toggleCode('M000007-source'); return false">
325
340
  [show source]
326
341
  </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>
342
+ <pre id='M000007-source'> <span class="ruby-comment cmt"># File lib/sdl4r/sdl4r.rb, line 247</span>&#x000A;247: <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;248: <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;249: <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;250: <span class="ruby-keyword kw">end</span></pre>
328
343
  </div>
329
344
  </div>
330
345
  <div class='method public-class' id='method-M000008'>
@@ -350,7 +365,7 @@
350
365
  <a class='source-toggle' href='#' onclick="toggleCode('M000008-source'); return false">
351
366
  [show source]
352
367
  </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>
368
+ <pre id='M000008-source'> <span class="ruby-comment cmt"># File lib/sdl4r/sdl4r.rb, line 261</span>&#x000A;261: <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;262: <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;263: <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;264: <span class="ruby-keyword kw">end</span></pre>
354
369
  </div>
355
370
  </div>
356
371
  <div class='method public-class' id='method-M000005'>
@@ -363,7 +378,7 @@
363
378
  <p>
364
379
  Validates an SDL identifier String. SDL Identifiers must start with a
365
380
  Unicode letter or underscore (_) and contain only unicode letters, digits,
366
- underscores (_), dashes(-) and periods (.).
381
+ underscores (_), dashes(-), periods (.) and dollar signs ($).
367
382
  </p>
368
383
  <h2>Raises</h2>
369
384
  <p>
@@ -377,7 +392,7 @@
377
392
  <a class='source-toggle' href='#' onclick="toggleCode('M000005-source'); return false">
378
393
  [show source]
379
394
  </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>
395
+ <pre id='M000005-source'> <span class="ruby-comment cmt"># File lib/sdl4r/sdl4r.rb, line 189</span>&#x000A;189: <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;190: <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;191: <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;192: <span class="ruby-keyword kw">end</span>&#x000A;193: &#x000A;194: <span class="ruby-comment cmt"># in Java, was if(!Character.isJavaIdentifierStart(identifier.charAt(0)))</span>&#x000A;195: <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;196: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>,&#x000A;197: <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;198: <span class="ruby-value str">&quot;' is not a legal first character for an SDL identifier. &quot;</span> <span class="ruby-operator">+</span>&#x000A;199: <span class="ruby-value str">&quot;SDL Identifiers must start with a unicode letter or &quot;</span> <span class="ruby-operator">+</span>&#x000A;200: <span class="ruby-value str">&quot;an underscore (_).&quot;</span>&#x000A;201: <span class="ruby-keyword kw">end</span>&#x000A;202: &#x000A;203: <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;204: <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;205: <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;206: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>,&#x000A;207: <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;208: <span class="ruby-value str">&quot;' is not a legal character for an SDL identifier. &quot;</span> <span class="ruby-operator">+</span>&#x000A;209: <span class="ruby-value str">&quot;SDL Identifiers must start with a unicode letter or &quot;</span> <span class="ruby-operator">+</span>&#x000A;210: <span class="ruby-value str">&quot;underscore (_) followed by 0 or more unicode &quot;</span> <span class="ruby-operator">+</span>&#x000A;211: <span class="ruby-value str">&quot;letters, digits, underscores (_), dashes (-), periodss (.) and dollar signs ($)&quot;</span>&#x000A;212: <span class="ruby-keyword kw">end</span>&#x000A;213: <span class="ruby-keyword kw">end</span>&#x000A;214: <span class="ruby-keyword kw">end</span>&#x000A;215: <span class="ruby-keyword kw">end</span></pre>
381
396
  </div>
382
397
  </div>
383
398
  </div>
@@ -37,10 +37,10 @@
37
37
  <a href="../../files/lib/sdl4r/parser/reader_rb.html">lib/sdl4r/parser/reader.rb</a>
38
38
  </li>
39
39
  <li class='other'>
40
- <a href="../../files/lib/sdl4r/parser/tokenizer_rb.html">lib/sdl4r/parser/tokenizer.rb</a>
40
+ <a href="../../files/lib/sdl4r/parser/token_rb.html">lib/sdl4r/parser/token.rb</a>
41
41
  </li>
42
42
  <li class='other'>
43
- <a href="../../files/lib/sdl4r/parser/token_rb.html">lib/sdl4r/parser/token.rb</a>
43
+ <a href="../../files/lib/sdl4r/parser/tokenizer_rb.html">lib/sdl4r/parser/tokenizer.rb</a>
44
44
  </li>
45
45
  <li class='other'>
46
46
  <a href="../../files/lib/sdl4r/parser/time_span_with_zone_rb.html">lib/sdl4r/parser/time_span_with_zone.rb</a>
@@ -53,10 +53,12 @@
53
53
  <li><a href="#M000101">test_date_time</a></li>
54
54
  <li><a href="#M000106">test_double_quote_strings</a></li>
55
55
  <li><a href="#M000090">test_empty</a></li>
56
+ <li><a href="#M000111">test_empty_block</a></li>
57
+ <li><a href="#M000110">test_identifiers</a></li>
56
58
  <li><a href="#M000104">test_null</a></li>
57
59
  <li><a href="#M000102">test_numbers</a></li>
58
60
  <li><a href="#M000091">test_one_tag_alone</a></li>
59
- <li><a href="#M000110">test_parse_error</a></li>
61
+ <li><a href="#M000112">test_parse_error</a></li>
60
62
  <li><a href="#M000109">test_sub_tags</a></li>
61
63
  <li><a href="#M000098">test_tag_with_attributes</a></li>
62
64
  <li><a href="#M000095">test_tag_with_back_quote_string_values</a></li>
@@ -81,7 +83,7 @@
81
83
  <a class='source-toggle' href='#' onclick="toggleCode('M000108-source'); return false">
82
84
  [show source]
83
85
  </a>
84
- <pre id='M000108-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 333</span>&#x000A;333: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_backquote_strings</span>&#x000A;334: <span class="ruby-identifier">root</span> = <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">read</span> <span class="ruby-value str">&quot;winfile `c:\\\\directory\\\\myfile.xls`\ntalk `I said \&quot;something\&quot;`\nxml `\n&lt;product&gt;\n &lt;shoes color=\&quot;blue\&quot;/&gt;\n&lt;/product&gt;\n`\nregex `\\\\w+\\\\.suite\\\\(\\\\)`\n&quot;</span>&#x000A;335: &#x000A;336: <span class="ruby-identifier">assert_equal</span> <span class="ruby-value str">&quot;c:\\directory\\myfile.xls&quot;</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;winfile&quot;</span>).<span class="ruby-identifier">value</span>&#x000A;337: <span class="ruby-identifier">assert_equal</span> <span class="ruby-value str">'I said &quot;something&quot;'</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;talk&quot;</span>).<span class="ruby-identifier">value</span>&#x000A;338: <span class="ruby-identifier">assert_equal</span>(&#x000A;339: <span class="ruby-value str">&quot;\n&lt;product&gt;\n &lt;shoes color=\&quot;blue\&quot;/&gt;\n&lt;/product&gt;\n&quot;</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;xml&quot;</span>).<span class="ruby-identifier">value</span>)&#x000A;340: <span class="ruby-identifier">assert_equal</span> <span class="ruby-value str">&quot;\\w+\\.suite\\(\\)&quot;</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;regex&quot;</span>).<span class="ruby-identifier">value</span>&#x000A;341: <span class="ruby-keyword kw">end</span></pre>
86
+ <pre id='M000108-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 339</span>&#x000A;339: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_backquote_strings</span>&#x000A;340: <span class="ruby-identifier">root</span> = <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">read</span> <span class="ruby-value str">&quot;winfile `c:\\\\directory\\\\myfile.xls`\ntalk `I said \&quot;something\&quot;`\nxml `\n&lt;product&gt;\n &lt;shoes color=\&quot;blue\&quot;/&gt;\n&lt;/product&gt;\n`\nregex `\\\\w+\\\\.suite\\\\(\\\\)`\n&quot;</span>&#x000A;341: &#x000A;342: <span class="ruby-identifier">assert_equal</span> <span class="ruby-value str">&quot;c:\\directory\\myfile.xls&quot;</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;winfile&quot;</span>).<span class="ruby-identifier">value</span>&#x000A;343: <span class="ruby-identifier">assert_equal</span> <span class="ruby-value str">'I said &quot;something&quot;'</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;talk&quot;</span>).<span class="ruby-identifier">value</span>&#x000A;344: <span class="ruby-identifier">assert_equal</span>(&#x000A;345: <span class="ruby-value str">&quot;\n&lt;product&gt;\n &lt;shoes color=\&quot;blue\&quot;/&gt;\n&lt;/product&gt;\n&quot;</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;xml&quot;</span>).<span class="ruby-identifier">value</span>)&#x000A;346: <span class="ruby-identifier">assert_equal</span> <span class="ruby-value str">&quot;\\w+\\.suite\\(\\)&quot;</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;regex&quot;</span>).<span class="ruby-identifier">value</span>&#x000A;347: <span class="ruby-keyword kw">end</span></pre>
85
87
  </div>
86
88
  </div>
87
89
  <div class='method public-instance' id='method-M000103'>
@@ -94,7 +96,7 @@
94
96
  <a class='source-toggle' href='#' onclick="toggleCode('M000103-source'); return false">
95
97
  [show source]
96
98
  </a>
97
- <pre id='M000103-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 229</span>&#x000A;229: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_booleans</span>&#x000A;230: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(<span class="ruby-value str">&quot;tag1 b1=true b2=false b3=on b4=off&quot;</span>)&#x000A;231: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-keyword kw">true</span>, <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;b1&quot;</span>))&#x000A;232: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;b2&quot;</span>))&#x000A;233: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-keyword kw">true</span>, <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;b3&quot;</span>))&#x000A;234: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;b4&quot;</span>))&#x000A;235: <span class="ruby-keyword kw">end</span></pre>
99
+ <pre id='M000103-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 235</span>&#x000A;235: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_booleans</span>&#x000A;236: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(<span class="ruby-value str">&quot;tag1 b1=true b2=false b3=on b4=off&quot;</span>)&#x000A;237: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-keyword kw">true</span>, <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;b1&quot;</span>))&#x000A;238: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;b2&quot;</span>))&#x000A;239: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-keyword kw">true</span>, <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;b3&quot;</span>))&#x000A;240: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;b4&quot;</span>))&#x000A;241: <span class="ruby-keyword kw">end</span></pre>
98
100
  </div>
99
101
  </div>
100
102
  <div class='method public-instance' id='method-M000107'>
@@ -107,7 +109,7 @@
107
109
  <a class='source-toggle' href='#' onclick="toggleCode('M000107-source'); return false">
108
110
  [show source]
109
111
  </a>
110
- <pre id='M000107-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 309</span>&#x000A;309: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_characters</span>&#x000A;310: <span class="ruby-identifier">root</span> = <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">read</span> <span class="ruby-value str">&quot;tag1 ' ' 'a' '\\\\' '\\t' '\\n' '\\r'&quot;</span>&#x000A;311: <span class="ruby-identifier">assert_equal</span> [<span class="ruby-value str">&quot; &quot;</span>, <span class="ruby-value str">&quot;a&quot;</span>, <span class="ruby-value str">&quot;\\&quot;</span>, <span class="ruby-value str">&quot;\t&quot;</span>, <span class="ruby-value str">&quot;\n&quot;</span>, <span class="ruby-value str">&quot;\r&quot;</span>], <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag1&quot;</span>).<span class="ruby-identifier">values</span>&#x000A;312: &#x000A;313: <span class="ruby-identifier">assert_raise</span> <span class="ruby-constant">SdlParseError</span> <span class="ruby-keyword kw">do</span>&#x000A;314: <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">read</span> <span class="ruby-value str">&quot;tag1 '&quot;</span>&#x000A;315: <span class="ruby-keyword kw">end</span>&#x000A;316: <span class="ruby-identifier">assert_raise</span> <span class="ruby-constant">SdlParseError</span> <span class="ruby-keyword kw">do</span>&#x000A;317: <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">read</span> <span class="ruby-value str">&quot;tag1 'a&quot;</span>&#x000A;318: <span class="ruby-keyword kw">end</span>&#x000A;319: <span class="ruby-identifier">assert_raise</span> <span class="ruby-constant">SdlParseError</span> <span class="ruby-keyword kw">do</span>&#x000A;320: <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">read</span> <span class="ruby-value str">&quot;tag1 'abc'&quot;</span>&#x000A;321: <span class="ruby-keyword kw">end</span>&#x000A;322: <span class="ruby-identifier">assert_raise</span> <span class="ruby-constant">SdlParseError</span> <span class="ruby-keyword kw">do</span>&#x000A;323: <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">read</span> <span class="ruby-value str">&quot;tag1 ''&quot;</span>&#x000A;324: <span class="ruby-keyword kw">end</span>&#x000A;325: <span class="ruby-identifier">assert_raise</span> <span class="ruby-constant">SdlParseError</span> <span class="ruby-keyword kw">do</span>&#x000A;326: <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">read</span> <span class="ruby-value str">&quot;tag1 '\\'&quot;</span>&#x000A;327: <span class="ruby-keyword kw">end</span>&#x000A;328: <span class="ruby-identifier">assert_raise</span> <span class="ruby-constant">SdlParseError</span> <span class="ruby-keyword kw">do</span>&#x000A;329: <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">read</span> <span class="ruby-value str">&quot;tag1 '\\&quot;</span>&#x000A;330: <span class="ruby-keyword kw">end</span>&#x000A;331: <span class="ruby-keyword kw">end</span></pre>
112
+ <pre id='M000107-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 315</span>&#x000A;315: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_characters</span>&#x000A;316: <span class="ruby-identifier">root</span> = <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">read</span> <span class="ruby-value str">&quot;tag1 ' ' 'a' '\\\\' '\\t' '\\n' '\\r'&quot;</span>&#x000A;317: <span class="ruby-identifier">assert_equal</span> [<span class="ruby-value str">&quot; &quot;</span>, <span class="ruby-value str">&quot;a&quot;</span>, <span class="ruby-value str">&quot;\\&quot;</span>, <span class="ruby-value str">&quot;\t&quot;</span>, <span class="ruby-value str">&quot;\n&quot;</span>, <span class="ruby-value str">&quot;\r&quot;</span>], <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag1&quot;</span>).<span class="ruby-identifier">values</span>&#x000A;318: &#x000A;319: <span class="ruby-identifier">assert_raise</span> <span class="ruby-constant">SdlParseError</span> <span class="ruby-keyword kw">do</span>&#x000A;320: <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">read</span> <span class="ruby-value str">&quot;tag1 '&quot;</span>&#x000A;321: <span class="ruby-keyword kw">end</span>&#x000A;322: <span class="ruby-identifier">assert_raise</span> <span class="ruby-constant">SdlParseError</span> <span class="ruby-keyword kw">do</span>&#x000A;323: <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">read</span> <span class="ruby-value str">&quot;tag1 'a&quot;</span>&#x000A;324: <span class="ruby-keyword kw">end</span>&#x000A;325: <span class="ruby-identifier">assert_raise</span> <span class="ruby-constant">SdlParseError</span> <span class="ruby-keyword kw">do</span>&#x000A;326: <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">read</span> <span class="ruby-value str">&quot;tag1 'abc'&quot;</span>&#x000A;327: <span class="ruby-keyword kw">end</span>&#x000A;328: <span class="ruby-identifier">assert_raise</span> <span class="ruby-constant">SdlParseError</span> <span class="ruby-keyword kw">do</span>&#x000A;329: <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">read</span> <span class="ruby-value str">&quot;tag1 ''&quot;</span>&#x000A;330: <span class="ruby-keyword kw">end</span>&#x000A;331: <span class="ruby-identifier">assert_raise</span> <span class="ruby-constant">SdlParseError</span> <span class="ruby-keyword kw">do</span>&#x000A;332: <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">read</span> <span class="ruby-value str">&quot;tag1 '\\'&quot;</span>&#x000A;333: <span class="ruby-keyword kw">end</span>&#x000A;334: <span class="ruby-identifier">assert_raise</span> <span class="ruby-constant">SdlParseError</span> <span class="ruby-keyword kw">do</span>&#x000A;335: <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">read</span> <span class="ruby-value str">&quot;tag1 '\\&quot;</span>&#x000A;336: <span class="ruby-keyword kw">end</span>&#x000A;337: <span class="ruby-keyword kw">end</span></pre>
111
113
  </div>
112
114
  </div>
113
115
  <div class='method public-instance' id='method-M000105'>
@@ -120,7 +122,7 @@
120
122
  <a class='source-toggle' href='#' onclick="toggleCode('M000105-source'); return false">
121
123
  [show source]
122
124
  </a>
123
- <pre id='M000105-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 246</span>&#x000A;246: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_comments</span>&#x000A;247: <span class="ruby-identifier">root</span> = <span class="ruby-constant">Tag</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">&quot;root&quot;</span>)&#x000A;248: <span class="ruby-identifier">root</span>.<span class="ruby-identifier">read</span>(&#x000A;249: <span class="ruby-value str">&quot;tag1 123\n#tag2 456\ntag3 789\n--tag4 012\ntag5 345\n//tag6 678\ntag7 901\n/*tag8 234\ntag9 567*/\ntag10 890\n&quot;</span>&#x000A;250: )&#x000A;251: <span class="ruby-identifier">children</span> = <span class="ruby-identifier">root</span>.<span class="ruby-identifier">children</span>&#x000A;252: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">5</span>, <span class="ruby-identifier">children</span>.<span class="ruby-identifier">size</span>, <span class="ruby-value str">&quot;children count&quot;</span>)&#x000A;253: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">123</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag1&quot;</span>).<span class="ruby-identifier">value</span>)&#x000A;254: <span class="ruby-identifier">assert_nil</span>(<span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag2&quot;</span>))&#x000A;255: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">789</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag3&quot;</span>).<span class="ruby-identifier">value</span>)&#x000A;256: <span class="ruby-identifier">assert_nil</span>(<span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag4&quot;</span>))&#x000A;257: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">345</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag5&quot;</span>).<span class="ruby-identifier">value</span>)&#x000A;258: <span class="ruby-identifier">assert_nil</span>(<span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag6&quot;</span>))&#x000A;259: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">901</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag7&quot;</span>).<span class="ruby-identifier">value</span>)&#x000A;260: <span class="ruby-identifier">assert_nil</span>(<span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag8&quot;</span>))&#x000A;261: <span class="ruby-identifier">assert_nil</span>(<span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag9&quot;</span>))&#x000A;262: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">890</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag10&quot;</span>).<span class="ruby-identifier">value</span>)&#x000A;263: <span class="ruby-keyword kw">end</span></pre>
125
+ <pre id='M000105-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 252</span>&#x000A;252: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_comments</span>&#x000A;253: <span class="ruby-identifier">root</span> = <span class="ruby-constant">Tag</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">&quot;root&quot;</span>)&#x000A;254: <span class="ruby-identifier">root</span>.<span class="ruby-identifier">read</span>(&#x000A;255: <span class="ruby-value str">&quot;tag1 123\n#tag2 456\ntag3 789\n--tag4 012\ntag5 345\n//tag6 678\ntag7 901\n/*tag8 234\ntag9 567*/\ntag10 890\n&quot;</span>&#x000A;256: )&#x000A;257: <span class="ruby-identifier">children</span> = <span class="ruby-identifier">root</span>.<span class="ruby-identifier">children</span>&#x000A;258: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">5</span>, <span class="ruby-identifier">children</span>.<span class="ruby-identifier">size</span>, <span class="ruby-value str">&quot;children count&quot;</span>)&#x000A;259: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">123</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag1&quot;</span>).<span class="ruby-identifier">value</span>)&#x000A;260: <span class="ruby-identifier">assert_nil</span>(<span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag2&quot;</span>))&#x000A;261: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">789</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag3&quot;</span>).<span class="ruby-identifier">value</span>)&#x000A;262: <span class="ruby-identifier">assert_nil</span>(<span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag4&quot;</span>))&#x000A;263: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">345</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag5&quot;</span>).<span class="ruby-identifier">value</span>)&#x000A;264: <span class="ruby-identifier">assert_nil</span>(<span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag6&quot;</span>))&#x000A;265: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">901</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag7&quot;</span>).<span class="ruby-identifier">value</span>)&#x000A;266: <span class="ruby-identifier">assert_nil</span>(<span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag8&quot;</span>))&#x000A;267: <span class="ruby-identifier">assert_nil</span>(<span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag9&quot;</span>))&#x000A;268: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">890</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag10&quot;</span>).<span class="ruby-identifier">value</span>)&#x000A;269: <span class="ruby-keyword kw">end</span></pre>
124
126
  </div>
125
127
  </div>
126
128
  <div class='method public-instance' id='method-M000099'>
@@ -133,7 +135,7 @@
133
135
  <a class='source-toggle' href='#' onclick="toggleCode('M000099-source'); return false">
134
136
  [show source]
135
137
  </a>
136
- <pre id='M000099-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 139</span>&#x000A;139: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_date</span>&#x000A;140: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(<span class="ruby-value str">&quot;tag1 2005/12/05&quot;</span>)&#x000A;141: <span class="ruby-identifier">date</span> = <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">value</span>&#x000A;142: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-constant">Date</span>.<span class="ruby-identifier">civil</span>(<span class="ruby-value">2005</span>, <span class="ruby-value">12</span>, <span class="ruby-value">5</span>), <span class="ruby-identifier">date</span>, <span class="ruby-value str">&quot;date value&quot;</span>)&#x000A;143: <span class="ruby-keyword kw">end</span></pre>
138
+ <pre id='M000099-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 141</span>&#x000A;141: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_date</span>&#x000A;142: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(<span class="ruby-value str">&quot;tag1 2005/12/05&quot;</span>)&#x000A;143: <span class="ruby-identifier">date</span> = <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">value</span>&#x000A;144: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-constant">Date</span>.<span class="ruby-identifier">civil</span>(<span class="ruby-value">2005</span>, <span class="ruby-value">12</span>, <span class="ruby-value">5</span>), <span class="ruby-identifier">date</span>, <span class="ruby-value str">&quot;date value&quot;</span>)&#x000A;145: <span class="ruby-keyword kw">end</span></pre>
137
139
  </div>
138
140
  </div>
139
141
  <div class='method public-instance' id='method-M000101'>
@@ -146,7 +148,7 @@
146
148
  <a class='source-toggle' href='#' onclick="toggleCode('M000101-source'); return false">
147
149
  [show source]
148
150
  </a>
149
- <pre id='M000101-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 167</span>&#x000A;167: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_date_time</span>&#x000A;168: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(&#x000A;169: <span class="ruby-value str">&quot;tag1 date1=2008/06/01 12:34&quot;</span> <span class="ruby-operator">+</span>&#x000A;170: <span class="ruby-value str">&quot; date2=1999/12/31 23:59:58&quot;</span> <span class="ruby-operator">+</span>&#x000A;171: <span class="ruby-value str">&quot; date3=2000/05/01 12:01:35.997&quot;</span> <span class="ruby-operator">+</span>&#x000A;172: <span class="ruby-value str">&quot; date4=2015/12/05 14:12:23.345-JST&quot;</span> <span class="ruby-operator">+</span>&#x000A;173: <span class="ruby-value str">&quot; date5=1414/05/12 03:00:01.107-UTC-04&quot;</span> <span class="ruby-operator">+</span>&#x000A;174: <span class="ruby-value str">&quot; date6=1807/11/11 22:28:13.888-GMT-08:30&quot;</span>)&#x000A;175: <span class="ruby-identifier">assert_equal</span>(&#x000A;176: <span class="ruby-identifier">local_civil_date</span>(<span class="ruby-value">2008</span>, <span class="ruby-value">6</span>, <span class="ruby-value">1</span>, <span class="ruby-value">12</span>, <span class="ruby-value">34</span>),&#x000A;177: <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;date1&quot;</span>),&#x000A;178: <span class="ruby-value str">&quot;date1&quot;</span>);&#x000A;179: <span class="ruby-identifier">assert_equal</span>(&#x000A;180: <span class="ruby-identifier">local_civil_date</span>(<span class="ruby-value">1999</span>, <span class="ruby-value">12</span>, <span class="ruby-value">31</span>, <span class="ruby-value">23</span>, <span class="ruby-value">59</span>, <span class="ruby-value">58</span>),&#x000A;181: <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;date2&quot;</span>),&#x000A;182: <span class="ruby-value str">&quot;date2&quot;</span>);&#x000A;183: <span class="ruby-identifier">assert_equal</span>(&#x000A;184: <span class="ruby-identifier">local_civil_date</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">5</span>, <span class="ruby-value">1</span>, <span class="ruby-value">12</span>, <span class="ruby-value">1</span>, <span class="ruby-constant">Rational</span>(<span class="ruby-value">35997</span>, <span class="ruby-value">1000</span>)),&#x000A;185: <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;date3&quot;</span>),&#x000A;186: <span class="ruby-value str">&quot;date3&quot;</span>);&#x000A;187: <span class="ruby-identifier">assert_equal</span>(&#x000A;188: <span class="ruby-identifier">local_civil_date</span>(<span class="ruby-value">2015</span>, <span class="ruby-value">12</span>, <span class="ruby-value">5</span>, <span class="ruby-value">14</span>, <span class="ruby-value">12</span>, <span class="ruby-constant">Rational</span>(<span class="ruby-value">23345</span>, <span class="ruby-value">1000</span>), <span class="ruby-constant">Rational</span>(<span class="ruby-value">9</span>, <span class="ruby-value">24</span>)),&#x000A;189: <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;date4&quot;</span>),&#x000A;190: <span class="ruby-value str">&quot;date4&quot;</span>);&#x000A;191: <span class="ruby-identifier">assert_equal</span>(&#x000A;192: <span class="ruby-identifier">local_civil_date</span>(<span class="ruby-value">1414</span>, <span class="ruby-value">5</span>, <span class="ruby-value">12</span>, <span class="ruby-value">3</span>, <span class="ruby-value">0</span>, <span class="ruby-constant">Rational</span>(<span class="ruby-value">1107</span>, <span class="ruby-value">1000</span>), <span class="ruby-constant">Rational</span>(<span class="ruby-value">-4</span>, <span class="ruby-value">24</span>)),&#x000A;193: <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;date5&quot;</span>),&#x000A;194: <span class="ruby-value str">&quot;date5&quot;</span>);&#x000A;195: <span class="ruby-identifier">assert_equal</span>(&#x000A;196: <span class="ruby-identifier">local_civil_date</span>(<span class="ruby-value">1807</span>, <span class="ruby-value">11</span>, <span class="ruby-value">11</span>, <span class="ruby-value">22</span>, <span class="ruby-value">28</span>, <span class="ruby-constant">Rational</span>(<span class="ruby-value">13888</span>, <span class="ruby-value">1000</span>), <span class="ruby-constant">Rational</span>(<span class="ruby-value">-85</span>, <span class="ruby-value">240</span>)),&#x000A;197: <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;date6&quot;</span>),&#x000A;198: <span class="ruby-value str">&quot;date6&quot;</span>);&#x000A;199: <span class="ruby-keyword kw">end</span></pre>
151
+ <pre id='M000101-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 169</span>&#x000A;169: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_date_time</span>&#x000A;170: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(&#x000A;171: <span class="ruby-value str">&quot;tag1 date1=2008/06/01 12:34&quot;</span> <span class="ruby-operator">+</span>&#x000A;172: <span class="ruby-value str">&quot; date2=1999/12/31 23:59:58&quot;</span> <span class="ruby-operator">+</span>&#x000A;173: <span class="ruby-value str">&quot; date3=2000/05/01 12:01:35.997&quot;</span> <span class="ruby-operator">+</span>&#x000A;174: <span class="ruby-value str">&quot; date4=2015/12/05 14:12:23.345-JST&quot;</span> <span class="ruby-operator">+</span>&#x000A;175: <span class="ruby-value str">&quot; date5=1414/05/12 03:00:01.107-UTC-04&quot;</span> <span class="ruby-operator">+</span>&#x000A;176: <span class="ruby-value str">&quot; date6=1807/11/11 22:28:13.888-GMT-08:30&quot;</span>)&#x000A;177: <span class="ruby-identifier">assert_equal</span>(&#x000A;178: <span class="ruby-identifier">local_civil_date</span>(<span class="ruby-value">2008</span>, <span class="ruby-value">6</span>, <span class="ruby-value">1</span>, <span class="ruby-value">12</span>, <span class="ruby-value">34</span>),&#x000A;179: <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;date1&quot;</span>),&#x000A;180: <span class="ruby-value str">&quot;date1&quot;</span>);&#x000A;181: <span class="ruby-identifier">assert_equal</span>(&#x000A;182: <span class="ruby-identifier">local_civil_date</span>(<span class="ruby-value">1999</span>, <span class="ruby-value">12</span>, <span class="ruby-value">31</span>, <span class="ruby-value">23</span>, <span class="ruby-value">59</span>, <span class="ruby-value">58</span>),&#x000A;183: <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;date2&quot;</span>),&#x000A;184: <span class="ruby-value str">&quot;date2&quot;</span>);&#x000A;185: <span class="ruby-identifier">assert_equal</span>(&#x000A;186: <span class="ruby-identifier">local_civil_date</span>(<span class="ruby-value">2000</span>, <span class="ruby-value">5</span>, <span class="ruby-value">1</span>, <span class="ruby-value">12</span>, <span class="ruby-value">1</span>, <span class="ruby-constant">Rational</span>(<span class="ruby-value">35997</span>, <span class="ruby-value">1000</span>)),&#x000A;187: <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;date3&quot;</span>),&#x000A;188: <span class="ruby-value str">&quot;date3&quot;</span>);&#x000A;189: <span class="ruby-identifier">assert_equal</span>(&#x000A;190: <span class="ruby-identifier">local_civil_date</span>(<span class="ruby-value">2015</span>, <span class="ruby-value">12</span>, <span class="ruby-value">5</span>, <span class="ruby-value">14</span>, <span class="ruby-value">12</span>, <span class="ruby-constant">Rational</span>(<span class="ruby-value">23345</span>, <span class="ruby-value">1000</span>), <span class="ruby-constant">Rational</span>(<span class="ruby-value">9</span>, <span class="ruby-value">24</span>)),&#x000A;191: <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;date4&quot;</span>),&#x000A;192: <span class="ruby-value str">&quot;date4&quot;</span>);&#x000A;193: <span class="ruby-identifier">assert_equal</span>(&#x000A;194: <span class="ruby-identifier">local_civil_date</span>(<span class="ruby-value">1414</span>, <span class="ruby-value">5</span>, <span class="ruby-value">12</span>, <span class="ruby-value">3</span>, <span class="ruby-value">0</span>, <span class="ruby-constant">Rational</span>(<span class="ruby-value">1107</span>, <span class="ruby-value">1000</span>), <span class="ruby-constant">Rational</span>(<span class="ruby-value">-4</span>, <span class="ruby-value">24</span>)),&#x000A;195: <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;date5&quot;</span>),&#x000A;196: <span class="ruby-value str">&quot;date5&quot;</span>);&#x000A;197: <span class="ruby-identifier">assert_equal</span>(&#x000A;198: <span class="ruby-identifier">local_civil_date</span>(<span class="ruby-value">1807</span>, <span class="ruby-value">11</span>, <span class="ruby-value">11</span>, <span class="ruby-value">22</span>, <span class="ruby-value">28</span>, <span class="ruby-constant">Rational</span>(<span class="ruby-value">13888</span>, <span class="ruby-value">1000</span>), <span class="ruby-constant">Rational</span>(<span class="ruby-value">-85</span>, <span class="ruby-value">240</span>)),&#x000A;199: <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;date6&quot;</span>),&#x000A;200: <span class="ruby-value str">&quot;date6&quot;</span>);&#x000A;201: &#x000A;202: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(<span class="ruby-value str">&quot;tag1 2008/06/01 5d:12:34&quot;</span>) <span class="ruby-comment cmt"># not a datetime: a date + a timespan</span>&#x000A;203: <span class="ruby-identifier">assert_equal</span> <span class="ruby-constant">Date</span>.<span class="ruby-identifier">civil</span>(<span class="ruby-value">2008</span>, <span class="ruby-value">6</span>, <span class="ruby-value">1</span>), <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">values</span>[<span class="ruby-value">0</span>]&#x000A;204: <span class="ruby-identifier">assert_equal</span> <span class="ruby-constant">SdlTimeSpan</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">5</span>, <span class="ruby-value">12</span>, <span class="ruby-value">34</span>), <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">values</span>[<span class="ruby-value">1</span>]&#x000A;205: <span class="ruby-keyword kw">end</span></pre>
150
152
  </div>
151
153
  </div>
152
154
  <div class='method public-instance' id='method-M000106'>
@@ -159,7 +161,7 @@
159
161
  <a class='source-toggle' href='#' onclick="toggleCode('M000106-source'); return false">
160
162
  [show source]
161
163
  </a>
162
- <pre id='M000106-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 277</span>&#x000A;277: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_double_quote_strings</span>&#x000A;278: <span class="ruby-identifier">root</span> = <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">read</span>(&#x000A;279: <span class="ruby-value str">&quot;tag1 \&quot;cheese and cherry jam\&quot;\ntag2 \&quot;cheese and \\\\\n cherry jam\&quot;\ntag3 \&quot;cheese \\\\\n and \\\\\n cherry jam\&quot;\ntag4 \&quot;Did you say this soup was \\\\\&quot;good\\\\\&quot;?\&quot;\ntag5 \&quot;Even my dog wouldn't\\\\thave\\\\tit!\&quot;\ntag6 \&quot;\\\\\&quot;\\\\t\\\\r\\\\n\\\\\\\\\&quot;\ntag7 equation=\&quot;is not x=y*z\&quot; color=\&quot;blue \\\\\n and yellow\&quot;\n&quot;</span>&#x000A;280: )&#x000A;281: &#x000A;282: <span class="ruby-identifier">assert_equal</span> <span class="ruby-value str">&quot;cheese and cherry jam&quot;</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag1&quot;</span>).<span class="ruby-identifier">value</span>, <span class="ruby-value str">&quot;double-quote string&quot;</span>&#x000A;283: <span class="ruby-identifier">assert_equal</span>(&#x000A;284: <span class="ruby-value str">&quot;cheese and cherry jam&quot;</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag2&quot;</span>).<span class="ruby-identifier">value</span>, <span class="ruby-value str">&quot;continued double-quote string&quot;</span>)&#x000A;285: <span class="ruby-identifier">assert_equal</span>(&#x000A;286: <span class="ruby-value str">&quot;cheese and cherry jam&quot;</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag3&quot;</span>).<span class="ruby-identifier">value</span>, <span class="ruby-value str">&quot;continued double-quote string&quot;</span>)&#x000A;287: <span class="ruby-identifier">assert_equal</span>(&#x000A;288: <span class="ruby-value str">'Did you say this soup was &quot;good&quot;?'</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag4&quot;</span>).<span class="ruby-identifier">value</span>, <span class="ruby-value str">&quot;escaped quotes&quot;</span>)&#x000A;289: <span class="ruby-identifier">assert_equal</span>(&#x000A;290: <span class="ruby-value str">&quot;Even my dog wouldn't\thave\tit!&quot;</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag5&quot;</span>).<span class="ruby-identifier">value</span>, <span class="ruby-value str">&quot;escaped tabs&quot;</span>)&#x000A;291: <span class="ruby-identifier">assert_equal</span> <span class="ruby-value str">&quot;\&quot;\t\r\n\\&quot;</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag6&quot;</span>).<span class="ruby-identifier">value</span>, <span class="ruby-value str">&quot;escaped white spaces&quot;</span>&#x000A;292: <span class="ruby-identifier">assert_equal</span> <span class="ruby-value str">&quot;is not x=y*z&quot;</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag7&quot;</span>).<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;equation&quot;</span>)&#x000A;293: <span class="ruby-identifier">assert_equal</span> <span class="ruby-value str">&quot;blue and yellow&quot;</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag7&quot;</span>).<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;color&quot;</span>)&#x000A;294: <span class="ruby-keyword kw">end</span></pre>
164
+ <pre id='M000106-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 283</span>&#x000A;283: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_double_quote_strings</span>&#x000A;284: <span class="ruby-identifier">root</span> = <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">read</span>(&#x000A;285: <span class="ruby-value str">&quot;tag1 \&quot;cheese and cherry jam\&quot;\ntag2 \&quot;cheese and \\\\\n cherry jam\&quot;\ntag3 \&quot;cheese \\\\\n and \\\\\n cherry jam\&quot;\ntag4 \&quot;Did you say this soup was \\\\\&quot;good\\\\\&quot;?\&quot;\ntag5 \&quot;Even my dog wouldn't\\\\thave\\\\tit!\&quot;\ntag6 \&quot;\\\\\&quot;\\\\t\\\\r\\\\n\\\\\\\\\&quot;\ntag7 equation=\&quot;is not x=y*z\&quot; color=\&quot;blue \\\\\n and yellow\&quot;\n&quot;</span>&#x000A;286: )&#x000A;287: &#x000A;288: <span class="ruby-identifier">assert_equal</span> <span class="ruby-value str">&quot;cheese and cherry jam&quot;</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag1&quot;</span>).<span class="ruby-identifier">value</span>, <span class="ruby-value str">&quot;double-quote string&quot;</span>&#x000A;289: <span class="ruby-identifier">assert_equal</span>(&#x000A;290: <span class="ruby-value str">&quot;cheese and cherry jam&quot;</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag2&quot;</span>).<span class="ruby-identifier">value</span>, <span class="ruby-value str">&quot;continued double-quote string&quot;</span>)&#x000A;291: <span class="ruby-identifier">assert_equal</span>(&#x000A;292: <span class="ruby-value str">&quot;cheese and cherry jam&quot;</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag3&quot;</span>).<span class="ruby-identifier">value</span>, <span class="ruby-value str">&quot;continued double-quote string&quot;</span>)&#x000A;293: <span class="ruby-identifier">assert_equal</span>(&#x000A;294: <span class="ruby-value str">'Did you say this soup was &quot;good&quot;?'</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag4&quot;</span>).<span class="ruby-identifier">value</span>, <span class="ruby-value str">&quot;escaped quotes&quot;</span>)&#x000A;295: <span class="ruby-identifier">assert_equal</span>(&#x000A;296: <span class="ruby-value str">&quot;Even my dog wouldn't\thave\tit!&quot;</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag5&quot;</span>).<span class="ruby-identifier">value</span>, <span class="ruby-value str">&quot;escaped tabs&quot;</span>)&#x000A;297: <span class="ruby-identifier">assert_equal</span> <span class="ruby-value str">&quot;\&quot;\t\r\n\\&quot;</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag6&quot;</span>).<span class="ruby-identifier">value</span>, <span class="ruby-value str">&quot;escaped white spaces&quot;</span>&#x000A;298: <span class="ruby-identifier">assert_equal</span> <span class="ruby-value str">&quot;is not x=y*z&quot;</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag7&quot;</span>).<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;equation&quot;</span>)&#x000A;299: <span class="ruby-identifier">assert_equal</span> <span class="ruby-value str">&quot;blue and yellow&quot;</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>(<span class="ruby-value str">&quot;tag7&quot;</span>).<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;color&quot;</span>)&#x000A;300: <span class="ruby-keyword kw">end</span></pre>
163
165
  </div>
164
166
  </div>
165
167
  <div class='method public-instance' id='method-M000090'>
@@ -172,7 +174,33 @@
172
174
  <a class='source-toggle' href='#' onclick="toggleCode('M000090-source'); return false">
173
175
  [show source]
174
176
  </a>
175
- <pre id='M000090-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 36</span>&#x000A;36: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_empty</span>&#x000A;37: <span class="ruby-identifier">root</span> = <span class="ruby-constant">Tag</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">&quot;root&quot;</span>)&#x000A;38: <span class="ruby-identifier">root</span>.<span class="ruby-identifier">read</span>(<span class="ruby-value str">&quot;&quot;</span>)&#x000A;39: <span class="ruby-identifier">root</span>.<span class="ruby-identifier">children</span>(<span class="ruby-keyword kw">false</span>) { <span class="ruby-identifier">fail</span>(<span class="ruby-value str">&quot;no child expected&quot;</span>) }&#x000A;40: <span class="ruby-keyword kw">end</span></pre>
177
+ <pre id='M000090-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 38</span>&#x000A;38: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_empty</span>&#x000A;39: <span class="ruby-identifier">root</span> = <span class="ruby-constant">Tag</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">&quot;root&quot;</span>)&#x000A;40: <span class="ruby-identifier">root</span>.<span class="ruby-identifier">read</span>(<span class="ruby-value str">&quot;&quot;</span>)&#x000A;41: <span class="ruby-identifier">root</span>.<span class="ruby-identifier">children</span>(<span class="ruby-keyword kw">false</span>) { <span class="ruby-identifier">fail</span>(<span class="ruby-value str">&quot;no child expected&quot;</span>) }&#x000A;42: <span class="ruby-keyword kw">end</span></pre>
178
+ </div>
179
+ </div>
180
+ <div class='method public-instance' id='method-M000111'>
181
+ <a name='M000111'></a>
182
+ <div class='synopsis'>
183
+ <span class='name'>test_empty_block</span>
184
+ <span class='arguments'>()</span>
185
+ </div>
186
+ <div class='source'>
187
+ <a class='source-toggle' href='#' onclick="toggleCode('M000111-source'); return false">
188
+ [show source]
189
+ </a>
190
+ <pre id='M000111-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 416</span>&#x000A;416: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_empty_block</span>&#x000A;417: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(<span class="ruby-value str">&quot;tag1 {\n}&quot;</span>)&#x000A;418: <span class="ruby-identifier">assert_equal</span> [], <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">values</span>&#x000A;419: <span class="ruby-identifier">assert_equal</span>({}, <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attributes</span>)&#x000A;420: <span class="ruby-identifier">assert_equal</span> [], <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">children</span>&#x000A;421: &#x000A;422: <span class="ruby-comment cmt"># tag1 = parse_one_tag1(&quot;tag1 {}&quot;)</span>&#x000A;423: <span class="ruby-comment cmt"># assert_equal [], tag1.values</span>&#x000A;424: <span class="ruby-comment cmt"># assert_equal({}, tag1.attributes)</span>&#x000A;425: <span class="ruby-comment cmt"># assert_equal [], tag1.children</span>&#x000A;426: <span class="ruby-keyword kw">end</span></pre>
191
+ </div>
192
+ </div>
193
+ <div class='method public-instance' id='method-M000110'>
194
+ <a name='M000110'></a>
195
+ <div class='synopsis'>
196
+ <span class='name'>test_identifiers</span>
197
+ <span class='arguments'>()</span>
198
+ </div>
199
+ <div class='source'>
200
+ <a class='source-toggle' href='#' onclick="toggleCode('M000110-source'); return false">
201
+ [show source]
202
+ </a>
203
+ <pre id='M000110-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 394</span>&#x000A;394: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_identifiers</span>&#x000A;395: <span class="ruby-identifier">root</span> = <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">read</span>(<span class="ruby-value str">&quot;my_ns:my_tag my_ns2:my_attr=-13.8&quot;</span>)&#x000A;396: <span class="ruby-identifier">assert_equal</span> <span class="ruby-value str">&quot;my_ns&quot;</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>.<span class="ruby-identifier">namespace</span>&#x000A;397: <span class="ruby-identifier">assert_equal</span> <span class="ruby-value str">&quot;my_tag&quot;</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>.<span class="ruby-identifier">name</span>&#x000A;398: <span class="ruby-identifier">assert_equal</span>({ <span class="ruby-value str">&quot;my_ns2:my_attr&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">-13.8</span> }, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>.<span class="ruby-identifier">attributes</span>)&#x000A;399: &#x000A;400: <span class="ruby-identifier">root</span> = <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">read</span>(<span class="ruby-value str">&quot;_my_ns:_my_tag _my_ns2:_my_attr=-13.8&quot;</span>)&#x000A;401: <span class="ruby-identifier">assert_equal</span> <span class="ruby-value str">&quot;_my_ns&quot;</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>.<span class="ruby-identifier">namespace</span>&#x000A;402: <span class="ruby-identifier">assert_equal</span> <span class="ruby-value str">&quot;_my_tag&quot;</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>.<span class="ruby-identifier">name</span>&#x000A;403: <span class="ruby-identifier">assert_equal</span>({ <span class="ruby-value str">&quot;_my_ns2:_my_attr&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">-13.8</span> }, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>.<span class="ruby-identifier">attributes</span>)&#x000A;404: &#x000A;405: <span class="ruby-identifier">root</span> = <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">read</span>(<span class="ruby-value str">&quot;my.ns:my.tag my.ns2:my.attr=-13.8&quot;</span>)&#x000A;406: <span class="ruby-identifier">assert_equal</span> <span class="ruby-value str">&quot;my.ns&quot;</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>.<span class="ruby-identifier">namespace</span>&#x000A;407: <span class="ruby-identifier">assert_equal</span> <span class="ruby-value str">&quot;my.tag&quot;</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>.<span class="ruby-identifier">name</span>&#x000A;408: <span class="ruby-identifier">assert_equal</span>({ <span class="ruby-value str">&quot;my.ns2:my.attr&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">-13.8</span> }, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>.<span class="ruby-identifier">attributes</span>)&#x000A;409: &#x000A;410: <span class="ruby-identifier">root</span> = <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">read</span>(<span class="ruby-value str">&quot;my$ns:my$tag my$ns2:my$attr=-13.8&quot;</span>)&#x000A;411: <span class="ruby-identifier">assert_equal</span> <span class="ruby-value str">&quot;my$ns&quot;</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>.<span class="ruby-identifier">namespace</span>&#x000A;412: <span class="ruby-identifier">assert_equal</span> <span class="ruby-value str">&quot;my$tag&quot;</span>, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>.<span class="ruby-identifier">name</span>&#x000A;413: <span class="ruby-identifier">assert_equal</span>({ <span class="ruby-value str">&quot;my$ns2:my$attr&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">-13.8</span> }, <span class="ruby-identifier">root</span>.<span class="ruby-identifier">child</span>.<span class="ruby-identifier">attributes</span>)&#x000A;414: <span class="ruby-keyword kw">end</span></pre>
176
204
  </div>
177
205
  </div>
178
206
  <div class='method public-instance' id='method-M000104'>
@@ -185,7 +213,7 @@
185
213
  <a class='source-toggle' href='#' onclick="toggleCode('M000104-source'); return false">
186
214
  [show source]
187
215
  </a>
188
- <pre id='M000104-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 237</span>&#x000A;237: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_null</span>&#x000A;238: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(<span class="ruby-value str">&quot;tag1 null attr1=null&quot;</span>)&#x000A;239: <span class="ruby-identifier">values</span> = <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">values</span>&#x000A;240: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">1</span>, <span class="ruby-identifier">values</span>.<span class="ruby-identifier">size</span>)&#x000A;241: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">0</span>])&#x000A;242: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;attr1&quot;</span>))&#x000A;243: <span class="ruby-identifier">assert</span>(<span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">has_attribute?</span>(<span class="ruby-value str">&quot;attr1&quot;</span>))&#x000A;244: <span class="ruby-keyword kw">end</span></pre>
216
+ <pre id='M000104-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 243</span>&#x000A;243: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_null</span>&#x000A;244: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(<span class="ruby-value str">&quot;tag1 null attr1=null&quot;</span>)&#x000A;245: <span class="ruby-identifier">values</span> = <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">values</span>&#x000A;246: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">1</span>, <span class="ruby-identifier">values</span>.<span class="ruby-identifier">size</span>)&#x000A;247: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">0</span>])&#x000A;248: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;attr1&quot;</span>))&#x000A;249: <span class="ruby-identifier">assert</span>(<span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">has_attribute?</span>(<span class="ruby-value str">&quot;attr1&quot;</span>))&#x000A;250: <span class="ruby-keyword kw">end</span></pre>
189
217
  </div>
190
218
  </div>
191
219
  <div class='method public-instance' id='method-M000102'>
@@ -198,7 +226,7 @@
198
226
  <a class='source-toggle' href='#' onclick="toggleCode('M000102-source'); return false">
199
227
  [show source]
200
228
  </a>
201
- <pre id='M000102-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 201</span>&#x000A;201: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_numbers</span>&#x000A;202: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(&#x000A;203: <span class="ruby-value str">&quot;tag1 123 3000000000 456l 789L 123.45f 67.8F 910.11 12.13d 1415.16D 171.8BD 1.920bd 12345678901234567890BD&quot;</span>)&#x000A;204: <span class="ruby-identifier">values</span> = <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">values</span>&#x000A;205: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">123</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">0</span>])&#x000A;206: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">3000000000</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">1</span>])&#x000A;207: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">456</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">2</span>])&#x000A;208: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">789</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">3</span>])&#x000A;209: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">123.45</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">4</span>])&#x000A;210: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">67.8</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">5</span>])&#x000A;211: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">910.11</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">6</span>])&#x000A;212: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">12.13</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">7</span>])&#x000A;213: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">1415.16</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">8</span>])&#x000A;214: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-constant">BigDecimal</span>(<span class="ruby-value str">&quot;171.8&quot;</span>), <span class="ruby-identifier">values</span>[<span class="ruby-value">9</span>])&#x000A;215: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-constant">BigDecimal</span>(<span class="ruby-value str">&quot;1.920&quot;</span>), <span class="ruby-identifier">values</span>[<span class="ruby-value">10</span>])&#x000A;216: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-constant">BigDecimal</span>(<span class="ruby-value str">&quot;12345678901234567890&quot;</span>), <span class="ruby-identifier">values</span>[<span class="ruby-value">11</span>])&#x000A;217: &#x000A;218: <span class="ruby-identifier">assert_raise</span> <span class="ruby-constant">SdlParseError</span> <span class="ruby-keyword kw">do</span>&#x000A;219: <span class="ruby-identifier">parse_one_tag1</span>(<span class="ruby-value str">&quot;tag1 123.2.2&quot;</span>)&#x000A;220: <span class="ruby-keyword kw">end</span>&#x000A;221: <span class="ruby-identifier">assert_raise</span> <span class="ruby-constant">SdlParseError</span> <span class="ruby-keyword kw">do</span>&#x000A;222: <span class="ruby-identifier">parse_one_tag1</span>(<span class="ruby-value str">&quot;tag1 123.2e&quot;</span>)&#x000A;223: <span class="ruby-keyword kw">end</span>&#x000A;224: <span class="ruby-identifier">assert_raise</span> <span class="ruby-constant">SdlParseError</span> <span class="ruby-keyword kw">do</span>&#x000A;225: <span class="ruby-identifier">parse_one_tag1</span>(<span class="ruby-value str">&quot;tag1 +-123.2&quot;</span>)&#x000A;226: <span class="ruby-keyword kw">end</span>&#x000A;227: <span class="ruby-keyword kw">end</span></pre>
229
+ <pre id='M000102-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 207</span>&#x000A;207: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_numbers</span>&#x000A;208: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(&#x000A;209: <span class="ruby-value str">&quot;tag1 123 3000000000 456l 789L 123.45f 67.8F 910.11 12.13d 1415.16D 171.8BD 1.920bd 12345678901234567890BD&quot;</span>)&#x000A;210: <span class="ruby-identifier">values</span> = <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">values</span>&#x000A;211: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">123</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">0</span>])&#x000A;212: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">3000000000</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">1</span>])&#x000A;213: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">456</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">2</span>])&#x000A;214: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">789</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">3</span>])&#x000A;215: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">123.45</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">4</span>])&#x000A;216: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">67.8</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">5</span>])&#x000A;217: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">910.11</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">6</span>])&#x000A;218: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">12.13</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">7</span>])&#x000A;219: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">1415.16</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">8</span>])&#x000A;220: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-constant">BigDecimal</span>(<span class="ruby-value str">&quot;171.8&quot;</span>), <span class="ruby-identifier">values</span>[<span class="ruby-value">9</span>])&#x000A;221: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-constant">BigDecimal</span>(<span class="ruby-value str">&quot;1.920&quot;</span>), <span class="ruby-identifier">values</span>[<span class="ruby-value">10</span>])&#x000A;222: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-constant">BigDecimal</span>(<span class="ruby-value str">&quot;12345678901234567890&quot;</span>), <span class="ruby-identifier">values</span>[<span class="ruby-value">11</span>])&#x000A;223: &#x000A;224: <span class="ruby-identifier">assert_raise</span> <span class="ruby-constant">SdlParseError</span> <span class="ruby-keyword kw">do</span>&#x000A;225: <span class="ruby-identifier">parse_one_tag1</span>(<span class="ruby-value str">&quot;tag1 123.2.2&quot;</span>)&#x000A;226: <span class="ruby-keyword kw">end</span>&#x000A;227: <span class="ruby-identifier">assert_raise</span> <span class="ruby-constant">SdlParseError</span> <span class="ruby-keyword kw">do</span>&#x000A;228: <span class="ruby-identifier">parse_one_tag1</span>(<span class="ruby-value str">&quot;tag1 123.2e&quot;</span>)&#x000A;229: <span class="ruby-keyword kw">end</span>&#x000A;230: <span class="ruby-identifier">assert_raise</span> <span class="ruby-constant">SdlParseError</span> <span class="ruby-keyword kw">do</span>&#x000A;231: <span class="ruby-identifier">parse_one_tag1</span>(<span class="ruby-value str">&quot;tag1 +-123.2&quot;</span>)&#x000A;232: <span class="ruby-keyword kw">end</span>&#x000A;233: <span class="ruby-keyword kw">end</span></pre>
202
230
  </div>
203
231
  </div>
204
232
  <div class='method public-instance' id='method-M000091'>
@@ -211,20 +239,20 @@
211
239
  <a class='source-toggle' href='#' onclick="toggleCode('M000091-source'); return false">
212
240
  [show source]
213
241
  </a>
214
- <pre id='M000091-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 42</span>&#x000A;42: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_one_tag_alone</span>&#x000A;43: <span class="ruby-comment cmt"># Tag without namespace</span>&#x000A;44: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(<span class="ruby-value str">&quot;tag1&quot;</span>)&#x000A;45: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;tag1&quot;</span>, <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">name</span>, <span class="ruby-value str">&quot;name&quot;</span> )&#x000A;46: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&quot;</span>, <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">namespace</span>, <span class="ruby-value str">&quot;namespace&quot;</span> )&#x000A;47: &#x000A;48: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">0</span>, <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">values</span>.<span class="ruby-identifier">size</span>, <span class="ruby-value str">&quot;values&quot;</span>)&#x000A;49: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">0</span>, <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attributes</span>.<span class="ruby-identifier">size</span>, <span class="ruby-value str">&quot;attributes&quot;</span>)&#x000A;50: &#x000A;51: <span class="ruby-comment cmt"># Tag with namespace</span>&#x000A;52: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(<span class="ruby-value str">&quot;ns1:tag1&quot;</span>)&#x000A;53: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;tag1&quot;</span>, <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">name</span>, <span class="ruby-value str">&quot;name&quot;</span> )&#x000A;54: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;ns1&quot;</span>, <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">namespace</span>, <span class="ruby-value str">&quot;namespace&quot;</span> )&#x000A;55: <span class="ruby-keyword kw">end</span></pre>
242
+ <pre id='M000091-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 44</span>&#x000A;44: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_one_tag_alone</span>&#x000A;45: <span class="ruby-comment cmt"># Tag without namespace</span>&#x000A;46: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(<span class="ruby-value str">&quot;tag1&quot;</span>)&#x000A;47: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;tag1&quot;</span>, <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">name</span>, <span class="ruby-value str">&quot;name&quot;</span> )&#x000A;48: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;&quot;</span>, <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">namespace</span>, <span class="ruby-value str">&quot;namespace&quot;</span> )&#x000A;49: &#x000A;50: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">0</span>, <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">values</span>.<span class="ruby-identifier">size</span>, <span class="ruby-value str">&quot;values&quot;</span>)&#x000A;51: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">0</span>, <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attributes</span>.<span class="ruby-identifier">size</span>, <span class="ruby-value str">&quot;attributes&quot;</span>)&#x000A;52: &#x000A;53: <span class="ruby-comment cmt"># Tag with namespace</span>&#x000A;54: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(<span class="ruby-value str">&quot;ns1:tag1&quot;</span>)&#x000A;55: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;tag1&quot;</span>, <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">name</span>, <span class="ruby-value str">&quot;name&quot;</span> )&#x000A;56: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;ns1&quot;</span>, <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">namespace</span>, <span class="ruby-value str">&quot;namespace&quot;</span> )&#x000A;57: <span class="ruby-keyword kw">end</span></pre>
215
243
  </div>
216
244
  </div>
217
- <div class='method public-instance' id='method-M000110'>
218
- <a name='M000110'></a>
245
+ <div class='method public-instance' id='method-M000112'>
246
+ <a name='M000112'></a>
219
247
  <div class='synopsis'>
220
248
  <span class='name'>test_parse_error</span>
221
249
  <span class='arguments'>()</span>
222
250
  </div>
223
251
  <div class='source'>
224
- <a class='source-toggle' href='#' onclick="toggleCode('M000110-source'); return false">
252
+ <a class='source-toggle' href='#' onclick="toggleCode('M000112-source'); return false">
225
253
  [show source]
226
254
  </a>
227
- <pre id='M000110-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 388</span>&#x000A;388: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_parse_error</span>&#x000A;389: <span class="ruby-comment cmt"># WARNING: the line and col of an error is not accurate science. The goal here is to point to</span>&#x000A;390: <span class="ruby-comment cmt"># coordinates that are useful to the user.</span>&#x000A;391: <span class="ruby-comment cmt"># Exampe for a string litteral that spans over several line, some errors could be point to</span>&#x000A;392: <span class="ruby-comment cmt"># the start or to the end without too much ambiguity.</span>&#x000A;393: <span class="ruby-comment cmt"># Consequently, feel free to change the coordinates, if a change in the implementation</span>&#x000A;394: <span class="ruby-comment cmt"># modifies the x/y of the error and they still make sense.</span>&#x000A;395: <span class="ruby-identifier">assert_error_xy</span> <span class="ruby-value str">&quot;=&quot;</span>, <span class="ruby-value">1</span>, <span class="ruby-value">1</span>&#x000A;396: <span class="ruby-identifier">assert_error_xy</span> <span class="ruby-value str">&quot;tag1 xyz&quot;</span>, <span class="ruby-value">1</span>, <span class="ruby-value">6</span>&#x000A;397: <span class="ruby-identifier">assert_error_xy</span> <span class="ruby-value str">&quot;tag1 \\\nxyz&quot;</span>, <span class="ruby-value">2</span>, <span class="ruby-value">1</span>&#x000A;398: <span class="ruby-identifier">assert_error_xy</span> <span class="ruby-value str">&quot;tag1 \\\n xyz&quot;</span>, <span class="ruby-value">2</span>, <span class="ruby-value">4</span>&#x000A;399: &#x000A;400: <span class="ruby-identifier">source</span> = <span class="ruby-value str">&quot;-- my comment\n=\n&quot;</span>&#x000A;401: <span class="ruby-identifier">assert_error_xy</span> <span class="ruby-identifier">source</span>, <span class="ruby-value">2</span>, <span class="ruby-value">1</span>&#x000A;402: &#x000A;403: <span class="ruby-identifier">source</span> = <span class="ruby-value str">&quot;murder_plot 123 \\\\\n weight=456 \\\\\n * \\\\\n length=789\n&quot;</span>&#x000A;404: <span class="ruby-identifier">assert_error_xy</span> <span class="ruby-identifier">source</span>, <span class="ruby-value">3</span>, <span class="ruby-value">6</span>&#x000A;405: &#x000A;406: <span class="ruby-identifier">assert_error_xy</span> <span class="ruby-value str">'tag1 &quot;text\\&quot;'</span>, <span class="ruby-value">1</span>, <span class="ruby-value">13</span>&#x000A;407: &#x000A;408: <span class="ruby-identifier">source</span> = <span class="ruby-value str">&quot;murder_plot \&quot;abcd\\\\\n efghij\\\\\n kl\\\\\n mnopq\n&quot;</span>&#x000A;409: <span class="ruby-identifier">assert_error_xy</span> <span class="ruby-identifier">source</span>, <span class="ruby-value">4</span>, <span class="ruby-value">13</span>&#x000A;410: <span class="ruby-keyword kw">end</span></pre>
255
+ <pre id='M000112-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 428</span>&#x000A;428: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_parse_error</span>&#x000A;429: <span class="ruby-comment cmt"># WARNING: the line and col of an error is not accurate science. The goal here is to point to</span>&#x000A;430: <span class="ruby-comment cmt"># coordinates that are useful to the user.</span>&#x000A;431: <span class="ruby-comment cmt"># Exampe for a string litteral that spans over several line, some errors could be point to</span>&#x000A;432: <span class="ruby-comment cmt"># the start or to the end without too much ambiguity.</span>&#x000A;433: <span class="ruby-comment cmt"># Consequently, feel free to change the coordinates, if a change in the implementation</span>&#x000A;434: <span class="ruby-comment cmt"># modifies the x/y of the error and they still make sense.</span>&#x000A;435: <span class="ruby-identifier">assert_error_xy</span> <span class="ruby-value str">&quot;=&quot;</span>, <span class="ruby-value">1</span>, <span class="ruby-value">1</span>&#x000A;436: <span class="ruby-identifier">assert_error_xy</span> <span class="ruby-value str">&quot;tag1 xyz&quot;</span>, <span class="ruby-value">1</span>, <span class="ruby-value">6</span>&#x000A;437: <span class="ruby-identifier">assert_error_xy</span> <span class="ruby-value str">&quot;tag1 \\\nxyz&quot;</span>, <span class="ruby-value">2</span>, <span class="ruby-value">1</span>&#x000A;438: <span class="ruby-identifier">assert_error_xy</span> <span class="ruby-value str">&quot;tag1 \\\n xyz&quot;</span>, <span class="ruby-value">2</span>, <span class="ruby-value">4</span>&#x000A;439: &#x000A;440: <span class="ruby-identifier">source</span> = <span class="ruby-value str">&quot;-- my comment\n=\n&quot;</span>&#x000A;441: <span class="ruby-identifier">assert_error_xy</span> <span class="ruby-identifier">source</span>, <span class="ruby-value">2</span>, <span class="ruby-value">1</span>&#x000A;442: &#x000A;443: <span class="ruby-identifier">source</span> = <span class="ruby-value str">&quot;murder_plot 123 \\\\\n weight=456 \\\\\n * \\\\\n length=789\n&quot;</span>&#x000A;444: <span class="ruby-identifier">assert_error_xy</span> <span class="ruby-identifier">source</span>, <span class="ruby-value">3</span>, <span class="ruby-value">6</span>&#x000A;445: &#x000A;446: <span class="ruby-identifier">assert_error_xy</span> <span class="ruby-value str">'tag1 &quot;text\\&quot;'</span>, <span class="ruby-value">1</span>, <span class="ruby-value">13</span>&#x000A;447: &#x000A;448: <span class="ruby-identifier">source</span> = <span class="ruby-value str">&quot;murder_plot \&quot;abcd\\\\\n efghij\\\\\n kl\\\\\n mnopq\n&quot;</span>&#x000A;449: <span class="ruby-identifier">assert_error_xy</span> <span class="ruby-identifier">source</span>, <span class="ruby-value">4</span>, <span class="ruby-value">13</span>&#x000A;450: <span class="ruby-keyword kw">end</span></pre>
228
256
  </div>
229
257
  </div>
230
258
  <div class='method public-instance' id='method-M000109'>
@@ -237,7 +265,7 @@
237
265
  <a class='source-toggle' href='#' onclick="toggleCode('M000109-source'); return false">
238
266
  [show source]
239
267
  </a>
240
- <pre id='M000109-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 353</span>&#x000A;353: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_sub_tags</span>&#x000A;354: <span class="ruby-identifier">root</span> = <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">read</span> <span class="ruby-value str">&quot;wax {\n}\nsteack {\n bees {\n monopoly {\n }\n }\n goat_cheese\n truck {\n cathedral\n }\n}\npeanut.butter\n&quot;</span>&#x000A;355: &#x000A;356: <span class="ruby-identifier">expected</span> = <span class="ruby-constant">Tag</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">&quot;root&quot;</span>) <span class="ruby-keyword kw">do</span>&#x000A;357: <span class="ruby-identifier">new_child</span>(<span class="ruby-value str">&quot;wax&quot;</span>)&#x000A;358: <span class="ruby-identifier">new_child</span>(<span class="ruby-value str">&quot;steack&quot;</span>) <span class="ruby-keyword kw">do</span>&#x000A;359: <span class="ruby-identifier">new_child</span>(<span class="ruby-value str">&quot;bees&quot;</span>) <span class="ruby-keyword kw">do</span>&#x000A;360: <span class="ruby-identifier">new_child</span>(<span class="ruby-value str">&quot;monopoly&quot;</span>)&#x000A;361: <span class="ruby-keyword kw">end</span>&#x000A;362: <span class="ruby-identifier">new_child</span>(<span class="ruby-value str">&quot;goat_cheese&quot;</span>)&#x000A;363: <span class="ruby-identifier">new_child</span>(<span class="ruby-value str">&quot;truck&quot;</span>) <span class="ruby-keyword kw">do</span>&#x000A;364: <span class="ruby-identifier">new_child</span>(<span class="ruby-value str">&quot;cathedral&quot;</span>)&#x000A;365: <span class="ruby-keyword kw">end</span>&#x000A;366: <span class="ruby-keyword kw">end</span>&#x000A;367: <span class="ruby-identifier">new_child</span>(<span class="ruby-value str">&quot;peanut.butter&quot;</span>)&#x000A;368: <span class="ruby-keyword kw">end</span>&#x000A;369: &#x000A;370: <span class="ruby-identifier">assert_equal</span> <span class="ruby-identifier">expected</span>, <span class="ruby-identifier">root</span>&#x000A;371: <span class="ruby-keyword kw">end</span></pre>
268
+ <pre id='M000109-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 359</span>&#x000A;359: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_sub_tags</span>&#x000A;360: <span class="ruby-identifier">root</span> = <span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-identifier">read</span> <span class="ruby-value str">&quot;wax {\n}\nsteack {\n bees {\n monopoly {\n }\n }\n goat_cheese\n truck {\n cathedral\n }\n}\npeanut.butter\n&quot;</span>&#x000A;361: &#x000A;362: <span class="ruby-identifier">expected</span> = <span class="ruby-constant">Tag</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">&quot;root&quot;</span>) <span class="ruby-keyword kw">do</span>&#x000A;363: <span class="ruby-identifier">new_child</span>(<span class="ruby-value str">&quot;wax&quot;</span>)&#x000A;364: <span class="ruby-identifier">new_child</span>(<span class="ruby-value str">&quot;steack&quot;</span>) <span class="ruby-keyword kw">do</span>&#x000A;365: <span class="ruby-identifier">new_child</span>(<span class="ruby-value str">&quot;bees&quot;</span>) <span class="ruby-keyword kw">do</span>&#x000A;366: <span class="ruby-identifier">new_child</span>(<span class="ruby-value str">&quot;monopoly&quot;</span>)&#x000A;367: <span class="ruby-keyword kw">end</span>&#x000A;368: <span class="ruby-identifier">new_child</span>(<span class="ruby-value str">&quot;goat_cheese&quot;</span>)&#x000A;369: <span class="ruby-identifier">new_child</span>(<span class="ruby-value str">&quot;truck&quot;</span>) <span class="ruby-keyword kw">do</span>&#x000A;370: <span class="ruby-identifier">new_child</span>(<span class="ruby-value str">&quot;cathedral&quot;</span>)&#x000A;371: <span class="ruby-keyword kw">end</span>&#x000A;372: <span class="ruby-keyword kw">end</span>&#x000A;373: <span class="ruby-identifier">new_child</span>(<span class="ruby-value str">&quot;peanut.butter&quot;</span>)&#x000A;374: <span class="ruby-keyword kw">end</span>&#x000A;375: &#x000A;376: <span class="ruby-identifier">assert_equal</span> <span class="ruby-identifier">expected</span>, <span class="ruby-identifier">root</span>&#x000A;377: <span class="ruby-keyword kw">end</span></pre>
241
269
  </div>
242
270
  </div>
243
271
  <div class='method public-instance' id='method-M000098'>
@@ -250,7 +278,7 @@
250
278
  <a class='source-toggle' href='#' onclick="toggleCode('M000098-source'); return false">
251
279
  [show source]
252
280
  </a>
253
- <pre id='M000098-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 128</span>&#x000A;128: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_tag_with_attributes</span>&#x000A;129: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(&#x000A;130: <span class="ruby-value str">&quot;tag1 attr1=\&quot;99\&quot; ns:attr2=[QmVhdXR5IGlzIG5vdCBlbm91Z2gu]&quot;</span>)&#x000A;131: <span class="ruby-identifier">assert_not_nil</span>(<span class="ruby-identifier">tag1</span>, <span class="ruby-value str">&quot;tag1&quot;</span>)&#x000A;132: &#x000A;133: <span class="ruby-identifier">attributes</span> = <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attributes</span>&#x000A;134: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">2</span>, <span class="ruby-identifier">attributes</span>.<span class="ruby-identifier">size</span>, <span class="ruby-value str">&quot;attribute count&quot;</span>)&#x000A;135: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;99&quot;</span>, <span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;attr1&quot;</span>], <span class="ruby-value str">&quot;attr1&quot;</span>)&#x000A;136: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-constant">SdlBinary</span>(<span class="ruby-value str">&quot;Beauty is not enough.&quot;</span>), <span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;ns:attr2&quot;</span>], <span class="ruby-value str">&quot;attr2&quot;</span>)&#x000A;137: <span class="ruby-keyword kw">end</span></pre>
281
+ <pre id='M000098-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 130</span>&#x000A;130: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_tag_with_attributes</span>&#x000A;131: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(&#x000A;132: <span class="ruby-value str">&quot;tag1 attr1=\&quot;99\&quot; ns:attr2=[QmVhdXR5IGlzIG5vdCBlbm91Z2gu]&quot;</span>)&#x000A;133: <span class="ruby-identifier">assert_not_nil</span>(<span class="ruby-identifier">tag1</span>, <span class="ruby-value str">&quot;tag1&quot;</span>)&#x000A;134: &#x000A;135: <span class="ruby-identifier">attributes</span> = <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attributes</span>&#x000A;136: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">2</span>, <span class="ruby-identifier">attributes</span>.<span class="ruby-identifier">size</span>, <span class="ruby-value str">&quot;attribute count&quot;</span>)&#x000A;137: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;99&quot;</span>, <span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;attr1&quot;</span>], <span class="ruby-value str">&quot;attr1&quot;</span>)&#x000A;138: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-constant">SdlBinary</span>(<span class="ruby-value str">&quot;Beauty is not enough.&quot;</span>), <span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;ns:attr2&quot;</span>], <span class="ruby-value str">&quot;attr2&quot;</span>)&#x000A;139: <span class="ruby-keyword kw">end</span></pre>
254
282
  </div>
255
283
  </div>
256
284
  <div class='method public-instance' id='method-M000095'>
@@ -263,7 +291,7 @@
263
291
  <a class='source-toggle' href='#' onclick="toggleCode('M000095-source'); return false">
264
292
  [show source]
265
293
  </a>
266
- <pre id='M000095-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 80</span>&#x000A;80: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_tag_with_back_quote_string_values</span>&#x000A;81: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(&#x000A;82: <span class="ruby-value str">&quot;tag1 `abc` \&quot;d`e`f\&quot; `g\&quot;h\&quot;i` `j\\k+l` `m\\\nn\\\r\n \t o\r`&quot;</span>)&#x000A;83: <span class="ruby-identifier">assert_not_nil</span>(<span class="ruby-identifier">tag1</span>, <span class="ruby-value str">&quot;tag1&quot;</span>)&#x000A;84: <span class="ruby-identifier">values</span> = <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">values</span>&#x000A;85: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;abc&quot;</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">0</span>], <span class="ruby-value str">&quot;values[0]&quot;</span>)&#x000A;86: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;d`e`f&quot;</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">1</span>], <span class="ruby-value str">&quot;values[1]&quot;</span>)&#x000A;87: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;g\&quot;h\&quot;i&quot;</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">2</span>], <span class="ruby-value str">&quot;values[2]&quot;</span>)&#x000A;88: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;j\\k+l&quot;</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">3</span>], <span class="ruby-value str">&quot;values[3]&quot;</span>)&#x000A;89: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;m\\\nn\\\n \t o\r&quot;</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">4</span>], <span class="ruby-value str">&quot;values[4]&quot;</span>)&#x000A;90: <span class="ruby-keyword kw">end</span></pre>
294
+ <pre id='M000095-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 82</span>&#x000A;82: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_tag_with_back_quote_string_values</span>&#x000A;83: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(&#x000A;84: <span class="ruby-value str">&quot;tag1 `abc` \&quot;d`e`f\&quot; `g\&quot;h\&quot;i` `j\\k+l` `m\\\nn\\\r\n \t o\r`&quot;</span>)&#x000A;85: <span class="ruby-identifier">assert_not_nil</span>(<span class="ruby-identifier">tag1</span>, <span class="ruby-value str">&quot;tag1&quot;</span>)&#x000A;86: <span class="ruby-identifier">values</span> = <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">values</span>&#x000A;87: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;abc&quot;</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">0</span>], <span class="ruby-value str">&quot;values[0]&quot;</span>)&#x000A;88: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;d`e`f&quot;</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">1</span>], <span class="ruby-value str">&quot;values[1]&quot;</span>)&#x000A;89: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;g\&quot;h\&quot;i&quot;</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">2</span>], <span class="ruby-value str">&quot;values[2]&quot;</span>)&#x000A;90: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;j\\k+l&quot;</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">3</span>], <span class="ruby-value str">&quot;values[3]&quot;</span>)&#x000A;91: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;m\\\nn\\\n \t o\r&quot;</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">4</span>], <span class="ruby-value str">&quot;values[4]&quot;</span>)&#x000A;92: <span class="ruby-keyword kw">end</span></pre>
267
295
  </div>
268
296
  </div>
269
297
  <div class='method public-instance' id='method-M000096'>
@@ -276,7 +304,7 @@
276
304
  <a class='source-toggle' href='#' onclick="toggleCode('M000096-source'); return false">
277
305
  [show source]
278
306
  </a>
279
- <pre id='M000096-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 92</span>&#x000A; 92: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_tag_with_base64_values</span>&#x000A; 93: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(&#x000A; 94: <span class="ruby-value str">&quot;tag1 [V2VsY29tZSB0byB0aGUgY3J1ZWwgd29ybGQu] [\n SG9wZSB5\n b3UnbGwg\n ZmluZCB5\n b3VyIHdh\n eS4=\n]\n&quot;</span>&#x000A; 95: )&#x000A; 96: <span class="ruby-identifier">assert_not_nil</span>(<span class="ruby-identifier">tag1</span>, <span class="ruby-value str">&quot;tag1&quot;</span>)&#x000A; 97: <span class="ruby-identifier">values</span> = <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">values</span>&#x000A; 98: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-constant">SdlBinary</span>(<span class="ruby-value str">&quot;Welcome to the cruel world.&quot;</span>), <span class="ruby-identifier">values</span>[<span class="ruby-value">0</span>], <span class="ruby-value str">&quot;values[0]&quot;</span>)&#x000A; 99: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-constant">SdlBinary</span>(<span class="ruby-value str">&quot;Hope you'll find your way.&quot;</span>), <span class="ruby-identifier">values</span>[<span class="ruby-value">1</span>], <span class="ruby-value str">&quot;values[1]&quot;</span>)&#x000A;100: <span class="ruby-keyword kw">end</span></pre>
307
+ <pre id='M000096-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 94</span>&#x000A; 94: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_tag_with_base64_values</span>&#x000A; 95: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(&#x000A; 96: <span class="ruby-value str">&quot;tag1 [V2VsY29tZSB0byB0aGUgY3J1ZWwgd29ybGQu] [\n SG9wZSB5\n b3UnbGwg\n ZmluZCB5\n b3VyIHdh\n eS4=\n]\n&quot;</span>&#x000A; 97: )&#x000A; 98: <span class="ruby-identifier">assert_not_nil</span>(<span class="ruby-identifier">tag1</span>, <span class="ruby-value str">&quot;tag1&quot;</span>)&#x000A; 99: <span class="ruby-identifier">values</span> = <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">values</span>&#x000A;100: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-constant">SdlBinary</span>(<span class="ruby-value str">&quot;Welcome to the cruel world.&quot;</span>), <span class="ruby-identifier">values</span>[<span class="ruby-value">0</span>], <span class="ruby-value str">&quot;values[0]&quot;</span>)&#x000A;101: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-constant">SDL4R</span><span class="ruby-operator">::</span><span class="ruby-constant">SdlBinary</span>(<span class="ruby-value str">&quot;Hope you'll find your way.&quot;</span>), <span class="ruby-identifier">values</span>[<span class="ruby-value">1</span>], <span class="ruby-value str">&quot;values[1]&quot;</span>)&#x000A;102: <span class="ruby-keyword kw">end</span></pre>
280
308
  </div>
281
309
  </div>
282
310
  <div class='method public-instance' id='method-M000094'>
@@ -289,7 +317,7 @@
289
317
  <a class='source-toggle' href='#' onclick="toggleCode('M000094-source'); return false">
290
318
  [show source]
291
319
  </a>
292
- <pre id='M000094-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 71</span>&#x000A;71: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_tag_with_double_quote_string_values</span>&#x000A;72: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(<span class="ruby-value str">&quot;tag1 \&quot;abc\&quot; \&quot;d\\\ne\\\nf\&quot; \&quot;g\\\n \t hi\&quot;&quot;</span>)&#x000A;73: <span class="ruby-identifier">assert_not_nil</span>(<span class="ruby-identifier">tag1</span>, <span class="ruby-value str">&quot;tag1&quot;</span>)&#x000A;74: <span class="ruby-identifier">values</span> = <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">values</span>&#x000A;75: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;abc&quot;</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">0</span>], <span class="ruby-value str">&quot;values[0]&quot;</span>)&#x000A;76: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;def&quot;</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">1</span>], <span class="ruby-value str">&quot;values[1]&quot;</span>)&#x000A;77: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;ghi&quot;</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">2</span>], <span class="ruby-value str">&quot;values[2]&quot;</span>)&#x000A;78: <span class="ruby-keyword kw">end</span></pre>
320
+ <pre id='M000094-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 73</span>&#x000A;73: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_tag_with_double_quote_string_values</span>&#x000A;74: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(<span class="ruby-value str">&quot;tag1 \&quot;abc\&quot; \&quot;d\\\ne\\\nf\&quot; \&quot;g\\\n \t hi\&quot;&quot;</span>)&#x000A;75: <span class="ruby-identifier">assert_not_nil</span>(<span class="ruby-identifier">tag1</span>, <span class="ruby-value str">&quot;tag1&quot;</span>)&#x000A;76: <span class="ruby-identifier">values</span> = <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">values</span>&#x000A;77: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;abc&quot;</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">0</span>], <span class="ruby-value str">&quot;values[0]&quot;</span>)&#x000A;78: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;def&quot;</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">1</span>], <span class="ruby-value str">&quot;values[1]&quot;</span>)&#x000A;79: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;ghi&quot;</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">2</span>], <span class="ruby-value str">&quot;values[2]&quot;</span>)&#x000A;80: <span class="ruby-keyword kw">end</span></pre>
293
321
  </div>
294
322
  </div>
295
323
  <div class='method public-instance' id='method-M000097'>
@@ -302,7 +330,7 @@
302
330
  <a class='source-toggle' href='#' onclick="toggleCode('M000097-source'); return false">
303
331
  [show source]
304
332
  </a>
305
- <pre id='M000097-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 111</span>&#x000A;111: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_tag_with_one_attribute</span>&#x000A;112: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(<span class="ruby-value str">&quot;tag1 attr1=99&quot;</span>)&#x000A;113: <span class="ruby-identifier">assert_not_nil</span>(<span class="ruby-identifier">tag1</span>, <span class="ruby-value str">&quot;tag1&quot;</span>)&#x000A;114: &#x000A;115: <span class="ruby-identifier">values</span> = <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">values</span>&#x000A;116: <span class="ruby-identifier">assert</span>(<span class="ruby-identifier">values</span>.<span class="ruby-identifier">empty?</span>, <span class="ruby-value str">&quot;value count&quot;</span>)&#x000A;117: &#x000A;118: <span class="ruby-identifier">attributes</span> = <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attributes</span>&#x000A;119: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">1</span>, <span class="ruby-identifier">attributes</span>.<span class="ruby-identifier">size</span>, <span class="ruby-value str">&quot;attribute count&quot;</span>)&#x000A;120: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">99</span>, <span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;attr1&quot;</span>], <span class="ruby-value str">&quot;attr1&quot;</span>)&#x000A;121: &#x000A;122: <span class="ruby-comment cmt"># check the parsing with line continuations</span>&#x000A;123: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(<span class="ruby-value str">&quot;tag1\\\nattr1=\\\n99&quot;</span>)&#x000A;124: <span class="ruby-identifier">assert_not_nil</span>(<span class="ruby-identifier">tag1</span>, <span class="ruby-value str">&quot;tag1&quot;</span>)&#x000A;125: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">99</span>, <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;attr1&quot;</span>), <span class="ruby-value str">&quot;attr1&quot;</span>)&#x000A;126: <span class="ruby-keyword kw">end</span></pre>
333
+ <pre id='M000097-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 113</span>&#x000A;113: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_tag_with_one_attribute</span>&#x000A;114: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(<span class="ruby-value str">&quot;tag1 attr1=99&quot;</span>)&#x000A;115: <span class="ruby-identifier">assert_not_nil</span>(<span class="ruby-identifier">tag1</span>, <span class="ruby-value str">&quot;tag1&quot;</span>)&#x000A;116: &#x000A;117: <span class="ruby-identifier">values</span> = <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">values</span>&#x000A;118: <span class="ruby-identifier">assert</span>(<span class="ruby-identifier">values</span>.<span class="ruby-identifier">empty?</span>, <span class="ruby-value str">&quot;value count&quot;</span>)&#x000A;119: &#x000A;120: <span class="ruby-identifier">attributes</span> = <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attributes</span>&#x000A;121: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">1</span>, <span class="ruby-identifier">attributes</span>.<span class="ruby-identifier">size</span>, <span class="ruby-value str">&quot;attribute count&quot;</span>)&#x000A;122: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">99</span>, <span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;attr1&quot;</span>], <span class="ruby-value str">&quot;attr1&quot;</span>)&#x000A;123: &#x000A;124: <span class="ruby-comment cmt"># check the parsing with line continuations</span>&#x000A;125: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(<span class="ruby-value str">&quot;tag1\\\nattr1=\\\n99&quot;</span>)&#x000A;126: <span class="ruby-identifier">assert_not_nil</span>(<span class="ruby-identifier">tag1</span>, <span class="ruby-value str">&quot;tag1&quot;</span>)&#x000A;127: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">99</span>, <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;attr1&quot;</span>), <span class="ruby-value str">&quot;attr1&quot;</span>)&#x000A;128: <span class="ruby-keyword kw">end</span></pre>
306
334
  </div>
307
335
  </div>
308
336
  <div class='method public-instance' id='method-M000092'>
@@ -315,7 +343,7 @@
315
343
  <a class='source-toggle' href='#' onclick="toggleCode('M000092-source'); return false">
316
344
  [show source]
317
345
  </a>
318
- <pre id='M000092-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 57</span>&#x000A;57: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_tag_with_one_value</span>&#x000A;58: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(<span class="ruby-value str">&quot;tag1 1&quot;</span>)&#x000A;59: <span class="ruby-identifier">assert_not_nil</span>(<span class="ruby-identifier">tag1</span>, <span class="ruby-value str">&quot;tag1&quot;</span>)&#x000A;60: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">1</span>, <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">value</span>, <span class="ruby-value str">&quot;value&quot;</span>)&#x000A;61: <span class="ruby-keyword kw">end</span></pre>
346
+ <pre id='M000092-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 59</span>&#x000A;59: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_tag_with_one_value</span>&#x000A;60: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(<span class="ruby-value str">&quot;tag1 1&quot;</span>)&#x000A;61: <span class="ruby-identifier">assert_not_nil</span>(<span class="ruby-identifier">tag1</span>, <span class="ruby-value str">&quot;tag1&quot;</span>)&#x000A;62: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">1</span>, <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">value</span>, <span class="ruby-value str">&quot;value&quot;</span>)&#x000A;63: <span class="ruby-keyword kw">end</span></pre>
319
347
  </div>
320
348
  </div>
321
349
  <div class='method public-instance' id='method-M000093'>
@@ -328,7 +356,7 @@
328
356
  <a class='source-toggle' href='#' onclick="toggleCode('M000093-source'); return false">
329
357
  [show source]
330
358
  </a>
331
- <pre id='M000093-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 63</span>&#x000A;63: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_tag_with_two_values</span>&#x000A;64: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(<span class="ruby-value str">&quot;tag1 1 \&quot;abc\&quot;&quot;</span>)&#x000A;65: <span class="ruby-identifier">assert_not_nil</span>(<span class="ruby-identifier">tag1</span>, <span class="ruby-value str">&quot;tag1&quot;</span>)&#x000A;66: <span class="ruby-identifier">values</span> = <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">values</span>&#x000A;67: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">1</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">0</span>], <span class="ruby-value str">&quot;1st value&quot;</span>)&#x000A;68: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;abc&quot;</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">1</span>], <span class="ruby-value str">&quot;2nd value&quot;</span>)&#x000A;69: <span class="ruby-keyword kw">end</span></pre>
359
+ <pre id='M000093-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 65</span>&#x000A;65: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_tag_with_two_values</span>&#x000A;66: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(<span class="ruby-value str">&quot;tag1 1 \&quot;abc\&quot;&quot;</span>)&#x000A;67: <span class="ruby-identifier">assert_not_nil</span>(<span class="ruby-identifier">tag1</span>, <span class="ruby-value str">&quot;tag1&quot;</span>)&#x000A;68: <span class="ruby-identifier">values</span> = <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">values</span>&#x000A;69: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value">1</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">0</span>], <span class="ruby-value str">&quot;1st value&quot;</span>)&#x000A;70: <span class="ruby-identifier">assert_equal</span>(<span class="ruby-value str">&quot;abc&quot;</span>, <span class="ruby-identifier">values</span>[<span class="ruby-value">1</span>], <span class="ruby-value str">&quot;2nd value&quot;</span>)&#x000A;71: <span class="ruby-keyword kw">end</span></pre>
332
360
  </div>
333
361
  </div>
334
362
  <div class='method public-instance' id='method-M000100'>
@@ -341,7 +369,7 @@
341
369
  <a class='source-toggle' href='#' onclick="toggleCode('M000100-source'); return false">
342
370
  [show source]
343
371
  </a>
344
- <pre id='M000100-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 145</span>&#x000A;145: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_time</span>&#x000A;146: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(&#x000A;147: <span class="ruby-value str">&quot;tag1 time=12:23:56 short_time=00:12:32.423&quot;</span> <span class="ruby-operator">+</span>&#x000A;148: <span class="ruby-value str">&quot; long_time=30d:15:23:04.023 before=-00:02:30&quot;</span>)&#x000A;149: <span class="ruby-identifier">assert_equal</span>(&#x000A;150: <span class="ruby-constant">SdlTimeSpan</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">0</span>, <span class="ruby-value">12</span>, <span class="ruby-value">23</span>, <span class="ruby-value">56</span>),&#x000A;151: <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;time&quot;</span>),&#x000A;152: <span class="ruby-value str">&quot;time&quot;</span>);&#x000A;153: <span class="ruby-identifier">assert_equal</span>(&#x000A;154: <span class="ruby-constant">SdlTimeSpan</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-value">12</span>, <span class="ruby-value">32</span>, <span class="ruby-value">423</span>),&#x000A;155: <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;short_time&quot;</span>),&#x000A;156: <span class="ruby-value str">&quot;short_time&quot;</span>);&#x000A;157: <span class="ruby-identifier">assert_equal</span>(&#x000A;158: <span class="ruby-constant">SdlTimeSpan</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">30</span>, <span class="ruby-value">15</span>, <span class="ruby-value">23</span>, <span class="ruby-value">4</span>, <span class="ruby-value">23</span>),&#x000A;159: <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;long_time&quot;</span>),&#x000A;160: <span class="ruby-value str">&quot;long_time&quot;</span>);&#x000A;161: <span class="ruby-identifier">assert_equal</span>(&#x000A;162: <span class="ruby-constant">SdlTimeSpan</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-value">-2</span>, <span class="ruby-value">-30</span>),&#x000A;163: <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;before&quot;</span>),&#x000A;164: <span class="ruby-value str">&quot;before&quot;</span>);&#x000A;165: <span class="ruby-keyword kw">end</span></pre>
372
+ <pre id='M000100-source'> <span class="ruby-comment cmt"># File test/sdl4r/parser_test.rb, line 147</span>&#x000A;147: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">test_time</span>&#x000A;148: <span class="ruby-identifier">tag1</span> = <span class="ruby-identifier">parse_one_tag1</span>(&#x000A;149: <span class="ruby-value str">&quot;tag1 time=12:23:56 short_time=00:12:32.423&quot;</span> <span class="ruby-operator">+</span>&#x000A;150: <span class="ruby-value str">&quot; long_time=30d:15:23:04.023 before=-00:02:30&quot;</span>)&#x000A;151: <span class="ruby-identifier">assert_equal</span>(&#x000A;152: <span class="ruby-constant">SdlTimeSpan</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">0</span>, <span class="ruby-value">12</span>, <span class="ruby-value">23</span>, <span class="ruby-value">56</span>),&#x000A;153: <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;time&quot;</span>),&#x000A;154: <span class="ruby-value str">&quot;time&quot;</span>);&#x000A;155: <span class="ruby-identifier">assert_equal</span>(&#x000A;156: <span class="ruby-constant">SdlTimeSpan</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-value">12</span>, <span class="ruby-value">32</span>, <span class="ruby-value">423</span>),&#x000A;157: <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;short_time&quot;</span>),&#x000A;158: <span class="ruby-value str">&quot;short_time&quot;</span>);&#x000A;159: <span class="ruby-identifier">assert_equal</span>(&#x000A;160: <span class="ruby-constant">SdlTimeSpan</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">30</span>, <span class="ruby-value">15</span>, <span class="ruby-value">23</span>, <span class="ruby-value">4</span>, <span class="ruby-value">23</span>),&#x000A;161: <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;long_time&quot;</span>),&#x000A;162: <span class="ruby-value str">&quot;long_time&quot;</span>);&#x000A;163: <span class="ruby-identifier">assert_equal</span>(&#x000A;164: <span class="ruby-constant">SdlTimeSpan</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-value">-2</span>, <span class="ruby-value">-30</span>),&#x000A;165: <span class="ruby-identifier">tag1</span>.<span class="ruby-identifier">attribute</span>(<span class="ruby-value str">&quot;before&quot;</span>),&#x000A;166: <span class="ruby-value str">&quot;before&quot;</span>);&#x000A;167: <span class="ruby-keyword kw">end</span></pre>
345
373
  </div>
346
374
  </div>
347
375
  </div>