sdl4r 0.9.7 → 0.9.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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>