rubybreaker 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. data/NEWS +5 -0
  2. data/NOTES +9 -0
  3. data/README.md +100 -183
  4. data/Rakefile +21 -6
  5. data/VERSION +1 -1
  6. data/bin/rubybreaker +34 -50
  7. data/lib/rubybreaker/debug/debug.rb +6 -0
  8. data/lib/rubybreaker/doc/rdoc.rb +37 -0
  9. data/lib/rubybreaker/doc.rb +3 -0
  10. data/lib/rubybreaker/runtime/inspector.rb +6 -28
  11. data/lib/rubybreaker/runtime/monitor.rb +21 -17
  12. data/lib/rubybreaker/runtime/object_wrapper.rb +7 -2
  13. data/lib/rubybreaker/runtime/type_system.rb +3 -5
  14. data/lib/rubybreaker/runtime/typesig_unparser.rb +1 -4
  15. data/lib/rubybreaker/runtime.rb +64 -105
  16. data/lib/rubybreaker/task.rb +97 -0
  17. data/lib/rubybreaker/test/rspec.rb +1 -1
  18. data/lib/rubybreaker/test/testcase.rb +13 -28
  19. data/lib/rubybreaker/type/type.rb +1 -1
  20. data/lib/rubybreaker/typing/subtyping.rb +10 -5
  21. data/lib/rubybreaker/util.rb +0 -1
  22. data/lib/rubybreaker.rb +163 -115
  23. data/test/integrated/tc_both_broken_breakable.rb +5 -4
  24. data/test/integrated/tc_class_methods.rb +4 -3
  25. data/test/integrated/tc_inherit_broken.rb +4 -3
  26. data/test/integrated/tc_method_missing.rb +4 -4
  27. data/test/integrated/tc_namespace.rb +4 -2
  28. data/test/integrated/tc_simple1.rb +4 -3
  29. data/test/runtime/tc_obj_wrapper.rb +25 -6
  30. data/test/runtime/tc_typesig_parser.rb +0 -1
  31. data/test/testtask/sample.rb +10 -0
  32. data/test/testtask/tc_testtask.rb +25 -0
  33. data/test/ts_rspec.rb +21 -15
  34. data/test/typing/tc_typing.rb +2 -3
  35. data/webpage/index.html +105 -193
  36. data/webpage/rdoc/Kernel.html +286 -0
  37. data/webpage/rdoc/Object.html +17 -11
  38. data/webpage/rdoc/Rake/RubyBreakerTestTask.html +374 -0
  39. data/webpage/rdoc/Rake.html +212 -0
  40. data/webpage/rdoc/RubyBreaker/Breakable.html +24 -40
  41. data/webpage/rdoc/RubyBreaker/Broken.html +21 -69
  42. data/webpage/rdoc/RubyBreaker/Context.html +16 -10
  43. data/webpage/rdoc/RubyBreaker/Errors/InternalError.html +16 -10
  44. data/webpage/rdoc/RubyBreaker/Errors/InvalidSubtypeCheck.html +16 -10
  45. data/webpage/rdoc/RubyBreaker/Errors/InvalidTypeConstruction.html +16 -10
  46. data/webpage/rdoc/RubyBreaker/Errors/SubtypeFailure.html +16 -10
  47. data/webpage/rdoc/RubyBreaker/Errors/TypeError.html +16 -10
  48. data/webpage/rdoc/RubyBreaker/Errors/UserError.html +16 -10
  49. data/webpage/rdoc/RubyBreaker/Errors.html +16 -10
  50. data/webpage/rdoc/RubyBreaker/ObjectPosition.html +16 -10
  51. data/webpage/rdoc/RubyBreaker/Position.html +16 -10
  52. data/webpage/rdoc/RubyBreaker/{TestCase.html → RDocSupport.html} +81 -82
  53. data/webpage/rdoc/RubyBreaker/RubyTypeUtils.html +16 -10
  54. data/webpage/rdoc/RubyBreaker/Runtime/Inspector.html +25 -44
  55. data/webpage/rdoc/RubyBreaker/Runtime/MethodInfo.html +16 -10
  56. data/webpage/rdoc/RubyBreaker/Runtime/Monitor.html +19 -13
  57. data/webpage/rdoc/RubyBreaker/Runtime/MonitorInstaller.html +37 -25
  58. data/webpage/rdoc/RubyBreaker/Runtime/MonitorSwitch.html +20 -14
  59. data/webpage/rdoc/RubyBreaker/Runtime/MonitorUtils.html +21 -15
  60. data/webpage/rdoc/RubyBreaker/Runtime/ObjectWrapper.html +23 -12
  61. data/webpage/rdoc/RubyBreaker/Runtime/Pluggable.html +16 -10
  62. data/webpage/rdoc/RubyBreaker/Runtime/TypeSigParser.html +16 -10
  63. data/webpage/rdoc/RubyBreaker/Runtime/{TypesigUnparser.html → TypeSigUnparser.html} +19 -16
  64. data/webpage/rdoc/RubyBreaker/Runtime/TypeSystem.html +18 -14
  65. data/webpage/rdoc/RubyBreaker/Runtime.html +145 -11
  66. data/webpage/rdoc/RubyBreaker/TypeComparer.html +16 -10
  67. data/webpage/rdoc/RubyBreaker/TypeDefs/AnyType.html +16 -10
  68. data/webpage/rdoc/RubyBreaker/TypeDefs/BlockType.html +16 -10
  69. data/webpage/rdoc/RubyBreaker/TypeDefs/DuckType.html +16 -10
  70. data/webpage/rdoc/RubyBreaker/TypeDefs/FusionType.html +16 -10
  71. data/webpage/rdoc/RubyBreaker/TypeDefs/MethodListType.html +16 -10
  72. data/webpage/rdoc/RubyBreaker/TypeDefs/MethodType.html +16 -10
  73. data/webpage/rdoc/RubyBreaker/TypeDefs/NilType.html +16 -10
  74. data/webpage/rdoc/RubyBreaker/TypeDefs/NominalType.html +16 -10
  75. data/webpage/rdoc/RubyBreaker/TypeDefs/OptionalType.html +16 -10
  76. data/webpage/rdoc/RubyBreaker/TypeDefs/OrType.html +16 -10
  77. data/webpage/rdoc/RubyBreaker/TypeDefs/SelfType.html +17 -11
  78. data/webpage/rdoc/RubyBreaker/TypeDefs/Type.html +17 -11
  79. data/webpage/rdoc/RubyBreaker/TypeDefs/VarLengthType.html +16 -10
  80. data/webpage/rdoc/RubyBreaker/TypeDefs.html +16 -10
  81. data/webpage/rdoc/RubyBreaker/TypeUnparser.html +16 -10
  82. data/webpage/rdoc/RubyBreaker/Typing.html +17 -11
  83. data/webpage/rdoc/RubyBreaker/Util.html +16 -10
  84. data/webpage/rdoc/RubyBreaker.html +167 -34
  85. data/webpage/rdoc/{RubyBreaker/Runtime/TypePlaceholder.html → Test/Unit/TestCase.html} +68 -39
  86. data/webpage/rdoc/Test/Unit.html +211 -0
  87. data/webpage/rdoc/Test.html +211 -0
  88. data/webpage/rdoc/created.rid +18 -17
  89. data/webpage/rdoc/index.html +16 -10
  90. data/webpage/rdoc/js/search_index.js +1 -1
  91. data/webpage/rdoc/table_of_contents.html +61 -48
  92. metadata +21 -12
  93. data/lib/rubybreaker/rubylib/core.rb +0 -2483
  94. data/lib/rubybreaker/rubylib.rb +0 -3
  95. data/lib/rubybreaker/runtime/type_placeholder.rb +0 -23
  96. data/webpage/rdoc/RubyBreaker/Broken/BrokenEigen.html +0 -305
  97. data/webpage/rdoc/RubyBreaker/Main.html +0 -458
@@ -1,3 +0,0 @@
1
-
2
- require_relative "rubylib/core"
3
-
@@ -1,23 +0,0 @@
1
- #--
2
- # This file defines the placeholder for types which will be tracked by
3
- # two (global) constant--one for Breakable and the other for Broken.
4
-
5
- module RubyBreaker
6
-
7
- module Runtime
8
-
9
- # This class is a placeholder for method types
10
- class TypePlaceholder
11
-
12
- # This accessor sets/gets instance method map
13
- attr_accessor :meth_type_map # method name => method type
14
-
15
- def initialize()
16
- @meth_type_map = {}
17
- end
18
-
19
- end
20
-
21
- end
22
-
23
- end
@@ -1,305 +0,0 @@
1
- <!DOCTYPE html>
2
-
3
- <html>
4
- <head>
5
- <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
6
-
7
- <title>module RubyBreaker::Broken::BrokenEigen - RDoc Documentation</title>
8
-
9
- <link type="text/css" media="screen" href="../../rdoc.css" rel="stylesheet">
10
-
11
- <script type="text/javascript">
12
- var rdoc_rel_prefix = "../../";
13
- </script>
14
-
15
- <script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>
16
- <script type="text/javascript" charset="utf-8" src="../../js/navigation.js"></script>
17
- <script type="text/javascript" charset="utf-8" src="../../js/search_index.js"></script>
18
- <script type="text/javascript" charset="utf-8" src="../../js/search.js"></script>
19
- <script type="text/javascript" charset="utf-8" src="../../js/searcher.js"></script>
20
- <script type="text/javascript" charset="utf-8" src="../../js/darkfish.js"></script>
21
-
22
-
23
- <body id="top" class="module">
24
- <nav id="metadata">
25
- <nav id="home-section" class="section">
26
- <h3 class="section-header">
27
- <a href="../../index.html">Home</a>
28
- <a href="../../table_of_contents.html#classes">Classes</a>
29
- <a href="../../table_of_contents.html#methods">Methods</a>
30
- </h3>
31
- </nav>
32
-
33
-
34
- <nav id="search-section" class="section project-section" class="initially-hidden">
35
- <form action="#" method="get" accept-charset="utf-8">
36
- <h3 class="section-header">
37
- <input type="text" name="search" placeholder="Search" id="search-field"
38
- title="Type to search, Up and Down to navigate, Enter to load">
39
- </h3>
40
- </form>
41
-
42
- <ul id="search-results" class="initially-hidden"></ul>
43
- </nav>
44
-
45
-
46
- <div id="file-metadata">
47
- <nav id="file-list-section" class="section">
48
- <h3 class="section-header">Defined In</h3>
49
- <ul>
50
- <li>lib/rubybreaker/runtime.rb
51
- </ul>
52
- </nav>
53
-
54
-
55
- </div>
56
-
57
- <div id="class-metadata">
58
-
59
-
60
- <!-- Included Modules -->
61
- <nav id="includes-section" class="section">
62
- <h3 class="section-header">Included Modules</h3>
63
-
64
- <ul class="link-list">
65
-
66
-
67
- <li><a class="include" href="../TypeDefs.html">RubyBreaker::TypeDefs</a>
68
-
69
-
70
-
71
- <li><a class="include" href="../Runtime.html">RubyBreaker::Runtime</a>
72
-
73
-
74
- </ul>
75
- </nav>
76
-
77
- <!-- Method Quickref -->
78
- <nav id="method-list-section" class="section">
79
- <h3 class="section-header">Methods</h3>
80
-
81
- <ul class="link-list">
82
-
83
- <li><a href="#method-i-typesig">#typesig</a>
84
-
85
- </ul>
86
- </nav>
87
-
88
- </div>
89
-
90
- <div id="project-metadata">
91
-
92
- <nav id="classindex-section" class="section project-section">
93
- <h3 class="section-header">Class and Module Index</h3>
94
-
95
- <ul class="link-list">
96
-
97
- <li><a href="../../RubyBreaker.html">RubyBreaker</a>
98
-
99
- <li><a href="../../RubyBreaker/Breakable.html">RubyBreaker::Breakable</a>
100
-
101
- <li><a href="../../RubyBreaker/Broken.html">RubyBreaker::Broken</a>
102
-
103
- <li><a href="../../RubyBreaker/Broken/BrokenEigen.html">RubyBreaker::Broken::BrokenEigen</a>
104
-
105
- <li><a href="../../RubyBreaker/Context.html">RubyBreaker::Context</a>
106
-
107
- <li><a href="../../RubyBreaker/Errors.html">RubyBreaker::Errors</a>
108
-
109
- <li><a href="../../RubyBreaker/Errors/InternalError.html">RubyBreaker::Errors::InternalError</a>
110
-
111
- <li><a href="../../RubyBreaker/Errors/InvalidSubtypeCheck.html">RubyBreaker::Errors::InvalidSubtypeCheck</a>
112
-
113
- <li><a href="../../RubyBreaker/Errors/InvalidTypeConstruction.html">RubyBreaker::Errors::InvalidTypeConstruction</a>
114
-
115
- <li><a href="../../RubyBreaker/Errors/SubtypeFailure.html">RubyBreaker::Errors::SubtypeFailure</a>
116
-
117
- <li><a href="../../RubyBreaker/Errors/TypeError.html">RubyBreaker::Errors::TypeError</a>
118
-
119
- <li><a href="../../RubyBreaker/Errors/UserError.html">RubyBreaker::Errors::UserError</a>
120
-
121
- <li><a href="../../RubyBreaker/Main.html">RubyBreaker::Main</a>
122
-
123
- <li><a href="../../RubyBreaker/ObjectPosition.html">RubyBreaker::ObjectPosition</a>
124
-
125
- <li><a href="../../RubyBreaker/Position.html">RubyBreaker::Position</a>
126
-
127
- <li><a href="../../RubyBreaker/RubyTypeUtils.html">RubyBreaker::RubyTypeUtils</a>
128
-
129
- <li><a href="../../RubyBreaker/Runtime.html">RubyBreaker::Runtime</a>
130
-
131
- <li><a href="../../RubyBreaker/Runtime/Inspector.html">RubyBreaker::Runtime::Inspector</a>
132
-
133
- <li><a href="../../RubyBreaker/Runtime/MethodInfo.html">RubyBreaker::Runtime::MethodInfo</a>
134
-
135
- <li><a href="../../RubyBreaker/Runtime/Monitor.html">RubyBreaker::Runtime::Monitor</a>
136
-
137
- <li><a href="../../RubyBreaker/Runtime/MonitorInstaller.html">RubyBreaker::Runtime::MonitorInstaller</a>
138
-
139
- <li><a href="../../RubyBreaker/Runtime/MonitorSwitch.html">RubyBreaker::Runtime::MonitorSwitch</a>
140
-
141
- <li><a href="../../RubyBreaker/Runtime/MonitorUtils.html">RubyBreaker::Runtime::MonitorUtils</a>
142
-
143
- <li><a href="../../RubyBreaker/Runtime/ObjectWrapper.html">RubyBreaker::Runtime::ObjectWrapper</a>
144
-
145
- <li><a href="../../RubyBreaker/Runtime/Pluggable.html">RubyBreaker::Runtime::Pluggable</a>
146
-
147
- <li><a href="../../RubyBreaker/Runtime/TypePlaceholder.html">RubyBreaker::Runtime::TypePlaceholder</a>
148
-
149
- <li><a href="../../RubyBreaker/Runtime/TypeSigParser.html">RubyBreaker::Runtime::TypeSigParser</a>
150
-
151
- <li><a href="../../RubyBreaker/Runtime/TypeSystem.html">RubyBreaker::Runtime::TypeSystem</a>
152
-
153
- <li><a href="../../RubyBreaker/Runtime/TypesigUnparser.html">RubyBreaker::Runtime::TypesigUnparser</a>
154
-
155
- <li><a href="../../RubyBreaker/TestCase.html">RubyBreaker::TestCase</a>
156
-
157
- <li><a href="../../RubyBreaker/TypeComparer.html">RubyBreaker::TypeComparer</a>
158
-
159
- <li><a href="../../RubyBreaker/TypeDefs.html">RubyBreaker::TypeDefs</a>
160
-
161
- <li><a href="../../RubyBreaker/TypeDefs/AnyType.html">RubyBreaker::TypeDefs::AnyType</a>
162
-
163
- <li><a href="../../RubyBreaker/TypeDefs/BlockType.html">RubyBreaker::TypeDefs::BlockType</a>
164
-
165
- <li><a href="../../RubyBreaker/TypeDefs/DuckType.html">RubyBreaker::TypeDefs::DuckType</a>
166
-
167
- <li><a href="../../RubyBreaker/TypeDefs/FusionType.html">RubyBreaker::TypeDefs::FusionType</a>
168
-
169
- <li><a href="../../RubyBreaker/TypeDefs/MethodListType.html">RubyBreaker::TypeDefs::MethodListType</a>
170
-
171
- <li><a href="../../RubyBreaker/TypeDefs/MethodType.html">RubyBreaker::TypeDefs::MethodType</a>
172
-
173
- <li><a href="../../RubyBreaker/TypeDefs/NilType.html">RubyBreaker::TypeDefs::NilType</a>
174
-
175
- <li><a href="../../RubyBreaker/TypeDefs/NominalType.html">RubyBreaker::TypeDefs::NominalType</a>
176
-
177
- <li><a href="../../RubyBreaker/TypeDefs/OptionalType.html">RubyBreaker::TypeDefs::OptionalType</a>
178
-
179
- <li><a href="../../RubyBreaker/TypeDefs/OrType.html">RubyBreaker::TypeDefs::OrType</a>
180
-
181
- <li><a href="../../RubyBreaker/TypeDefs/SelfType.html">RubyBreaker::TypeDefs::SelfType</a>
182
-
183
- <li><a href="../../RubyBreaker/TypeDefs/Type.html">RubyBreaker::TypeDefs::Type</a>
184
-
185
- <li><a href="../../RubyBreaker/TypeDefs/VarLengthType.html">RubyBreaker::TypeDefs::VarLengthType</a>
186
-
187
- <li><a href="../../RubyBreaker/TypeUnparser.html">RubyBreaker::TypeUnparser</a>
188
-
189
- <li><a href="../../RubyBreaker/Typing.html">RubyBreaker::Typing</a>
190
-
191
- <li><a href="../../RubyBreaker/Util.html">RubyBreaker::Util</a>
192
-
193
- <li><a href="../../Object.html">Object</a>
194
-
195
- </ul>
196
- </nav>
197
-
198
- </div>
199
- </nav>
200
-
201
- <div id="documentation">
202
- <h1 class="module">module RubyBreaker::Broken::BrokenEigen</h1>
203
-
204
- <div id="description" class="description">
205
-
206
- <p>-</p>
207
-
208
- <pre class="ruby"><span class="ruby-constant">This</span> <span class="ruby-keyword">module</span> <span class="ruby-identifier">will</span> <span class="ruby-identifier">be</span> <span class="ruby-string">&quot;extended&quot;</span> <span class="ruby-identifier">to</span> <span class="ruby-identifier">the</span> <span class="ruby-identifier">eigen</span> <span class="ruby-keyword">class</span> <span class="ruby-identifier">of</span> <span class="ruby-identifier">the</span> <span class="ruby-keyword">class</span> <span class="ruby-identifier">that</span>
209
- <span class="ruby-identifier">includes</span> <span class="ruby-constant">Broken</span> <span class="ruby-keyword">module</span>. <span class="ruby-constant">This</span> <span class="ruby-identifier">allows</span> <span class="ruby-identifier">the</span> <span class="ruby-identifier">eigen</span> <span class="ruby-keyword">class</span> <span class="ruby-identifier">to</span> <span class="ruby-identifier">call</span> <span class="ruby-string">'typesig'</span>
210
- <span class="ruby-identifier">method</span> <span class="ruby-identifier">to</span> <span class="ruby-identifier">parse</span> <span class="ruby-identifier">the</span> <span class="ruby-identifier">type</span> <span class="ruby-identifier">signature</span> <span class="ruby-identifier">dynamically</span>.
211
-
212
- <span class="ruby-constant">Usage</span><span class="ruby-operator">:</span>
213
- <span class="ruby-constant">Class</span> <span class="ruby-constant">A</span>
214
- <span class="ruby-identifier">include</span> <span class="ruby-constant">RubyBreaker</span><span class="ruby-operator">::</span><span class="ruby-constant">Broken</span>
215
-
216
- <span class="ruby-identifier">typesig</span>(<span class="ruby-string">&quot;foo(fixnum) -&gt; fixnum&quot;</span>)
217
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">foo</span>(<span class="ruby-identifier">x</span>) <span class="ruby-operator">...</span> <span class="ruby-keyword">end</span>
218
- <span class="ruby-keyword">end</span>
219
- </pre>
220
-
221
- </div><!-- description -->
222
-
223
-
224
-
225
-
226
- <section id="5Buntitled-5D" class="documentation-section">
227
-
228
-
229
-
230
-
231
-
232
-
233
-
234
-
235
- <!-- Methods -->
236
-
237
- <section id="public-instance-5Buntitled-5D-method-details" class="method-section section">
238
- <h3 class="section-header">Public Instance Methods</h3>
239
-
240
-
241
- <div id="method-i-typesig" class="method-detail ">
242
-
243
- <div class="method-heading">
244
- <span class="method-name">typesig</span><span
245
- class="method-args">(str)</span>
246
- <span class="method-click-advice">click to toggle source</span>
247
- </div>
248
-
249
-
250
- <div class="method-description">
251
-
252
- <p>This method can be used at the eigen level of the target module to specify
253
- the type of a method.</p>
254
-
255
-
256
-
257
- <div class="method-source-code" id="typesig-source">
258
- <pre><span class="ruby-comment"># File lib/rubybreaker/runtime.rb, line 74</span>
259
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">typesig</span>(<span class="ruby-identifier">str</span>)
260
-
261
- <span class="ruby-comment"># This MUST BE set for self type to work in type signatures.</span>
262
- <span class="ruby-constant">TypeDefs</span><span class="ruby-operator">::</span><span class="ruby-constant">SelfType</span>.<span class="ruby-identifier">set_self</span>(<span class="ruby-keyword">self</span>)
263
-
264
- <span class="ruby-identifier">t</span> = <span class="ruby-constant">TypeSigParser</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">str</span>)
265
- <span class="ruby-identifier">placeholder</span> = <span class="ruby-constant">TYPE_PLACEHOLDER_MAP</span>[<span class="ruby-keyword">self</span>]
266
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">placeholder</span>
267
- <span class="ruby-identifier">meth_type</span> = <span class="ruby-identifier">placeholder</span>.<span class="ruby-identifier">meth_type_map</span>[<span class="ruby-identifier">t</span>.<span class="ruby-identifier">meth_name</span>]
268
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">meth_type</span>
269
- <span class="ruby-comment"># TODO: make a method list</span>
270
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">meth_type</span>.<span class="ruby-identifier">instance_of?</span>(<span class="ruby-constant">MethodListType</span>)
271
- <span class="ruby-identifier">meth_type</span>.<span class="ruby-identifier">types</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">t</span>
272
- <span class="ruby-keyword">else</span>
273
- <span class="ruby-comment"># then upgrade it</span>
274
- <span class="ruby-identifier">placeholder</span>.<span class="ruby-identifier">meth_type_map</span>[<span class="ruby-identifier">t</span>.<span class="ruby-identifier">meth_name</span>] =
275
- <span class="ruby-constant">MethodListType</span>.<span class="ruby-identifier">new</span>([<span class="ruby-identifier">meth_type</span>, <span class="ruby-identifier">t</span>])
276
- <span class="ruby-keyword">end</span>
277
- <span class="ruby-keyword">else</span>
278
- <span class="ruby-identifier">placeholder</span>.<span class="ruby-identifier">meth_type_map</span>[<span class="ruby-identifier">t</span>.<span class="ruby-identifier">meth_name</span>] = <span class="ruby-identifier">t</span>
279
- <span class="ruby-keyword">end</span>
280
- <span class="ruby-keyword">end</span>
281
- <span class="ruby-keyword">return</span> <span class="ruby-identifier">t</span>
282
- <span class="ruby-keyword">end</span></pre>
283
- </div><!-- typesig-source -->
284
-
285
- </div>
286
-
287
-
288
-
289
-
290
- </div><!-- typesig-method -->
291
-
292
-
293
- </section><!-- public-instance-method-details -->
294
-
295
- </section><!-- 5Buntitled-5D -->
296
-
297
- </div><!-- documentation -->
298
-
299
-
300
- <footer id="validator-badges">
301
- <p><a href="http://validator.w3.org/check/referer">[Validate]</a>
302
- <p>Generated by <a href="https://github.com/rdoc/rdoc">RDoc</a> 3.12.
303
- <p>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish Rdoc Generator</a> 3.
304
- </footer>
305
-