ruby_on_ruby 0.0.1

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.
Files changed (493) hide show
  1. data/.gitignore +18 -0
  2. data/.rvmrc +1 -0
  3. data/Gemfile +6 -0
  4. data/LICENSE +22 -0
  5. data/README.md +66 -0
  6. data/Rakefile +1 -0
  7. data/lib/ruby_on_ruby.rb +5 -0
  8. data/lib/ruby_on_ruby/console.rb +7 -0
  9. data/lib/ruby_on_ruby/context.rb +33 -0
  10. data/lib/ruby_on_ruby/file_loader.rb +31 -0
  11. data/lib/ruby_on_ruby/ruby_stream.rb +27 -0
  12. data/lib/ruby_on_ruby/version.rb +3 -0
  13. data/lib/rubyonruby.rb +1 -0
  14. data/ruby_in_ruby.gemspec +19 -0
  15. data/vendor/javascripts/emscripted-ruby/lib/.document +106 -0
  16. data/vendor/javascripts/emscripted-ruby/lib/English.rb +155 -0
  17. data/vendor/javascripts/emscripted-ruby/lib/Env.rb +18 -0
  18. data/vendor/javascripts/emscripted-ruby/lib/README +96 -0
  19. data/vendor/javascripts/emscripted-ruby/lib/abbrev.rb +103 -0
  20. data/vendor/javascripts/emscripted-ruby/lib/base64.rb +133 -0
  21. data/vendor/javascripts/emscripted-ruby/lib/benchmark.rb +572 -0
  22. data/vendor/javascripts/emscripted-ruby/lib/cgi-lib.rb +272 -0
  23. data/vendor/javascripts/emscripted-ruby/lib/cgi.rb +2308 -0
  24. data/vendor/javascripts/emscripted-ruby/lib/cgi/.document +2 -0
  25. data/vendor/javascripts/emscripted-ruby/lib/cgi/session.rb +498 -0
  26. data/vendor/javascripts/emscripted-ruby/lib/cgi/session/pstore.rb +111 -0
  27. data/vendor/javascripts/emscripted-ruby/lib/complex.rb +663 -0
  28. data/vendor/javascripts/emscripted-ruby/lib/csv.rb +992 -0
  29. data/vendor/javascripts/emscripted-ruby/lib/date.rb +1767 -0
  30. data/vendor/javascripts/emscripted-ruby/lib/date/format.rb +1190 -0
  31. data/vendor/javascripts/emscripted-ruby/lib/date2.rb +5 -0
  32. data/vendor/javascripts/emscripted-ruby/lib/debug.rb +947 -0
  33. data/vendor/javascripts/emscripted-ruby/lib/delegate.rb +337 -0
  34. data/vendor/javascripts/emscripted-ruby/lib/drb.rb +2 -0
  35. data/vendor/javascripts/emscripted-ruby/lib/drb/acl.rb +146 -0
  36. data/vendor/javascripts/emscripted-ruby/lib/drb/drb.rb +1782 -0
  37. data/vendor/javascripts/emscripted-ruby/lib/drb/eq.rb +16 -0
  38. data/vendor/javascripts/emscripted-ruby/lib/drb/extserv.rb +64 -0
  39. data/vendor/javascripts/emscripted-ruby/lib/drb/extservm.rb +89 -0
  40. data/vendor/javascripts/emscripted-ruby/lib/drb/gw.rb +122 -0
  41. data/vendor/javascripts/emscripted-ruby/lib/drb/invokemethod.rb +36 -0
  42. data/vendor/javascripts/emscripted-ruby/lib/drb/observer.rb +22 -0
  43. data/vendor/javascripts/emscripted-ruby/lib/drb/ssl.rb +190 -0
  44. data/vendor/javascripts/emscripted-ruby/lib/drb/timeridconv.rb +91 -0
  45. data/vendor/javascripts/emscripted-ruby/lib/drb/unix.rb +108 -0
  46. data/vendor/javascripts/emscripted-ruby/lib/e2mmap.rb +195 -0
  47. data/vendor/javascripts/emscripted-ruby/lib/erb.rb +880 -0
  48. data/vendor/javascripts/emscripted-ruby/lib/eregex.rb +37 -0
  49. data/vendor/javascripts/emscripted-ruby/lib/fileutils.rb +1591 -0
  50. data/vendor/javascripts/emscripted-ruby/lib/finalize.rb +193 -0
  51. data/vendor/javascripts/emscripted-ruby/lib/find.rb +79 -0
  52. data/vendor/javascripts/emscripted-ruby/lib/forwardable.rb +218 -0
  53. data/vendor/javascripts/emscripted-ruby/lib/ftools.rb +261 -0
  54. data/vendor/javascripts/emscripted-ruby/lib/generator.rb +418 -0
  55. data/vendor/javascripts/emscripted-ruby/lib/getoptlong.rb +621 -0
  56. data/vendor/javascripts/emscripted-ruby/lib/getopts.rb +127 -0
  57. data/vendor/javascripts/emscripted-ruby/lib/gserver.rb +253 -0
  58. data/vendor/javascripts/emscripted-ruby/lib/importenv.rb +33 -0
  59. data/vendor/javascripts/emscripted-ruby/lib/ipaddr.rb +814 -0
  60. data/vendor/javascripts/emscripted-ruby/lib/irb.rb +346 -0
  61. data/vendor/javascripts/emscripted-ruby/lib/irb/cmd/chws.rb +33 -0
  62. data/vendor/javascripts/emscripted-ruby/lib/irb/cmd/fork.rb +39 -0
  63. data/vendor/javascripts/emscripted-ruby/lib/irb/cmd/help.rb +34 -0
  64. data/vendor/javascripts/emscripted-ruby/lib/irb/cmd/load.rb +67 -0
  65. data/vendor/javascripts/emscripted-ruby/lib/irb/cmd/nop.rb +39 -0
  66. data/vendor/javascripts/emscripted-ruby/lib/irb/cmd/pushws.rb +39 -0
  67. data/vendor/javascripts/emscripted-ruby/lib/irb/cmd/subirb.rb +43 -0
  68. data/vendor/javascripts/emscripted-ruby/lib/irb/completion.rb +205 -0
  69. data/vendor/javascripts/emscripted-ruby/lib/irb/context.rb +255 -0
  70. data/vendor/javascripts/emscripted-ruby/lib/irb/ext/change-ws.rb +62 -0
  71. data/vendor/javascripts/emscripted-ruby/lib/irb/ext/history.rb +110 -0
  72. data/vendor/javascripts/emscripted-ruby/lib/irb/ext/loader.rb +120 -0
  73. data/vendor/javascripts/emscripted-ruby/lib/irb/ext/math-mode.rb +37 -0
  74. data/vendor/javascripts/emscripted-ruby/lib/irb/ext/multi-irb.rb +241 -0
  75. data/vendor/javascripts/emscripted-ruby/lib/irb/ext/save-history.rb +85 -0
  76. data/vendor/javascripts/emscripted-ruby/lib/irb/ext/tracer.rb +61 -0
  77. data/vendor/javascripts/emscripted-ruby/lib/irb/ext/use-loader.rb +65 -0
  78. data/vendor/javascripts/emscripted-ruby/lib/irb/ext/workspaces.rb +56 -0
  79. data/vendor/javascripts/emscripted-ruby/lib/irb/extend-command.rb +264 -0
  80. data/vendor/javascripts/emscripted-ruby/lib/irb/frame.rb +67 -0
  81. data/vendor/javascripts/emscripted-ruby/lib/irb/help.rb +33 -0
  82. data/vendor/javascripts/emscripted-ruby/lib/irb/init.rb +259 -0
  83. data/vendor/javascripts/emscripted-ruby/lib/irb/input-method.rb +120 -0
  84. data/vendor/javascripts/emscripted-ruby/lib/irb/lc/error.rb +30 -0
  85. data/vendor/javascripts/emscripted-ruby/lib/irb/lc/help-message +35 -0
  86. data/vendor/javascripts/emscripted-ruby/lib/irb/lc/ja/error.rb +27 -0
  87. data/vendor/javascripts/emscripted-ruby/lib/irb/lc/ja/help-message +36 -0
  88. data/vendor/javascripts/emscripted-ruby/lib/irb/locale.rb +184 -0
  89. data/vendor/javascripts/emscripted-ruby/lib/irb/notifier.rb +145 -0
  90. data/vendor/javascripts/emscripted-ruby/lib/irb/output-method.rb +85 -0
  91. data/vendor/javascripts/emscripted-ruby/lib/irb/ruby-lex.rb +1149 -0
  92. data/vendor/javascripts/emscripted-ruby/lib/irb/ruby-token.rb +273 -0
  93. data/vendor/javascripts/emscripted-ruby/lib/irb/slex.rb +285 -0
  94. data/vendor/javascripts/emscripted-ruby/lib/irb/version.rb +16 -0
  95. data/vendor/javascripts/emscripted-ruby/lib/irb/workspace.rb +107 -0
  96. data/vendor/javascripts/emscripted-ruby/lib/irb/ws-for-case-2.rb +15 -0
  97. data/vendor/javascripts/emscripted-ruby/lib/irb/xmp.rb +86 -0
  98. data/vendor/javascripts/emscripted-ruby/lib/jcode.rb +220 -0
  99. data/vendor/javascripts/emscripted-ruby/lib/logger.rb +703 -0
  100. data/vendor/javascripts/emscripted-ruby/lib/mailread.rb +62 -0
  101. data/vendor/javascripts/emscripted-ruby/lib/mathn.rb +308 -0
  102. data/vendor/javascripts/emscripted-ruby/lib/matrix.rb +1278 -0
  103. data/vendor/javascripts/emscripted-ruby/lib/mkmf.rb +1811 -0
  104. data/vendor/javascripts/emscripted-ruby/lib/monitor.rb +352 -0
  105. data/vendor/javascripts/emscripted-ruby/lib/mutex_m.rb +122 -0
  106. data/vendor/javascripts/emscripted-ruby/lib/net/ftp.rb +927 -0
  107. data/vendor/javascripts/emscripted-ruby/lib/net/http.rb +2277 -0
  108. data/vendor/javascripts/emscripted-ruby/lib/net/https.rb +173 -0
  109. data/vendor/javascripts/emscripted-ruby/lib/net/imap.rb +3371 -0
  110. data/vendor/javascripts/emscripted-ruby/lib/net/pop.rb +999 -0
  111. data/vendor/javascripts/emscripted-ruby/lib/net/protocol.rb +392 -0
  112. data/vendor/javascripts/emscripted-ruby/lib/net/smtp.rb +1014 -0
  113. data/vendor/javascripts/emscripted-ruby/lib/net/telnet.rb +756 -0
  114. data/vendor/javascripts/emscripted-ruby/lib/observer.rb +192 -0
  115. data/vendor/javascripts/emscripted-ruby/lib/open-uri.rb +678 -0
  116. data/vendor/javascripts/emscripted-ruby/lib/open3.rb +101 -0
  117. data/vendor/javascripts/emscripted-ruby/lib/optparse.rb +1790 -0
  118. data/vendor/javascripts/emscripted-ruby/lib/optparse/date.rb +17 -0
  119. data/vendor/javascripts/emscripted-ruby/lib/optparse/shellwords.rb +6 -0
  120. data/vendor/javascripts/emscripted-ruby/lib/optparse/time.rb +10 -0
  121. data/vendor/javascripts/emscripted-ruby/lib/optparse/uri.rb +6 -0
  122. data/vendor/javascripts/emscripted-ruby/lib/optparse/version.rb +70 -0
  123. data/vendor/javascripts/emscripted-ruby/lib/ostruct.rb +146 -0
  124. data/vendor/javascripts/emscripted-ruby/lib/parsearg.rb +87 -0
  125. data/vendor/javascripts/emscripted-ruby/lib/parsedate.rb +53 -0
  126. data/vendor/javascripts/emscripted-ruby/lib/pathname.rb +1062 -0
  127. data/vendor/javascripts/emscripted-ruby/lib/ping.rb +64 -0
  128. data/vendor/javascripts/emscripted-ruby/lib/pp.rb +654 -0
  129. data/vendor/javascripts/emscripted-ruby/lib/prettyprint.rb +896 -0
  130. data/vendor/javascripts/emscripted-ruby/lib/profile.rb +6 -0
  131. data/vendor/javascripts/emscripted-ruby/lib/profiler.rb +59 -0
  132. data/vendor/javascripts/emscripted-ruby/lib/pstore.rb +395 -0
  133. data/vendor/javascripts/emscripted-ruby/lib/racc/parser.rb +442 -0
  134. data/vendor/javascripts/emscripted-ruby/lib/rational.rb +564 -0
  135. data/vendor/javascripts/emscripted-ruby/lib/readbytes.rb +41 -0
  136. data/vendor/javascripts/emscripted-ruby/lib/resolv-replace.rb +62 -0
  137. data/vendor/javascripts/emscripted-ruby/lib/resolv.rb +2210 -0
  138. data/vendor/javascripts/emscripted-ruby/lib/rexml/attlistdecl.rb +62 -0
  139. data/vendor/javascripts/emscripted-ruby/lib/rexml/attribute.rb +185 -0
  140. data/vendor/javascripts/emscripted-ruby/lib/rexml/cdata.rb +67 -0
  141. data/vendor/javascripts/emscripted-ruby/lib/rexml/child.rb +96 -0
  142. data/vendor/javascripts/emscripted-ruby/lib/rexml/comment.rb +80 -0
  143. data/vendor/javascripts/emscripted-ruby/lib/rexml/doctype.rb +271 -0
  144. data/vendor/javascripts/emscripted-ruby/lib/rexml/document.rb +208 -0
  145. data/vendor/javascripts/emscripted-ruby/lib/rexml/dtd/attlistdecl.rb +10 -0
  146. data/vendor/javascripts/emscripted-ruby/lib/rexml/dtd/dtd.rb +51 -0
  147. data/vendor/javascripts/emscripted-ruby/lib/rexml/dtd/elementdecl.rb +17 -0
  148. data/vendor/javascripts/emscripted-ruby/lib/rexml/dtd/entitydecl.rb +56 -0
  149. data/vendor/javascripts/emscripted-ruby/lib/rexml/dtd/notationdecl.rb +39 -0
  150. data/vendor/javascripts/emscripted-ruby/lib/rexml/element.rb +1227 -0
  151. data/vendor/javascripts/emscripted-ruby/lib/rexml/encoding.rb +71 -0
  152. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/CP-1252.rb +103 -0
  153. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/EUC-JP.rb +35 -0
  154. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/ICONV.rb +22 -0
  155. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/ISO-8859-1.rb +7 -0
  156. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/ISO-8859-15.rb +72 -0
  157. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/SHIFT-JIS.rb +37 -0
  158. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/SHIFT_JIS.rb +1 -0
  159. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/UNILE.rb +34 -0
  160. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/US-ASCII.rb +30 -0
  161. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/UTF-16.rb +35 -0
  162. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/UTF-8.rb +18 -0
  163. data/vendor/javascripts/emscripted-ruby/lib/rexml/entity.rb +165 -0
  164. data/vendor/javascripts/emscripted-ruby/lib/rexml/formatters/default.rb +109 -0
  165. data/vendor/javascripts/emscripted-ruby/lib/rexml/formatters/pretty.rb +137 -0
  166. data/vendor/javascripts/emscripted-ruby/lib/rexml/formatters/transitive.rb +56 -0
  167. data/vendor/javascripts/emscripted-ruby/lib/rexml/functions.rb +382 -0
  168. data/vendor/javascripts/emscripted-ruby/lib/rexml/instruction.rb +70 -0
  169. data/vendor/javascripts/emscripted-ruby/lib/rexml/light/node.rb +196 -0
  170. data/vendor/javascripts/emscripted-ruby/lib/rexml/namespace.rb +47 -0
  171. data/vendor/javascripts/emscripted-ruby/lib/rexml/node.rb +75 -0
  172. data/vendor/javascripts/emscripted-ruby/lib/rexml/output.rb +24 -0
  173. data/vendor/javascripts/emscripted-ruby/lib/rexml/parent.rb +166 -0
  174. data/vendor/javascripts/emscripted-ruby/lib/rexml/parseexception.rb +51 -0
  175. data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/baseparser.rb +503 -0
  176. data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/lightparser.rb +60 -0
  177. data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/pullparser.rb +196 -0
  178. data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/sax2parser.rb +238 -0
  179. data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/streamparser.rb +46 -0
  180. data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/treeparser.rb +97 -0
  181. data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/ultralightparser.rb +56 -0
  182. data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/xpathparser.rb +698 -0
  183. data/vendor/javascripts/emscripted-ruby/lib/rexml/quickpath.rb +266 -0
  184. data/vendor/javascripts/emscripted-ruby/lib/rexml/rexml.rb +32 -0
  185. data/vendor/javascripts/emscripted-ruby/lib/rexml/sax2listener.rb +97 -0
  186. data/vendor/javascripts/emscripted-ruby/lib/rexml/source.rb +251 -0
  187. data/vendor/javascripts/emscripted-ruby/lib/rexml/streamlistener.rb +92 -0
  188. data/vendor/javascripts/emscripted-ruby/lib/rexml/syncenumerator.rb +33 -0
  189. data/vendor/javascripts/emscripted-ruby/lib/rexml/text.rb +344 -0
  190. data/vendor/javascripts/emscripted-ruby/lib/rexml/undefinednamespaceexception.rb +8 -0
  191. data/vendor/javascripts/emscripted-ruby/lib/rexml/validation/relaxng.rb +559 -0
  192. data/vendor/javascripts/emscripted-ruby/lib/rexml/validation/validation.rb +155 -0
  193. data/vendor/javascripts/emscripted-ruby/lib/rexml/validation/validationexception.rb +9 -0
  194. data/vendor/javascripts/emscripted-ruby/lib/rexml/xmldecl.rb +119 -0
  195. data/vendor/javascripts/emscripted-ruby/lib/rexml/xmltokens.rb +18 -0
  196. data/vendor/javascripts/emscripted-ruby/lib/rexml/xpath.rb +66 -0
  197. data/vendor/javascripts/emscripted-ruby/lib/rexml/xpath_parser.rb +792 -0
  198. data/vendor/javascripts/emscripted-ruby/lib/rinda/rinda.rb +283 -0
  199. data/vendor/javascripts/emscripted-ruby/lib/rinda/ring.rb +271 -0
  200. data/vendor/javascripts/emscripted-ruby/lib/rinda/tuplespace.rb +642 -0
  201. data/vendor/javascripts/emscripted-ruby/lib/rss.rb +19 -0
  202. data/vendor/javascripts/emscripted-ruby/lib/rss/0.9.rb +428 -0
  203. data/vendor/javascripts/emscripted-ruby/lib/rss/1.0.rb +452 -0
  204. data/vendor/javascripts/emscripted-ruby/lib/rss/2.0.rb +111 -0
  205. data/vendor/javascripts/emscripted-ruby/lib/rss/atom.rb +749 -0
  206. data/vendor/javascripts/emscripted-ruby/lib/rss/content.rb +31 -0
  207. data/vendor/javascripts/emscripted-ruby/lib/rss/content/1.0.rb +10 -0
  208. data/vendor/javascripts/emscripted-ruby/lib/rss/content/2.0.rb +12 -0
  209. data/vendor/javascripts/emscripted-ruby/lib/rss/converter.rb +162 -0
  210. data/vendor/javascripts/emscripted-ruby/lib/rss/dublincore.rb +161 -0
  211. data/vendor/javascripts/emscripted-ruby/lib/rss/dublincore/1.0.rb +13 -0
  212. data/vendor/javascripts/emscripted-ruby/lib/rss/dublincore/2.0.rb +13 -0
  213. data/vendor/javascripts/emscripted-ruby/lib/rss/dublincore/atom.rb +17 -0
  214. data/vendor/javascripts/emscripted-ruby/lib/rss/image.rb +193 -0
  215. data/vendor/javascripts/emscripted-ruby/lib/rss/itunes.rb +410 -0
  216. data/vendor/javascripts/emscripted-ruby/lib/rss/maker.rb +44 -0
  217. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/0.9.rb +467 -0
  218. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/1.0.rb +434 -0
  219. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/2.0.rb +223 -0
  220. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/atom.rb +172 -0
  221. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/base.rb +868 -0
  222. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/content.rb +21 -0
  223. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/dublincore.rb +124 -0
  224. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/entry.rb +163 -0
  225. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/feed.rb +429 -0
  226. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/image.rb +111 -0
  227. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/itunes.rb +242 -0
  228. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/slash.rb +33 -0
  229. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/syndication.rb +18 -0
  230. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/taxonomy.rb +118 -0
  231. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/trackback.rb +61 -0
  232. data/vendor/javascripts/emscripted-ruby/lib/rss/parser.rb +541 -0
  233. data/vendor/javascripts/emscripted-ruby/lib/rss/rexmlparser.rb +54 -0
  234. data/vendor/javascripts/emscripted-ruby/lib/rss/rss.rb +1312 -0
  235. data/vendor/javascripts/emscripted-ruby/lib/rss/slash.rb +49 -0
  236. data/vendor/javascripts/emscripted-ruby/lib/rss/syndication.rb +67 -0
  237. data/vendor/javascripts/emscripted-ruby/lib/rss/taxonomy.rb +145 -0
  238. data/vendor/javascripts/emscripted-ruby/lib/rss/trackback.rb +288 -0
  239. data/vendor/javascripts/emscripted-ruby/lib/rss/utils.rb +111 -0
  240. data/vendor/javascripts/emscripted-ruby/lib/rss/xml-stylesheet.rb +105 -0
  241. data/vendor/javascripts/emscripted-ruby/lib/rss/xml.rb +71 -0
  242. data/vendor/javascripts/emscripted-ruby/lib/rss/xmlparser.rb +93 -0
  243. data/vendor/javascripts/emscripted-ruby/lib/rss/xmlscanner.rb +121 -0
  244. data/vendor/javascripts/emscripted-ruby/lib/rubyunit.rb +6 -0
  245. data/vendor/javascripts/emscripted-ruby/lib/runit/assert.rb +73 -0
  246. data/vendor/javascripts/emscripted-ruby/lib/runit/cui/testrunner.rb +51 -0
  247. data/vendor/javascripts/emscripted-ruby/lib/runit/error.rb +9 -0
  248. data/vendor/javascripts/emscripted-ruby/lib/runit/testcase.rb +45 -0
  249. data/vendor/javascripts/emscripted-ruby/lib/runit/testresult.rb +44 -0
  250. data/vendor/javascripts/emscripted-ruby/lib/runit/testsuite.rb +26 -0
  251. data/vendor/javascripts/emscripted-ruby/lib/runit/topublic.rb +8 -0
  252. data/vendor/javascripts/emscripted-ruby/lib/scanf.rb +702 -0
  253. data/vendor/javascripts/emscripted-ruby/lib/securerandom.rb +137 -0
  254. data/vendor/javascripts/emscripted-ruby/lib/set.rb +1233 -0
  255. data/vendor/javascripts/emscripted-ruby/lib/shell.rb +269 -0
  256. data/vendor/javascripts/emscripted-ruby/lib/shell/builtin-command.rb +154 -0
  257. data/vendor/javascripts/emscripted-ruby/lib/shell/command-processor.rb +592 -0
  258. data/vendor/javascripts/emscripted-ruby/lib/shell/error.rb +26 -0
  259. data/vendor/javascripts/emscripted-ruby/lib/shell/filter.rb +110 -0
  260. data/vendor/javascripts/emscripted-ruby/lib/shell/process-controller.rb +260 -0
  261. data/vendor/javascripts/emscripted-ruby/lib/shell/system-command.rb +168 -0
  262. data/vendor/javascripts/emscripted-ruby/lib/shell/version.rb +16 -0
  263. data/vendor/javascripts/emscripted-ruby/lib/shellwords.rb +172 -0
  264. data/vendor/javascripts/emscripted-ruby/lib/singleton.rb +360 -0
  265. data/vendor/javascripts/emscripted-ruby/lib/soap/attachment.rb +107 -0
  266. data/vendor/javascripts/emscripted-ruby/lib/soap/baseData.rb +942 -0
  267. data/vendor/javascripts/emscripted-ruby/lib/soap/element.rb +258 -0
  268. data/vendor/javascripts/emscripted-ruby/lib/soap/encodingstyle/aspDotNetHandler.rb +213 -0
  269. data/vendor/javascripts/emscripted-ruby/lib/soap/encodingstyle/handler.rb +100 -0
  270. data/vendor/javascripts/emscripted-ruby/lib/soap/encodingstyle/literalHandler.rb +226 -0
  271. data/vendor/javascripts/emscripted-ruby/lib/soap/encodingstyle/soapHandler.rb +582 -0
  272. data/vendor/javascripts/emscripted-ruby/lib/soap/generator.rb +268 -0
  273. data/vendor/javascripts/emscripted-ruby/lib/soap/header/handler.rb +57 -0
  274. data/vendor/javascripts/emscripted-ruby/lib/soap/header/handlerset.rb +70 -0
  275. data/vendor/javascripts/emscripted-ruby/lib/soap/header/simplehandler.rb +44 -0
  276. data/vendor/javascripts/emscripted-ruby/lib/soap/httpconfigloader.rb +119 -0
  277. data/vendor/javascripts/emscripted-ruby/lib/soap/mapping.rb +10 -0
  278. data/vendor/javascripts/emscripted-ruby/lib/soap/mapping/factory.rb +355 -0
  279. data/vendor/javascripts/emscripted-ruby/lib/soap/mapping/mapping.rb +381 -0
  280. data/vendor/javascripts/emscripted-ruby/lib/soap/mapping/registry.rb +541 -0
  281. data/vendor/javascripts/emscripted-ruby/lib/soap/mapping/rubytypeFactory.rb +475 -0
  282. data/vendor/javascripts/emscripted-ruby/lib/soap/mapping/typeMap.rb +50 -0
  283. data/vendor/javascripts/emscripted-ruby/lib/soap/mapping/wsdlencodedregistry.rb +280 -0
  284. data/vendor/javascripts/emscripted-ruby/lib/soap/mapping/wsdlliteralregistry.rb +418 -0
  285. data/vendor/javascripts/emscripted-ruby/lib/soap/marshal.rb +59 -0
  286. data/vendor/javascripts/emscripted-ruby/lib/soap/mimemessage.rb +240 -0
  287. data/vendor/javascripts/emscripted-ruby/lib/soap/netHttpClient.rb +190 -0
  288. data/vendor/javascripts/emscripted-ruby/lib/soap/parser.rb +251 -0
  289. data/vendor/javascripts/emscripted-ruby/lib/soap/processor.rb +66 -0
  290. data/vendor/javascripts/emscripted-ruby/lib/soap/property.rb +333 -0
  291. data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/cgistub.rb +206 -0
  292. data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/driver.rb +254 -0
  293. data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/element.rb +325 -0
  294. data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/httpserver.rb +129 -0
  295. data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/proxy.rb +497 -0
  296. data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/router.rb +594 -0
  297. data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/rpc.rb +25 -0
  298. data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/soaplet.rb +162 -0
  299. data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/standaloneServer.rb +43 -0
  300. data/vendor/javascripts/emscripted-ruby/lib/soap/soap.rb +140 -0
  301. data/vendor/javascripts/emscripted-ruby/lib/soap/streamHandler.rb +229 -0
  302. data/vendor/javascripts/emscripted-ruby/lib/soap/wsdlDriver.rb +575 -0
  303. data/vendor/javascripts/emscripted-ruby/lib/sync.rb +311 -0
  304. data/vendor/javascripts/emscripted-ruby/lib/tempfile.rb +209 -0
  305. data/vendor/javascripts/emscripted-ruby/lib/test/unit.rb +280 -0
  306. data/vendor/javascripts/emscripted-ruby/lib/test/unit/assertionfailederror.rb +14 -0
  307. data/vendor/javascripts/emscripted-ruby/lib/test/unit/assertions.rb +622 -0
  308. data/vendor/javascripts/emscripted-ruby/lib/test/unit/autorunner.rb +220 -0
  309. data/vendor/javascripts/emscripted-ruby/lib/test/unit/collector.rb +43 -0
  310. data/vendor/javascripts/emscripted-ruby/lib/test/unit/collector/dir.rb +107 -0
  311. data/vendor/javascripts/emscripted-ruby/lib/test/unit/collector/objectspace.rb +34 -0
  312. data/vendor/javascripts/emscripted-ruby/lib/test/unit/error.rb +56 -0
  313. data/vendor/javascripts/emscripted-ruby/lib/test/unit/failure.rb +51 -0
  314. data/vendor/javascripts/emscripted-ruby/lib/test/unit/testcase.rb +160 -0
  315. data/vendor/javascripts/emscripted-ruby/lib/test/unit/testresult.rb +80 -0
  316. data/vendor/javascripts/emscripted-ruby/lib/test/unit/testsuite.rb +76 -0
  317. data/vendor/javascripts/emscripted-ruby/lib/test/unit/ui/console/testrunner.rb +127 -0
  318. data/vendor/javascripts/emscripted-ruby/lib/test/unit/ui/fox/testrunner.rb +268 -0
  319. data/vendor/javascripts/emscripted-ruby/lib/test/unit/ui/gtk/testrunner.rb +416 -0
  320. data/vendor/javascripts/emscripted-ruby/lib/test/unit/ui/gtk2/testrunner.rb +465 -0
  321. data/vendor/javascripts/emscripted-ruby/lib/test/unit/ui/testrunnermediator.rb +68 -0
  322. data/vendor/javascripts/emscripted-ruby/lib/test/unit/ui/testrunnerutilities.rb +46 -0
  323. data/vendor/javascripts/emscripted-ruby/lib/test/unit/ui/tk/testrunner.rb +260 -0
  324. data/vendor/javascripts/emscripted-ruby/lib/test/unit/util/backtracefilter.rb +40 -0
  325. data/vendor/javascripts/emscripted-ruby/lib/test/unit/util/observable.rb +90 -0
  326. data/vendor/javascripts/emscripted-ruby/lib/test/unit/util/procwrapper.rb +48 -0
  327. data/vendor/javascripts/emscripted-ruby/lib/thread.rb +479 -0
  328. data/vendor/javascripts/emscripted-ruby/lib/thwait.rb +169 -0
  329. data/vendor/javascripts/emscripted-ruby/lib/time.rb +797 -0
  330. data/vendor/javascripts/emscripted-ruby/lib/timeout.rb +122 -0
  331. data/vendor/javascripts/emscripted-ruby/lib/tmpdir.rb +130 -0
  332. data/vendor/javascripts/emscripted-ruby/lib/tracer.rb +167 -0
  333. data/vendor/javascripts/emscripted-ruby/lib/tsort.rb +290 -0
  334. data/vendor/javascripts/emscripted-ruby/lib/un.rb +235 -0
  335. data/vendor/javascripts/emscripted-ruby/lib/uri.rb +29 -0
  336. data/vendor/javascripts/emscripted-ruby/lib/uri/common.rb +611 -0
  337. data/vendor/javascripts/emscripted-ruby/lib/uri/ftp.rb +198 -0
  338. data/vendor/javascripts/emscripted-ruby/lib/uri/generic.rb +1122 -0
  339. data/vendor/javascripts/emscripted-ruby/lib/uri/http.rb +100 -0
  340. data/vendor/javascripts/emscripted-ruby/lib/uri/https.rb +20 -0
  341. data/vendor/javascripts/emscripted-ruby/lib/uri/ldap.rb +190 -0
  342. data/vendor/javascripts/emscripted-ruby/lib/uri/ldaps.rb +12 -0
  343. data/vendor/javascripts/emscripted-ruby/lib/uri/mailto.rb +266 -0
  344. data/vendor/javascripts/emscripted-ruby/lib/weakref.rb +100 -0
  345. data/vendor/javascripts/emscripted-ruby/lib/webrick.rb +29 -0
  346. data/vendor/javascripts/emscripted-ruby/lib/webrick/accesslog.rb +67 -0
  347. data/vendor/javascripts/emscripted-ruby/lib/webrick/cgi.rb +257 -0
  348. data/vendor/javascripts/emscripted-ruby/lib/webrick/compat.rb +15 -0
  349. data/vendor/javascripts/emscripted-ruby/lib/webrick/config.rb +97 -0
  350. data/vendor/javascripts/emscripted-ruby/lib/webrick/cookie.rb +110 -0
  351. data/vendor/javascripts/emscripted-ruby/lib/webrick/htmlutils.rb +25 -0
  352. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth.rb +45 -0
  353. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth/authenticator.rb +79 -0
  354. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth/basicauth.rb +65 -0
  355. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth/digestauth.rb +343 -0
  356. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth/htdigest.rb +91 -0
  357. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth/htgroup.rb +61 -0
  358. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth/htpasswd.rb +83 -0
  359. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth/userdb.rb +29 -0
  360. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpproxy.rb +254 -0
  361. data/vendor/javascripts/emscripted-ruby/lib/webrick/httprequest.rb +365 -0
  362. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpresponse.rb +327 -0
  363. data/vendor/javascripts/emscripted-ruby/lib/webrick/https.rb +63 -0
  364. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpserver.rb +210 -0
  365. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpservlet.rb +22 -0
  366. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpservlet/abstract.rb +71 -0
  367. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpservlet/cgi_runner.rb +47 -0
  368. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpservlet/cgihandler.rb +108 -0
  369. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpservlet/erbhandler.rb +54 -0
  370. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpservlet/filehandler.rb +435 -0
  371. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpservlet/prochandler.rb +33 -0
  372. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpstatus.rb +126 -0
  373. data/vendor/javascripts/emscripted-ruby/lib/webrick/httputils.rb +399 -0
  374. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpversion.rb +49 -0
  375. data/vendor/javascripts/emscripted-ruby/lib/webrick/log.rb +88 -0
  376. data/vendor/javascripts/emscripted-ruby/lib/webrick/server.rb +200 -0
  377. data/vendor/javascripts/emscripted-ruby/lib/webrick/ssl.rb +126 -0
  378. data/vendor/javascripts/emscripted-ruby/lib/webrick/utils.rb +100 -0
  379. data/vendor/javascripts/emscripted-ruby/lib/webrick/version.rb +13 -0
  380. data/vendor/javascripts/emscripted-ruby/lib/wsdl/binding.rb +65 -0
  381. data/vendor/javascripts/emscripted-ruby/lib/wsdl/data.rb +64 -0
  382. data/vendor/javascripts/emscripted-ruby/lib/wsdl/definitions.rb +250 -0
  383. data/vendor/javascripts/emscripted-ruby/lib/wsdl/documentation.rb +32 -0
  384. data/vendor/javascripts/emscripted-ruby/lib/wsdl/import.rb +80 -0
  385. data/vendor/javascripts/emscripted-ruby/lib/wsdl/importer.rb +38 -0
  386. data/vendor/javascripts/emscripted-ruby/lib/wsdl/info.rb +39 -0
  387. data/vendor/javascripts/emscripted-ruby/lib/wsdl/message.rb +54 -0
  388. data/vendor/javascripts/emscripted-ruby/lib/wsdl/operation.rb +130 -0
  389. data/vendor/javascripts/emscripted-ruby/lib/wsdl/operationBinding.rb +108 -0
  390. data/vendor/javascripts/emscripted-ruby/lib/wsdl/param.rb +85 -0
  391. data/vendor/javascripts/emscripted-ruby/lib/wsdl/parser.rb +163 -0
  392. data/vendor/javascripts/emscripted-ruby/lib/wsdl/part.rb +52 -0
  393. data/vendor/javascripts/emscripted-ruby/lib/wsdl/port.rb +84 -0
  394. data/vendor/javascripts/emscripted-ruby/lib/wsdl/portType.rb +73 -0
  395. data/vendor/javascripts/emscripted-ruby/lib/wsdl/service.rb +61 -0
  396. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/address.rb +40 -0
  397. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/binding.rb +49 -0
  398. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/body.rb +56 -0
  399. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/cgiStubCreator.rb +76 -0
  400. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/classDefCreator.rb +314 -0
  401. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/classDefCreatorSupport.rb +126 -0
  402. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/clientSkeltonCreator.rb +78 -0
  403. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/complexType.rb +161 -0
  404. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/data.rb +42 -0
  405. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/definitions.rb +149 -0
  406. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/driverCreator.rb +95 -0
  407. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/element.rb +28 -0
  408. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/fault.rb +56 -0
  409. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/header.rb +86 -0
  410. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/headerfault.rb +56 -0
  411. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/mappingRegistryCreator.rb +92 -0
  412. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/methodDefCreator.rb +228 -0
  413. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/operation.rb +122 -0
  414. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/servantSkeltonCreator.rb +67 -0
  415. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/standaloneServerStubCreator.rb +85 -0
  416. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/wsdl2ruby.rb +176 -0
  417. data/vendor/javascripts/emscripted-ruby/lib/wsdl/types.rb +43 -0
  418. data/vendor/javascripts/emscripted-ruby/lib/wsdl/wsdl.rb +23 -0
  419. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/all.rb +69 -0
  420. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/annotation.rb +34 -0
  421. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/any.rb +56 -0
  422. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/attribute.rb +127 -0
  423. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/choice.rb +69 -0
  424. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/complexContent.rb +92 -0
  425. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/complexType.rb +139 -0
  426. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/content.rb +96 -0
  427. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/data.rb +80 -0
  428. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/element.rb +154 -0
  429. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/enumeration.rb +36 -0
  430. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/import.rb +65 -0
  431. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/importer.rb +87 -0
  432. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/include.rb +54 -0
  433. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/length.rb +35 -0
  434. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/parser.rb +166 -0
  435. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/pattern.rb +36 -0
  436. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/schema.rb +143 -0
  437. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/sequence.rb +69 -0
  438. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/simpleContent.rb +65 -0
  439. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/simpleExtension.rb +54 -0
  440. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/simpleRestriction.rb +73 -0
  441. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/simpleType.rb +73 -0
  442. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/unique.rb +34 -0
  443. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/xsd2ruby.rb +107 -0
  444. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/.document +1 -0
  445. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/README.txt +31 -0
  446. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/base64.rb +81 -0
  447. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/client.rb +624 -0
  448. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/config.rb +40 -0
  449. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/create.rb +290 -0
  450. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/datetime.rb +142 -0
  451. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/httpserver.rb +178 -0
  452. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/marshal.rb +76 -0
  453. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/parser.rb +813 -0
  454. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/server.rb +780 -0
  455. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/utils.rb +165 -0
  456. data/vendor/javascripts/emscripted-ruby/lib/xsd/charset.rb +187 -0
  457. data/vendor/javascripts/emscripted-ruby/lib/xsd/codegen.rb +12 -0
  458. data/vendor/javascripts/emscripted-ruby/lib/xsd/codegen/classdef.rb +203 -0
  459. data/vendor/javascripts/emscripted-ruby/lib/xsd/codegen/commentdef.rb +34 -0
  460. data/vendor/javascripts/emscripted-ruby/lib/xsd/codegen/gensupport.rb +166 -0
  461. data/vendor/javascripts/emscripted-ruby/lib/xsd/codegen/methoddef.rb +63 -0
  462. data/vendor/javascripts/emscripted-ruby/lib/xsd/codegen/moduledef.rb +191 -0
  463. data/vendor/javascripts/emscripted-ruby/lib/xsd/datatypes.rb +1269 -0
  464. data/vendor/javascripts/emscripted-ruby/lib/xsd/datatypes1999.rb +20 -0
  465. data/vendor/javascripts/emscripted-ruby/lib/xsd/iconvcharset.rb +33 -0
  466. data/vendor/javascripts/emscripted-ruby/lib/xsd/mapping.rb +42 -0
  467. data/vendor/javascripts/emscripted-ruby/lib/xsd/namedelements.rb +95 -0
  468. data/vendor/javascripts/emscripted-ruby/lib/xsd/ns.rb +140 -0
  469. data/vendor/javascripts/emscripted-ruby/lib/xsd/qname.rb +78 -0
  470. data/vendor/javascripts/emscripted-ruby/lib/xsd/xmlparser.rb +61 -0
  471. data/vendor/javascripts/emscripted-ruby/lib/xsd/xmlparser/parser.rb +96 -0
  472. data/vendor/javascripts/emscripted-ruby/lib/xsd/xmlparser/rexmlparser.rb +54 -0
  473. data/vendor/javascripts/emscripted-ruby/lib/xsd/xmlparser/xmlparser.rb +50 -0
  474. data/vendor/javascripts/emscripted-ruby/lib/xsd/xmlparser/xmlscanner.rb +147 -0
  475. data/vendor/javascripts/emscripted-ruby/lib/yaml.rb +440 -0
  476. data/vendor/javascripts/emscripted-ruby/lib/yaml/baseemitter.rb +247 -0
  477. data/vendor/javascripts/emscripted-ruby/lib/yaml/basenode.rb +216 -0
  478. data/vendor/javascripts/emscripted-ruby/lib/yaml/constants.rb +45 -0
  479. data/vendor/javascripts/emscripted-ruby/lib/yaml/dbm.rb +111 -0
  480. data/vendor/javascripts/emscripted-ruby/lib/yaml/encoding.rb +33 -0
  481. data/vendor/javascripts/emscripted-ruby/lib/yaml/error.rb +34 -0
  482. data/vendor/javascripts/emscripted-ruby/lib/yaml/loader.rb +14 -0
  483. data/vendor/javascripts/emscripted-ruby/lib/yaml/rubytypes.rb +408 -0
  484. data/vendor/javascripts/emscripted-ruby/lib/yaml/store.rb +43 -0
  485. data/vendor/javascripts/emscripted-ruby/lib/yaml/stream.rb +40 -0
  486. data/vendor/javascripts/emscripted-ruby/lib/yaml/stringio.rb +83 -0
  487. data/vendor/javascripts/emscripted-ruby/lib/yaml/syck.rb +19 -0
  488. data/vendor/javascripts/emscripted-ruby/lib/yaml/tag.rb +91 -0
  489. data/vendor/javascripts/emscripted-ruby/lib/yaml/types.rb +192 -0
  490. data/vendor/javascripts/emscripted-ruby/lib/yaml/yamlnode.rb +54 -0
  491. data/vendor/javascripts/emscripted-ruby/lib/yaml/ypath.rb +52 -0
  492. data/vendor/javascripts/emscripted-ruby/ruby.closure.js +7201 -0
  493. metadata +554 -0
@@ -0,0 +1,169 @@
1
+ #
2
+ # thwait.rb - thread synchronization class
3
+ # $Release Version: 0.9 $
4
+ # $Revision: 1.3 $
5
+ # $Date: 1998/06/26 03:19:34 $
6
+ # by Keiju ISHITSUKA(Nihpon Rational Software Co.,Ltd.)
7
+ #
8
+ # --
9
+ # feature:
10
+ # provides synchronization for multiple threads.
11
+ #
12
+ # class methods:
13
+ # * ThreadsWait.all_waits(thread1,...)
14
+ # waits until all of specified threads are terminated.
15
+ # if a block is supplied for the method, evaluates it for
16
+ # each thread termination.
17
+ # * th = ThreadsWait.new(thread1,...)
18
+ # creates synchronization object, specifying thread(s) to wait.
19
+ #
20
+ # methods:
21
+ # * th.threads
22
+ # list threads to be synchronized
23
+ # * th.empty?
24
+ # is there any thread to be synchronized.
25
+ # * th.finished?
26
+ # is there already terminated thread.
27
+ # * th.join(thread1,...)
28
+ # wait for specified thread(s).
29
+ # * th.join_nowait(threa1,...)
30
+ # specifies thread(s) to wait. non-blocking.
31
+ # * th.next_wait
32
+ # waits until any of specified threads is terminated.
33
+ # * th.all_waits
34
+ # waits until all of specified threads are terminated.
35
+ # if a block is supplied for the method, evaluates it for
36
+ # each thread termination.
37
+ #
38
+
39
+ require "thread.rb"
40
+ require "e2mmap.rb"
41
+
42
+ #
43
+ # This class watches for termination of multiple threads. Basic functionality
44
+ # (wait until specified threads have terminated) can be accessed through the
45
+ # class method ThreadsWait::all_waits. Finer control can be gained using
46
+ # instance methods.
47
+ #
48
+ # Example:
49
+ #
50
+ # ThreadsWait.all_wait(thr1, thr2, ...) do |t|
51
+ # STDERR.puts "Thread #{t} has terminated."
52
+ # end
53
+ #
54
+ class ThreadsWait
55
+ RCS_ID='-$Id: thwait.rb,v 1.3 1998/06/26 03:19:34 keiju Exp keiju $-'
56
+
57
+ Exception2MessageMapper.extend_to(binding)
58
+ def_exception("ErrNoWaitingThread", "No threads for waiting.")
59
+ def_exception("ErrNoFinishedThread", "No finished threads.")
60
+
61
+ #
62
+ # Waits until all specified threads have terminated. If a block is provided,
63
+ # it is executed for each thread termination.
64
+ #
65
+ def ThreadsWait.all_waits(*threads) # :yield: thread
66
+ tw = ThreadsWait.new(*threads)
67
+ if block_given?
68
+ tw.all_waits do |th|
69
+ yield th
70
+ end
71
+ else
72
+ tw.all_waits
73
+ end
74
+ end
75
+
76
+ #
77
+ # Creates a ThreadsWait object, specifying the threads to wait on.
78
+ # Non-blocking.
79
+ #
80
+ def initialize(*threads)
81
+ @threads = []
82
+ @wait_queue = Queue.new
83
+ join_nowait(*threads) unless threads.empty?
84
+ end
85
+
86
+ # Returns the array of threads in the wait queue.
87
+ attr :threads
88
+
89
+ #
90
+ # Returns +true+ if there are no threads to be synchronized.
91
+ #
92
+ def empty?
93
+ @threads.empty?
94
+ end
95
+
96
+ #
97
+ # Returns +true+ if any thread has terminated.
98
+ #
99
+ def finished?
100
+ !@wait_queue.empty?
101
+ end
102
+
103
+ #
104
+ # Waits for specified threads to terminate.
105
+ #
106
+ def join(*threads)
107
+ join_nowait(*threads)
108
+ next_wait
109
+ end
110
+
111
+ #
112
+ # Specifies the threads that this object will wait for, but does not actually
113
+ # wait.
114
+ #
115
+ def join_nowait(*threads)
116
+ threads.flatten!
117
+ @threads.concat threads
118
+ for th in threads
119
+ Thread.start(th) do |t|
120
+ begin
121
+ t.join
122
+ ensure
123
+ @wait_queue.push t
124
+ end
125
+ end
126
+ end
127
+ end
128
+
129
+ #
130
+ # Waits until any of the specified threads has terminated, and returns the one
131
+ # that does.
132
+ #
133
+ # If there is no thread to wait, raises +ErrNoWaitingThread+. If +nonblock+
134
+ # is true, and there is no terminated thread, raises +ErrNoFinishedThread+.
135
+ #
136
+ def next_wait(nonblock = nil)
137
+ ThreadsWait.fail ErrNoWaitingThread if @threads.empty?
138
+ begin
139
+ @threads.delete(th = @wait_queue.pop(nonblock))
140
+ th
141
+ rescue ThreadError
142
+ ThreadsWait.fail ErrNoFinishedThread
143
+ end
144
+ end
145
+
146
+ #
147
+ # Waits until all of the specified threads are terminated. If a block is
148
+ # supplied for the method, it is executed for each thread termination.
149
+ #
150
+ # Raises exceptions in the same manner as +next_wait+.
151
+ #
152
+ def all_waits
153
+ until @threads.empty?
154
+ th = next_wait
155
+ yield th if block_given?
156
+ end
157
+ end
158
+ end
159
+
160
+ ThWait = ThreadsWait
161
+
162
+
163
+ # Documentation comments:
164
+ # - Source of documentation is evenly split between Nutshell, existing
165
+ # comments, and my own rephrasing.
166
+ # - I'm not particularly confident that the comments are all exactly correct.
167
+ # - The history, etc., up the top appears in the RDoc output. Perhaps it would
168
+ # be better to direct that not to appear, and put something else there
169
+ # instead.
@@ -0,0 +1,797 @@
1
+
2
+ #
3
+ # == Introduction
4
+ #
5
+ # This library extends the Time class:
6
+ # * conversion between date string and time object.
7
+ # * date-time defined by RFC 2822
8
+ # * HTTP-date defined by RFC 2616
9
+ # * dateTime defined by XML Schema Part 2: Datatypes (ISO 8601)
10
+ # * various formats handled by Date._parse (string to time only)
11
+ #
12
+ # == Design Issues
13
+ #
14
+ # === Specialized interface
15
+ #
16
+ # This library provides methods dedicated to special purposes:
17
+ # * RFC 2822, RFC 2616 and XML Schema.
18
+ # * They makes usual life easier.
19
+ #
20
+ # === Doesn't depend on strftime
21
+ #
22
+ # This library doesn't use +strftime+. Especially #rfc2822 doesn't depend
23
+ # on +strftime+ because:
24
+ #
25
+ # * %a and %b are locale sensitive
26
+ #
27
+ # Since they are locale sensitive, they may be replaced to
28
+ # invalid weekday/month name in some locales.
29
+ # Since ruby-1.6 doesn't invoke setlocale by default,
30
+ # the problem doesn't arise until some external library invokes setlocale.
31
+ # Ruby/GTK is the example of such library.
32
+ #
33
+ # * %z is not portable
34
+ #
35
+ # %z is required to generate zone in date-time of RFC 2822
36
+ # but it is not portable.
37
+ #
38
+ # == Revision Information
39
+ #
40
+ # $Id$
41
+ #
42
+
43
+ require 'parsedate'
44
+
45
+ #
46
+ # Implements the extensions to the Time class that are described in the
47
+ # documentation for the time.rb library.
48
+ #
49
+ class Time
50
+ class << Time
51
+
52
+ ZoneOffset = {
53
+ 'UTC' => 0,
54
+ # ISO 8601
55
+ 'Z' => 0,
56
+ # RFC 822
57
+ 'UT' => 0, 'GMT' => 0,
58
+ 'EST' => -5, 'EDT' => -4,
59
+ 'CST' => -6, 'CDT' => -5,
60
+ 'MST' => -7, 'MDT' => -6,
61
+ 'PST' => -8, 'PDT' => -7,
62
+ # Following definition of military zones is original one.
63
+ # See RFC 1123 and RFC 2822 for the error in RFC 822.
64
+ 'A' => +1, 'B' => +2, 'C' => +3, 'D' => +4, 'E' => +5, 'F' => +6,
65
+ 'G' => +7, 'H' => +8, 'I' => +9, 'K' => +10, 'L' => +11, 'M' => +12,
66
+ 'N' => -1, 'O' => -2, 'P' => -3, 'Q' => -4, 'R' => -5, 'S' => -6,
67
+ 'T' => -7, 'U' => -8, 'V' => -9, 'W' => -10, 'X' => -11, 'Y' => -12,
68
+ }
69
+ def zone_offset(zone, year=self.now.year)
70
+ off = nil
71
+ zone = zone.upcase
72
+ if /\A([+-])(\d\d):?(\d\d)\z/ =~ zone
73
+ off = ($1 == '-' ? -1 : 1) * ($2.to_i * 60 + $3.to_i) * 60
74
+ elsif /\A[+-]\d\d\z/ =~ zone
75
+ off = zone.to_i * 3600
76
+ elsif ZoneOffset.include?(zone)
77
+ off = ZoneOffset[zone] * 3600
78
+ elsif ((t = self.local(year, 1, 1)).zone.upcase == zone rescue false)
79
+ off = t.utc_offset
80
+ elsif ((t = self.local(year, 7, 1)).zone.upcase == zone rescue false)
81
+ off = t.utc_offset
82
+ end
83
+ off
84
+ end
85
+
86
+ def zone_utc?(zone)
87
+ # * +0000 means localtime. [RFC 2822]
88
+ # * GMT is a localtime abbreviation in Europe/London, etc.
89
+ if /\A(?:-00:00|-0000|-00|UTC|Z|UT)\z/i =~ zone
90
+ true
91
+ else
92
+ false
93
+ end
94
+ end
95
+ private :zone_utc?
96
+
97
+ LeapYearMonthDays = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
98
+ CommonYearMonthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
99
+ def month_days(y, m)
100
+ if ((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0)
101
+ LeapYearMonthDays[m-1]
102
+ else
103
+ CommonYearMonthDays[m-1]
104
+ end
105
+ end
106
+ private :month_days
107
+
108
+ def apply_offset(year, mon, day, hour, min, sec, off)
109
+ if off < 0
110
+ off = -off
111
+ off, o = off.divmod(60)
112
+ if o != 0 then sec += o; o, sec = sec.divmod(60); off += o end
113
+ off, o = off.divmod(60)
114
+ if o != 0 then min += o; o, min = min.divmod(60); off += o end
115
+ off, o = off.divmod(24)
116
+ if o != 0 then hour += o; o, hour = hour.divmod(24); off += o end
117
+ if off != 0
118
+ day += off
119
+ if month_days(year, mon) < day
120
+ mon += 1
121
+ if 12 < mon
122
+ mon = 1
123
+ year += 1
124
+ end
125
+ day = 1
126
+ end
127
+ end
128
+ elsif 0 < off
129
+ off, o = off.divmod(60)
130
+ if o != 0 then sec -= o; o, sec = sec.divmod(60); off -= o end
131
+ off, o = off.divmod(60)
132
+ if o != 0 then min -= o; o, min = min.divmod(60); off -= o end
133
+ off, o = off.divmod(24)
134
+ if o != 0 then hour -= o; o, hour = hour.divmod(24); off -= o end
135
+ if off != 0 then
136
+ day -= off
137
+ if day < 1
138
+ mon -= 1
139
+ if mon < 1
140
+ year -= 1
141
+ mon = 12
142
+ end
143
+ day = month_days(year, mon)
144
+ end
145
+ end
146
+ end
147
+ return year, mon, day, hour, min, sec
148
+ end
149
+ private :apply_offset
150
+
151
+ def make_time(year, mon, day, hour, min, sec, sec_fraction, zone, now)
152
+ usec = nil
153
+ usec = (sec_fraction * 1000000).to_i if sec_fraction
154
+ if now
155
+ begin
156
+ break if year; year = now.year
157
+ break if mon; mon = now.mon
158
+ break if day; day = now.day
159
+ break if hour; hour = now.hour
160
+ break if min; min = now.min
161
+ break if sec; sec = now.sec
162
+ break if sec_fraction; usec = now.tv_usec
163
+ end until true
164
+ end
165
+
166
+ year ||= 1970
167
+ mon ||= 1
168
+ day ||= 1
169
+ hour ||= 0
170
+ min ||= 0
171
+ sec ||= 0
172
+ usec ||= 0
173
+
174
+ off = nil
175
+ off = zone_offset(zone, year) if zone
176
+
177
+ if off
178
+ year, mon, day, hour, min, sec =
179
+ apply_offset(year, mon, day, hour, min, sec, off)
180
+ t = self.utc(year, mon, day, hour, min, sec, usec)
181
+ t.localtime if !zone_utc?(zone)
182
+ t
183
+ else
184
+ self.local(year, mon, day, hour, min, sec, usec)
185
+ end
186
+ end
187
+ private :make_time
188
+
189
+ #
190
+ # Parses +date+ using Date._parse and converts it to a Time object.
191
+ #
192
+ # If a block is given, the year described in +date+ is converted by the
193
+ # block. For example:
194
+ #
195
+ # Time.parse(...) {|y| y < 100 ? (y >= 69 ? y + 1900 : y + 2000) : y}
196
+ #
197
+ # If the upper components of the given time are broken or missing, they are
198
+ # supplied with those of +now+. For the lower components, the minimum
199
+ # values (1 or 0) are assumed if broken or missing. For example:
200
+ #
201
+ # # Suppose it is "Thu Nov 29 14:33:20 GMT 2001" now and
202
+ # # your timezone is GMT:
203
+ # Time.parse("16:30") #=> Thu Nov 29 16:30:00 GMT 2001
204
+ # Time.parse("7/23") #=> Mon Jul 23 00:00:00 GMT 2001
205
+ # Time.parse("Aug 31") #=> Fri Aug 31 00:00:00 GMT 2001
206
+ #
207
+ # Since there are numerous conflicts among locally defined timezone
208
+ # abbreviations all over the world, this method is not made to
209
+ # understand all of them. For example, the abbreviation "CST" is
210
+ # used variously as:
211
+ #
212
+ # -06:00 in America/Chicago,
213
+ # -05:00 in America/Havana,
214
+ # +08:00 in Asia/Harbin,
215
+ # +09:30 in Australia/Darwin,
216
+ # +10:30 in Australia/Adelaide,
217
+ # etc.
218
+ #
219
+ # Based on the fact, this method only understands the timezone
220
+ # abbreviations described in RFC 822 and the system timezone, in the
221
+ # order named. (i.e. a definition in RFC 822 overrides the system
222
+ # timezone definition.) The system timezone is taken from
223
+ # <tt>Time.local(year, 1, 1).zone</tt> and
224
+ # <tt>Time.local(year, 7, 1).zone</tt>.
225
+ # If the extracted timezone abbreviation does not match any of them,
226
+ # it is ignored and the given time is regarded as a local time.
227
+ #
228
+ # ArgumentError is raised if Date._parse cannot extract information from
229
+ # +date+ or Time class cannot represent specified date.
230
+ #
231
+ # This method can be used as fail-safe for other parsing methods as:
232
+ #
233
+ # Time.rfc2822(date) rescue Time.parse(date)
234
+ # Time.httpdate(date) rescue Time.parse(date)
235
+ # Time.xmlschema(date) rescue Time.parse(date)
236
+ #
237
+ # A failure for Time.parse should be checked, though.
238
+ #
239
+ def parse(date, now=self.now)
240
+ d = Date._parse(date, false)
241
+ year = d[:year]
242
+ year = yield(year) if year && block_given?
243
+ make_time(year, d[:mon], d[:mday], d[:hour], d[:min], d[:sec], d[:sec_fraction], d[:zone], now)
244
+ end
245
+
246
+ MonthValue = {
247
+ 'JAN' => 1, 'FEB' => 2, 'MAR' => 3, 'APR' => 4, 'MAY' => 5, 'JUN' => 6,
248
+ 'JUL' => 7, 'AUG' => 8, 'SEP' => 9, 'OCT' =>10, 'NOV' =>11, 'DEC' =>12
249
+ }
250
+
251
+ #
252
+ # Parses +date+ as date-time defined by RFC 2822 and converts it to a Time
253
+ # object. The format is identical to the date format defined by RFC 822 and
254
+ # updated by RFC 1123.
255
+ #
256
+ # ArgumentError is raised if +date+ is not compliant with RFC 2822
257
+ # or Time class cannot represent specified date.
258
+ #
259
+ # See #rfc2822 for more information on this format.
260
+ #
261
+ def rfc2822(date)
262
+ if /\A\s*
263
+ (?:(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s*,\s*)?
264
+ (\d{1,2})\s+
265
+ (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+
266
+ (\d{2,})\s+
267
+ (\d{2})\s*
268
+ :\s*(\d{2})\s*
269
+ (?::\s*(\d{2}))?\s+
270
+ ([+-]\d{4}|
271
+ UT|GMT|EST|EDT|CST|CDT|MST|MDT|PST|PDT|[A-IK-Z])/ix =~ date
272
+ # Since RFC 2822 permit comments, the regexp has no right anchor.
273
+ day = $1.to_i
274
+ mon = MonthValue[$2.upcase]
275
+ year = $3.to_i
276
+ hour = $4.to_i
277
+ min = $5.to_i
278
+ sec = $6 ? $6.to_i : 0
279
+ zone = $7
280
+
281
+ # following year completion is compliant with RFC 2822.
282
+ year = if year < 50
283
+ 2000 + year
284
+ elsif year < 1000
285
+ 1900 + year
286
+ else
287
+ year
288
+ end
289
+
290
+ year, mon, day, hour, min, sec =
291
+ apply_offset(year, mon, day, hour, min, sec, zone_offset(zone))
292
+ t = self.utc(year, mon, day, hour, min, sec)
293
+ t.localtime if !zone_utc?(zone)
294
+ t
295
+ else
296
+ raise ArgumentError.new("not RFC 2822 compliant date: #{date.inspect}")
297
+ end
298
+ end
299
+ alias rfc822 rfc2822
300
+
301
+ #
302
+ # Parses +date+ as HTTP-date defined by RFC 2616 and converts it to a Time
303
+ # object.
304
+ #
305
+ # ArgumentError is raised if +date+ is not compliant with RFC 2616 or Time
306
+ # class cannot represent specified date.
307
+ #
308
+ # See #httpdate for more information on this format.
309
+ #
310
+ def httpdate(date)
311
+ if /\A\s*
312
+ (?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),\x20
313
+ (\d{2})\x20
314
+ (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\x20
315
+ (\d{4})\x20
316
+ (\d{2}):(\d{2}):(\d{2})\x20
317
+ GMT
318
+ \s*\z/ix =~ date
319
+ self.rfc2822(date)
320
+ elsif /\A\s*
321
+ (?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday),\x20
322
+ (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d)\x20
323
+ (\d\d):(\d\d):(\d\d)\x20
324
+ GMT
325
+ \s*\z/ix =~ date
326
+ self.parse(date)
327
+ elsif /\A\s*
328
+ (?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)\x20
329
+ (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\x20
330
+ (\d\d|\x20\d)\x20
331
+ (\d\d):(\d\d):(\d\d)\x20
332
+ (\d{4})
333
+ \s*\z/ix =~ date
334
+ self.utc($6.to_i, MonthValue[$1.upcase], $2.to_i,
335
+ $3.to_i, $4.to_i, $5.to_i)
336
+ else
337
+ raise ArgumentError.new("not RFC 2616 compliant date: #{date.inspect}")
338
+ end
339
+ end
340
+
341
+ #
342
+ # Parses +date+ as dateTime defined by XML Schema and converts it to a Time
343
+ # object. The format is restricted version of the format defined by ISO
344
+ # 8601.
345
+ #
346
+ # ArgumentError is raised if +date+ is not compliant with the format or Time
347
+ # class cannot represent specified date.
348
+ #
349
+ # See #xmlschema for more information on this format.
350
+ #
351
+ def xmlschema(date)
352
+ if /\A\s*
353
+ (-?\d+)-(\d\d)-(\d\d)
354
+ T
355
+ (\d\d):(\d\d):(\d\d)
356
+ (\.\d*)?
357
+ (Z|[+-]\d\d:\d\d)?
358
+ \s*\z/ix =~ date
359
+ year = $1.to_i
360
+ mon = $2.to_i
361
+ day = $3.to_i
362
+ hour = $4.to_i
363
+ min = $5.to_i
364
+ sec = $6.to_i
365
+ usec = 0
366
+ usec = $7.to_f * 1000000 if $7
367
+ if $8
368
+ zone = $8
369
+ year, mon, day, hour, min, sec =
370
+ apply_offset(year, mon, day, hour, min, sec, zone_offset(zone))
371
+ self.utc(year, mon, day, hour, min, sec, usec)
372
+ else
373
+ self.local(year, mon, day, hour, min, sec, usec)
374
+ end
375
+ else
376
+ raise ArgumentError.new("invalid date: #{date.inspect}")
377
+ end
378
+ end
379
+ alias iso8601 xmlschema
380
+ end # class << self
381
+
382
+ #
383
+ # Returns a string which represents the time as date-time defined by RFC 2822:
384
+ #
385
+ # day-of-week, DD month-name CCYY hh:mm:ss zone
386
+ #
387
+ # where zone is [+-]hhmm.
388
+ #
389
+ # If +self+ is a UTC time, -0000 is used as zone.
390
+ #
391
+ def rfc2822
392
+ sprintf('%s, %02d %s %d %02d:%02d:%02d ',
393
+ RFC2822_DAY_NAME[wday],
394
+ day, RFC2822_MONTH_NAME[mon-1], year,
395
+ hour, min, sec) +
396
+ if utc?
397
+ '-0000'
398
+ else
399
+ off = utc_offset
400
+ sign = off < 0 ? '-' : '+'
401
+ sprintf('%s%02d%02d', sign, *(off.abs / 60).divmod(60))
402
+ end
403
+ end
404
+ alias rfc822 rfc2822
405
+
406
+ RFC2822_DAY_NAME = [
407
+ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'
408
+ ]
409
+ RFC2822_MONTH_NAME = [
410
+ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
411
+ 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
412
+ ]
413
+
414
+ #
415
+ # Returns a string which represents the time as rfc1123-date of HTTP-date
416
+ # defined by RFC 2616:
417
+ #
418
+ # day-of-week, DD month-name CCYY hh:mm:ss GMT
419
+ #
420
+ # Note that the result is always UTC (GMT).
421
+ #
422
+ def httpdate
423
+ t = dup.utc
424
+ sprintf('%s, %02d %s %d %02d:%02d:%02d GMT',
425
+ RFC2822_DAY_NAME[t.wday],
426
+ t.day, RFC2822_MONTH_NAME[t.mon-1], t.year,
427
+ t.hour, t.min, t.sec)
428
+ end
429
+
430
+ #
431
+ # Returns a string which represents the time as dateTime defined by XML
432
+ # Schema:
433
+ #
434
+ # CCYY-MM-DDThh:mm:ssTZD
435
+ # CCYY-MM-DDThh:mm:ss.sssTZD
436
+ #
437
+ # where TZD is Z or [+-]hh:mm.
438
+ #
439
+ # If self is a UTC time, Z is used as TZD. [+-]hh:mm is used otherwise.
440
+ #
441
+ # +fractional_seconds+ specifies a number of digits of fractional seconds.
442
+ # Its default value is 0.
443
+ #
444
+ def xmlschema(fraction_digits=0)
445
+ sprintf('%d-%02d-%02dT%02d:%02d:%02d',
446
+ year, mon, day, hour, min, sec) +
447
+ if fraction_digits == 0
448
+ ''
449
+ elsif fraction_digits <= 6
450
+ '.' + sprintf('%06d', usec)[0, fraction_digits]
451
+ else
452
+ '.' + sprintf('%06d', usec) + '0' * (fraction_digits - 6)
453
+ end +
454
+ if utc?
455
+ 'Z'
456
+ else
457
+ off = utc_offset
458
+ sign = off < 0 ? '-' : '+'
459
+ sprintf('%s%02d:%02d', sign, *(off.abs / 60).divmod(60))
460
+ end
461
+ end
462
+ alias iso8601 xmlschema
463
+ end
464
+
465
+ if __FILE__ == $0
466
+ require 'test/unit'
467
+
468
+ class TimeExtentionTest < Test::Unit::TestCase # :nodoc:
469
+ def test_rfc822
470
+ assert_equal(Time.utc(1976, 8, 26, 14, 30) + 4 * 3600,
471
+ Time.rfc2822("26 Aug 76 14:30 EDT"))
472
+ assert_equal(Time.utc(1976, 8, 27, 9, 32) + 7 * 3600,
473
+ Time.rfc2822("27 Aug 76 09:32 PDT"))
474
+ end
475
+
476
+ def test_rfc2822
477
+ assert_equal(Time.utc(1997, 11, 21, 9, 55, 6) + 6 * 3600,
478
+ Time.rfc2822("Fri, 21 Nov 1997 09:55:06 -0600"))
479
+ assert_equal(Time.utc(2003, 7, 1, 10, 52, 37) - 2 * 3600,
480
+ Time.rfc2822("Tue, 1 Jul 2003 10:52:37 +0200"))
481
+ assert_equal(Time.utc(1997, 11, 21, 10, 1, 10) + 6 * 3600,
482
+ Time.rfc2822("Fri, 21 Nov 1997 10:01:10 -0600"))
483
+ assert_equal(Time.utc(1997, 11, 21, 11, 0, 0) + 6 * 3600,
484
+ Time.rfc2822("Fri, 21 Nov 1997 11:00:00 -0600"))
485
+ assert_equal(Time.utc(1997, 11, 24, 14, 22, 1) + 8 * 3600,
486
+ Time.rfc2822("Mon, 24 Nov 1997 14:22:01 -0800"))
487
+ begin
488
+ Time.at(-1)
489
+ rescue ArgumentError
490
+ # ignore
491
+ else
492
+ assert_equal(Time.utc(1969, 2, 13, 23, 32, 54) + 3 * 3600 + 30 * 60,
493
+ Time.rfc2822("Thu, 13 Feb 1969 23:32:54 -0330"))
494
+ assert_equal(Time.utc(1969, 2, 13, 23, 32, 0) + 3 * 3600 + 30 * 60,
495
+ Time.rfc2822(" Thu,
496
+ 13
497
+ Feb
498
+ 1969
499
+ 23:32
500
+ -0330 (Newfoundland Time)"))
501
+ end
502
+ assert_equal(Time.utc(1997, 11, 21, 9, 55, 6),
503
+ Time.rfc2822("21 Nov 97 09:55:06 GMT"))
504
+ assert_equal(Time.utc(1997, 11, 21, 9, 55, 6) + 6 * 3600,
505
+ Time.rfc2822("Fri, 21 Nov 1997 09 : 55 : 06 -0600"))
506
+ assert_raise(ArgumentError) {
507
+ # inner comment is not supported.
508
+ Time.rfc2822("Fri, 21 Nov 1997 09(comment): 55 : 06 -0600")
509
+ }
510
+ end
511
+
512
+ def test_rfc2616
513
+ t = Time.utc(1994, 11, 6, 8, 49, 37)
514
+ assert_equal(t, Time.httpdate("Sun, 06 Nov 1994 08:49:37 GMT"))
515
+ assert_equal(t, Time.httpdate("Sunday, 06-Nov-94 08:49:37 GMT"))
516
+ assert_equal(t, Time.httpdate("Sun Nov 6 08:49:37 1994"))
517
+ assert_equal(Time.utc(1995, 11, 15, 6, 25, 24),
518
+ Time.httpdate("Wed, 15 Nov 1995 06:25:24 GMT"))
519
+ assert_equal(Time.utc(1995, 11, 15, 4, 58, 8),
520
+ Time.httpdate("Wed, 15 Nov 1995 04:58:08 GMT"))
521
+ assert_equal(Time.utc(1994, 11, 15, 8, 12, 31),
522
+ Time.httpdate("Tue, 15 Nov 1994 08:12:31 GMT"))
523
+ assert_equal(Time.utc(1994, 12, 1, 16, 0, 0),
524
+ Time.httpdate("Thu, 01 Dec 1994 16:00:00 GMT"))
525
+ assert_equal(Time.utc(1994, 10, 29, 19, 43, 31),
526
+ Time.httpdate("Sat, 29 Oct 1994 19:43:31 GMT"))
527
+ assert_equal(Time.utc(1994, 11, 15, 12, 45, 26),
528
+ Time.httpdate("Tue, 15 Nov 1994 12:45:26 GMT"))
529
+ assert_equal(Time.utc(1999, 12, 31, 23, 59, 59),
530
+ Time.httpdate("Fri, 31 Dec 1999 23:59:59 GMT"))
531
+ end
532
+
533
+ def test_rfc3339
534
+ t = Time.utc(1985, 4, 12, 23, 20, 50, 520000)
535
+ s = "1985-04-12T23:20:50.52Z"
536
+ assert_equal(t, Time.iso8601(s))
537
+ assert_equal(s, t.iso8601(2))
538
+
539
+ t = Time.utc(1996, 12, 20, 0, 39, 57)
540
+ s = "1996-12-19T16:39:57-08:00"
541
+ assert_equal(t, Time.iso8601(s))
542
+ # There is no way to generate time string with arbitrary timezone.
543
+ s = "1996-12-20T00:39:57Z"
544
+ assert_equal(t, Time.iso8601(s))
545
+ assert_equal(s, t.iso8601)
546
+
547
+ t = Time.utc(1990, 12, 31, 23, 59, 60)
548
+ s = "1990-12-31T23:59:60Z"
549
+ assert_equal(t, Time.iso8601(s))
550
+ # leap second is representable only if timezone file has it.
551
+ s = "1990-12-31T15:59:60-08:00"
552
+ assert_equal(t, Time.iso8601(s))
553
+
554
+ begin
555
+ Time.at(-1)
556
+ rescue ArgumentError
557
+ # ignore
558
+ else
559
+ t = Time.utc(1937, 1, 1, 11, 40, 27, 870000)
560
+ s = "1937-01-01T12:00:27.87+00:20"
561
+ assert_equal(t, Time.iso8601(s))
562
+ end
563
+ end
564
+
565
+ # http://www.w3.org/TR/xmlschema-2/
566
+ def test_xmlschema
567
+ assert_equal(Time.utc(1999, 5, 31, 13, 20, 0) + 5 * 3600,
568
+ Time.xmlschema("1999-05-31T13:20:00-05:00"))
569
+ assert_equal(Time.local(2000, 1, 20, 12, 0, 0),
570
+ Time.xmlschema("2000-01-20T12:00:00"))
571
+ assert_equal(Time.utc(2000, 1, 20, 12, 0, 0),
572
+ Time.xmlschema("2000-01-20T12:00:00Z"))
573
+ assert_equal(Time.utc(2000, 1, 20, 12, 0, 0) - 12 * 3600,
574
+ Time.xmlschema("2000-01-20T12:00:00+12:00"))
575
+ assert_equal(Time.utc(2000, 1, 20, 12, 0, 0) + 13 * 3600,
576
+ Time.xmlschema("2000-01-20T12:00:00-13:00"))
577
+ assert_equal(Time.utc(2000, 3, 4, 23, 0, 0) - 3 * 3600,
578
+ Time.xmlschema("2000-03-04T23:00:00+03:00"))
579
+ assert_equal(Time.utc(2000, 3, 4, 20, 0, 0),
580
+ Time.xmlschema("2000-03-04T20:00:00Z"))
581
+ assert_equal(Time.local(2000, 1, 15, 0, 0, 0),
582
+ Time.xmlschema("2000-01-15T00:00:00"))
583
+ assert_equal(Time.local(2000, 2, 15, 0, 0, 0),
584
+ Time.xmlschema("2000-02-15T00:00:00"))
585
+ assert_equal(Time.local(2000, 1, 15, 12, 0, 0),
586
+ Time.xmlschema("2000-01-15T12:00:00"))
587
+ assert_equal(Time.utc(2000, 1, 16, 12, 0, 0),
588
+ Time.xmlschema("2000-01-16T12:00:00Z"))
589
+ assert_equal(Time.local(2000, 1, 1, 12, 0, 0),
590
+ Time.xmlschema("2000-01-01T12:00:00"))
591
+ assert_equal(Time.utc(1999, 12, 31, 23, 0, 0),
592
+ Time.xmlschema("1999-12-31T23:00:00Z"))
593
+ assert_equal(Time.local(2000, 1, 16, 12, 0, 0),
594
+ Time.xmlschema("2000-01-16T12:00:00"))
595
+ assert_equal(Time.local(2000, 1, 16, 0, 0, 0),
596
+ Time.xmlschema("2000-01-16T00:00:00"))
597
+ assert_equal(Time.utc(2000, 1, 12, 12, 13, 14),
598
+ Time.xmlschema("2000-01-12T12:13:14Z"))
599
+ assert_equal(Time.utc(2001, 4, 17, 19, 23, 17, 300000),
600
+ Time.xmlschema("2001-04-17T19:23:17.3Z"))
601
+ end
602
+
603
+ def test_encode_xmlschema
604
+ t = Time.utc(2001, 4, 17, 19, 23, 17, 300000)
605
+ assert_equal("2001-04-17T19:23:17Z", t.xmlschema)
606
+ assert_equal("2001-04-17T19:23:17.3Z", t.xmlschema(1))
607
+ assert_equal("2001-04-17T19:23:17.300000Z", t.xmlschema(6))
608
+ assert_equal("2001-04-17T19:23:17.3000000Z", t.xmlschema(7))
609
+
610
+ t = Time.utc(2001, 4, 17, 19, 23, 17, 123456)
611
+ assert_equal("2001-04-17T19:23:17.1234560Z", t.xmlschema(7))
612
+ assert_equal("2001-04-17T19:23:17.123456Z", t.xmlschema(6))
613
+ assert_equal("2001-04-17T19:23:17.12345Z", t.xmlschema(5))
614
+ assert_equal("2001-04-17T19:23:17.1Z", t.xmlschema(1))
615
+
616
+ begin
617
+ Time.at(-1)
618
+ rescue ArgumentError
619
+ # ignore
620
+ else
621
+ t = Time.utc(1960, 12, 31, 23, 0, 0, 123456)
622
+ assert_equal("1960-12-31T23:00:00.123456Z", t.xmlschema(6))
623
+ end
624
+ end
625
+
626
+ def test_completion
627
+ now = Time.local(2001,11,29,21,26,35)
628
+ assert_equal(Time.local( 2001,11,29,21,12),
629
+ Time.parse("2001/11/29 21:12", now))
630
+ assert_equal(Time.local( 2001,11,29),
631
+ Time.parse("2001/11/29", now))
632
+ assert_equal(Time.local( 2001,11,29),
633
+ Time.parse( "11/29", now))
634
+ #assert_equal(Time.local(2001,11,1), Time.parse("Nov", now))
635
+ assert_equal(Time.local( 2001,11,29,10,22),
636
+ Time.parse( "10:22", now))
637
+ end
638
+
639
+ def test_invalid
640
+ # They were actually used in some web sites.
641
+ assert_raise(ArgumentError) { Time.httpdate("1 Dec 2001 10:23:57 GMT") }
642
+ assert_raise(ArgumentError) { Time.httpdate("Sat, 1 Dec 2001 10:25:42 GMT") }
643
+ assert_raise(ArgumentError) { Time.httpdate("Sat, 1-Dec-2001 10:53:55 GMT") }
644
+ assert_raise(ArgumentError) { Time.httpdate("Saturday, 01-Dec-2001 10:15:34 GMT") }
645
+ assert_raise(ArgumentError) { Time.httpdate("Saturday, 01-Dec-101 11:10:07 GMT") }
646
+ assert_raise(ArgumentError) { Time.httpdate("Fri, 30 Nov 2001 21:30:00 JST") }
647
+
648
+ # They were actually used in some mails.
649
+ assert_raise(ArgumentError) { Time.rfc2822("01-5-20") }
650
+ assert_raise(ArgumentError) { Time.rfc2822("7/21/00") }
651
+ assert_raise(ArgumentError) { Time.rfc2822("2001-8-28") }
652
+ assert_raise(ArgumentError) { Time.rfc2822("00-5-6 1:13:06") }
653
+ assert_raise(ArgumentError) { Time.rfc2822("2001-9-27 9:36:49") }
654
+ assert_raise(ArgumentError) { Time.rfc2822("2000-12-13 11:01:11") }
655
+ assert_raise(ArgumentError) { Time.rfc2822("2001/10/17 04:29:55") }
656
+ assert_raise(ArgumentError) { Time.rfc2822("9/4/2001 9:23:19 PM") }
657
+ assert_raise(ArgumentError) { Time.rfc2822("01 Nov 2001 09:04:31") }
658
+ assert_raise(ArgumentError) { Time.rfc2822("13 Feb 2001 16:4 GMT") }
659
+ assert_raise(ArgumentError) { Time.rfc2822("01 Oct 00 5:41:19 PM") }
660
+ assert_raise(ArgumentError) { Time.rfc2822("2 Jul 00 00:51:37 JST") }
661
+ assert_raise(ArgumentError) { Time.rfc2822("01 11 2001 06:55:57 -0500") }
662
+ assert_raise(ArgumentError) { Time.rfc2822("18 \343\366\356\341\370 2000") }
663
+ assert_raise(ArgumentError) { Time.rfc2822("Fri, Oct 2001 18:53:32") }
664
+ assert_raise(ArgumentError) { Time.rfc2822("Fri, 2 Nov 2001 03:47:54") }
665
+ assert_raise(ArgumentError) { Time.rfc2822("Fri, 27 Jul 2001 11.14.14 +0200") }
666
+ assert_raise(ArgumentError) { Time.rfc2822("Thu, 2 Nov 2000 04:13:53 -600") }
667
+ assert_raise(ArgumentError) { Time.rfc2822("Wed, 5 Apr 2000 22:57:09 JST") }
668
+ assert_raise(ArgumentError) { Time.rfc2822("Mon, 11 Sep 2000 19:47:33 00000") }
669
+ assert_raise(ArgumentError) { Time.rfc2822("Fri, 28 Apr 2000 20:40:47 +-900") }
670
+ assert_raise(ArgumentError) { Time.rfc2822("Fri, 19 Jan 2001 8:15:36 AM -0500") }
671
+ assert_raise(ArgumentError) { Time.rfc2822("Thursday, Sep 27 2001 7:42:35 AM EST") }
672
+ assert_raise(ArgumentError) { Time.rfc2822("3/11/2001 1:31:57 PM Pacific Daylight Time") }
673
+ assert_raise(ArgumentError) { Time.rfc2822("Mi, 28 Mrz 2001 11:51:36") }
674
+ assert_raise(ArgumentError) { Time.rfc2822("P, 30 sept 2001 23:03:14") }
675
+ assert_raise(ArgumentError) { Time.rfc2822("fr, 11 aug 2000 18:39:22") }
676
+ assert_raise(ArgumentError) { Time.rfc2822("Fr, 21 Sep 2001 17:44:03 -1000") }
677
+ assert_raise(ArgumentError) { Time.rfc2822("Mo, 18 Jun 2001 19:21:40 -1000") }
678
+ assert_raise(ArgumentError) { Time.rfc2822("l\366, 12 aug 2000 18:53:20") }
679
+ assert_raise(ArgumentError) { Time.rfc2822("l\366, 26 maj 2001 00:15:58") }
680
+ assert_raise(ArgumentError) { Time.rfc2822("Dom, 30 Sep 2001 17:36:30") }
681
+ assert_raise(ArgumentError) { Time.rfc2822("%&, 31 %2/ 2000 15:44:47 -0500") }
682
+ assert_raise(ArgumentError) { Time.rfc2822("dom, 26 ago 2001 03:57:07 -0300") }
683
+ assert_raise(ArgumentError) { Time.rfc2822("ter, 04 set 2001 16:27:58 -0300") }
684
+ assert_raise(ArgumentError) { Time.rfc2822("Wen, 3 oct 2001 23:17:49 -0400") }
685
+ assert_raise(ArgumentError) { Time.rfc2822("Wen, 3 oct 2001 23:17:49 -0400") }
686
+ assert_raise(ArgumentError) { Time.rfc2822("ele, 11 h: 2000 12:42:15 -0500") }
687
+ assert_raise(ArgumentError) { Time.rfc2822("Tue, 14 Aug 2001 3:55:3 +0200") }
688
+ assert_raise(ArgumentError) { Time.rfc2822("Fri, 25 Aug 2000 9:3:48 +0800") }
689
+ assert_raise(ArgumentError) { Time.rfc2822("Fri, 1 Dec 2000 0:57:50 EST") }
690
+ assert_raise(ArgumentError) { Time.rfc2822("Mon, 7 May 2001 9:39:51 +0200") }
691
+ assert_raise(ArgumentError) { Time.rfc2822("Wed, 1 Aug 2001 16:9:15 +0200") }
692
+ assert_raise(ArgumentError) { Time.rfc2822("Wed, 23 Aug 2000 9:17:36 +0800") }
693
+ assert_raise(ArgumentError) { Time.rfc2822("Fri, 11 Aug 2000 10:4:42 +0800") }
694
+ assert_raise(ArgumentError) { Time.rfc2822("Sat, 15 Sep 2001 13:22:2 +0300") }
695
+ assert_raise(ArgumentError) { Time.rfc2822("Wed,16 \276\305\324\302 2001 20:06:25 +0800") }
696
+ assert_raise(ArgumentError) { Time.rfc2822("Wed,7 \312\256\322\273\324\302 2001 23:47:22 +0800") }
697
+ assert_raise(ArgumentError) { Time.rfc2822("=?iso-8859-1?Q?(=C5=DA),?= 10 2 2001 23:32:26 +0900 (JST)") }
698
+ assert_raise(ArgumentError) { Time.rfc2822("\307\341\314\343\332\311, 30 \344\346\335\343\310\321 2001 10:01:06") }
699
+ assert_raise(ArgumentError) { Time.rfc2822("=?iso-8859-1?Q?(=BF=E5),?= 12 =?iso-8859-1?Q?9=B7=EE?= 2001 14:52:41\n+0900 (JST)") }
700
+ end
701
+
702
+ def test_zone_0000
703
+ assert_equal(true, Time.parse("2000-01-01T00:00:00Z").utc?)
704
+ assert_equal(true, Time.parse("2000-01-01T00:00:00-00:00").utc?)
705
+ assert_equal(false, Time.parse("2000-01-01T00:00:00+00:00").utc?)
706
+ assert_equal(false, Time.parse("Sat, 01 Jan 2000 00:00:00 GMT").utc?)
707
+ assert_equal(true, Time.parse("Sat, 01 Jan 2000 00:00:00 -0000").utc?)
708
+ assert_equal(false, Time.parse("Sat, 01 Jan 2000 00:00:00 +0000").utc?)
709
+ assert_equal(false, Time.rfc2822("Sat, 01 Jan 2000 00:00:00 GMT").utc?)
710
+ assert_equal(true, Time.rfc2822("Sat, 01 Jan 2000 00:00:00 -0000").utc?)
711
+ assert_equal(false, Time.rfc2822("Sat, 01 Jan 2000 00:00:00 +0000").utc?)
712
+ assert_equal(true, Time.rfc2822("Sat, 01 Jan 2000 00:00:00 UTC").utc?)
713
+ end
714
+
715
+ def test_parse_leap_second
716
+ t = Time.utc(1998,12,31,23,59,59)
717
+ assert_equal(t, Time.parse("Thu Dec 31 23:59:59 UTC 1998"))
718
+ assert_equal(t, Time.parse("Fri Dec 31 23:59:59 -0000 1998"));t.localtime
719
+ assert_equal(t, Time.parse("Fri Jan 1 08:59:59 +0900 1999"))
720
+ assert_equal(t, Time.parse("Fri Jan 1 00:59:59 +0100 1999"))
721
+ assert_equal(t, Time.parse("Fri Dec 31 23:59:59 +0000 1998"))
722
+ assert_equal(t, Time.parse("Fri Dec 31 22:59:59 -0100 1998"));t.utc
723
+ t += 1
724
+ assert_equal(t, Time.parse("Thu Dec 31 23:59:60 UTC 1998"))
725
+ assert_equal(t, Time.parse("Fri Dec 31 23:59:60 -0000 1998"));t.localtime
726
+ assert_equal(t, Time.parse("Fri Jan 1 08:59:60 +0900 1999"))
727
+ assert_equal(t, Time.parse("Fri Jan 1 00:59:60 +0100 1999"))
728
+ assert_equal(t, Time.parse("Fri Dec 31 23:59:60 +0000 1998"))
729
+ assert_equal(t, Time.parse("Fri Dec 31 22:59:60 -0100 1998"));t.utc
730
+ t += 1 if t.sec == 60
731
+ assert_equal(t, Time.parse("Thu Jan 1 00:00:00 UTC 1999"))
732
+ assert_equal(t, Time.parse("Fri Jan 1 00:00:00 -0000 1999"));t.localtime
733
+ assert_equal(t, Time.parse("Fri Jan 1 09:00:00 +0900 1999"))
734
+ assert_equal(t, Time.parse("Fri Jan 1 01:00:00 +0100 1999"))
735
+ assert_equal(t, Time.parse("Fri Jan 1 00:00:00 +0000 1999"))
736
+ assert_equal(t, Time.parse("Fri Dec 31 23:00:00 -0100 1998"))
737
+ end
738
+
739
+ def test_rfc2822_leap_second
740
+ t = Time.utc(1998,12,31,23,59,59)
741
+ assert_equal(t, Time.rfc2822("Thu, 31 Dec 1998 23:59:59 UTC"))
742
+ assert_equal(t, Time.rfc2822("Fri, 31 Dec 1998 23:59:59 -0000"));t.localtime
743
+ assert_equal(t, Time.rfc2822("Fri, 1 Jan 1999 08:59:59 +0900"))
744
+ assert_equal(t, Time.rfc2822("Fri, 1 Jan 1999 00:59:59 +0100"))
745
+ assert_equal(t, Time.rfc2822("Fri, 31 Dec 1998 23:59:59 +0000"))
746
+ assert_equal(t, Time.rfc2822("Fri, 31 Dec 1998 22:59:59 -0100"));t.utc
747
+ t += 1
748
+ assert_equal(t, Time.rfc2822("Thu, 31 Dec 1998 23:59:60 UTC"))
749
+ assert_equal(t, Time.rfc2822("Fri, 31 Dec 1998 23:59:60 -0000"));t.localtime
750
+ assert_equal(t, Time.rfc2822("Fri, 1 Jan 1999 08:59:60 +0900"))
751
+ assert_equal(t, Time.rfc2822("Fri, 1 Jan 1999 00:59:60 +0100"))
752
+ assert_equal(t, Time.rfc2822("Fri, 31 Dec 1998 23:59:60 +0000"))
753
+ assert_equal(t, Time.rfc2822("Fri, 31 Dec 1998 22:59:60 -0100"));t.utc
754
+ t += 1 if t.sec == 60
755
+ assert_equal(t, Time.rfc2822("Thu, 1 Jan 1999 00:00:00 UTC"))
756
+ assert_equal(t, Time.rfc2822("Fri, 1 Jan 1999 00:00:00 -0000"));t.localtime
757
+ assert_equal(t, Time.rfc2822("Fri, 1 Jan 1999 09:00:00 +0900"))
758
+ assert_equal(t, Time.rfc2822("Fri, 1 Jan 1999 01:00:00 +0100"))
759
+ assert_equal(t, Time.rfc2822("Fri, 1 Jan 1999 00:00:00 +0000"))
760
+ assert_equal(t, Time.rfc2822("Fri, 31 Dec 1998 23:00:00 -0100"))
761
+ end
762
+
763
+ def test_xmlschema_leap_second
764
+ t = Time.utc(1998,12,31,23,59,59)
765
+ assert_equal(t, Time.xmlschema("1998-12-31T23:59:59Z"))
766
+ assert_equal(t, Time.xmlschema("1998-12-31T23:59:59-00:00"));t.localtime
767
+ assert_equal(t, Time.xmlschema("1999-01-01T08:59:59+09:00"))
768
+ assert_equal(t, Time.xmlschema("1999-01-01T00:59:59+01:00"))
769
+ assert_equal(t, Time.xmlschema("1998-12-31T23:59:59+00:00"))
770
+ assert_equal(t, Time.xmlschema("1998-12-31T22:59:59-01:00"));t.utc
771
+ t += 1
772
+ assert_equal(t, Time.xmlschema("1998-12-31T23:59:60Z"))
773
+ assert_equal(t, Time.xmlschema("1998-12-31T23:59:60-00:00"));t.localtime
774
+ assert_equal(t, Time.xmlschema("1999-01-01T08:59:60+09:00"))
775
+ assert_equal(t, Time.xmlschema("1999-01-01T00:59:60+01:00"))
776
+ assert_equal(t, Time.xmlschema("1998-12-31T23:59:60+00:00"))
777
+ assert_equal(t, Time.xmlschema("1998-12-31T22:59:60-01:00"));t.utc
778
+ t += 1 if t.sec == 60
779
+ assert_equal(t, Time.xmlschema("1999-01-01T00:00:00Z"))
780
+ assert_equal(t, Time.xmlschema("1999-01-01T00:00:00-00:00"));t.localtime
781
+ assert_equal(t, Time.xmlschema("1999-01-01T09:00:00+09:00"))
782
+ assert_equal(t, Time.xmlschema("1999-01-01T01:00:00+01:00"))
783
+ assert_equal(t, Time.xmlschema("1999-01-01T00:00:00+00:00"))
784
+ assert_equal(t, Time.xmlschema("1998-12-31T23:00:00-01:00"))
785
+ end
786
+
787
+ def test_ruby_talk_152866
788
+ t = Time::xmlschema('2005-08-30T22:48:00-07:00')
789
+ assert_equal(31, t.day)
790
+ assert_equal(8, t.mon)
791
+ end
792
+
793
+ def test_parse_fraction
794
+ assert_equal(500000, Time.parse("2000-01-01T00:00:00.5+00:00").tv_usec)
795
+ end
796
+ end
797
+ end