ruby_on_ruby 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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,18 @@
1
+ # Env.rb -- imports environment variables as global variables, Perlish ;(
2
+ # Usage:
3
+ #
4
+ # require 'Env'
5
+ # p $USER
6
+ # $USER = "matz"
7
+ # p ENV["USER"]
8
+
9
+ require 'importenv'
10
+
11
+ if __FILE__ == $0
12
+ p $TERM
13
+ $TERM = nil
14
+ p $TERM
15
+ p ENV["TERM"]
16
+ $TERM = "foo"
17
+ p ENV["TERM"]
18
+ end
@@ -0,0 +1,96 @@
1
+ English.rb lets Perl'ish global variables have English names
2
+ Env.rb loads importenv.rb
3
+ README this file
4
+ base64.rb encodes/decodes base64 (obsolete)
5
+ benchmark.rb a benchmark utility
6
+ cgi-lib.rb simple CGI support library (old style)
7
+ cgi.rb CGI support library
8
+ cgi/session.rb CGI session class
9
+ complex.rb complex number support
10
+ csv.rb CSV parser/generator
11
+ date.rb date object
12
+ date/format.rb date parsing and formatting
13
+ date2.rb date object (obsolete; use date)
14
+ debug.rb ruby debugger
15
+ delegate.rb delegates messages to other object
16
+ drb.rb distributed Ruby
17
+ e2mmap.rb exception utilities
18
+ erb.rb tiny eRuby library
19
+ eregex.rb extended regular expression (just a proof of concept)
20
+ fileutils.rb file utilities
21
+ finalize.rb adds finalizer to the object
22
+ find.rb traverses directory tree
23
+ forwardable.rb explicit delegation library
24
+ ftools.rb file tools
25
+ getoptlong.rb GNU getoptlong compatible
26
+ getopts.rb parses command line options (use getoptlong)
27
+ gserver.rb general TCP server
28
+ importenv.rb imports environment variables as global variables
29
+ ipaddr.rb defines the IPAddr class
30
+ irb.rb interactive ruby
31
+ jcode.rb Japanese text handling (replace String methods)
32
+ logger.rb simple logging utility
33
+ mailread.rb reads mail headers
34
+ mathn.rb extended math operation
35
+ matrix.rb matrix calculation library
36
+ mkmf.rb Makefile maker
37
+ monitor.rb exclusive region monitor for thread
38
+ mutex_m.rb mutex mixin
39
+ net/ftp.rb ftp access
40
+ net/http.rb HTTP access
41
+ net/imap.rb IMAP4 access
42
+ net/pop.rb POP3 access
43
+ net/protocol.rb abstract class for net library (DO NOT USE)
44
+ net/smtp.rb SMTP access
45
+ net/telnet.rb telnet library
46
+ observer.rb observer desing pattern library (provides Observable)
47
+ open-uri.rb easy-to-use network interface using URI and Net
48
+ open3.rb opens subprocess connection stdin/stdout/stderr
49
+ optparse.rb command line option analysis
50
+ ostruct.rb python style object
51
+ parsearg.rb argument parser using getopts
52
+ parsedate.rb parses date string (obsolete)
53
+ pathname.rb Object-Oriented Pathname Class
54
+ ping.rb checks whether host is up, using TCP echo.
55
+ pp.rb pretty print objects
56
+ prettyprint.rb pretty printing algorithm
57
+ profile.rb runs ruby profiler
58
+ profiler.rb ruby profiler module
59
+ pstore.rb persistent object strage using marshal
60
+ racc/parser.rb racc (Ruby yACC) runtime
61
+ rational.rb rational number support
62
+ rdoc source-code documentation tool
63
+ readbytes.rb define IO#readbytes
64
+ resolv-replace.rb replace Socket DNS by resolve.rb
65
+ resolv.rb DNS resolver in Ruby
66
+ rexml an XML parser for Ruby, in Ruby
67
+ rubyunit.rb original Ruby Unit testing framework
68
+ scanf.rb scanf for Ruby
69
+ set.rb defines the Set class
70
+ shell.rb runs commands and does pipeline operations like shell
71
+ shellwords.rb split into words like shell
72
+ singleton.rb singleton design pattern library
73
+ soap SOAP 1.1 implementation
74
+ sync.rb 2 phase lock
75
+ tempfile.rb temporary file with automatic removal
76
+ test/unit Ruby Unit Testing Framework
77
+ thread.rb thread support
78
+ thwait.rb thread syncronization class
79
+ time.rb RFC2822, RFC2616, ISO8601 style time formatting/parsing
80
+ timeout.rb provides timeout
81
+ tmpdir.rb retrieve temporary directory path
82
+ tracer.rb execution tracer
83
+ tsort.rb topological sorting
84
+ un.rb Utilities to replace common UNIX commands in Makefiles etc
85
+ uri.rb URI support
86
+ uri/ftp.rb ftp scheme support
87
+ uri/http.rb http scheme support
88
+ uri/https.rb https scheme support
89
+ uri/ldap.rb ldap scheme support
90
+ uri/mailto.rb mailto scheme support
91
+ weakref.rb weak reference class
92
+ webrick.rb WEB server toolkit
93
+ wsdl WSDL 1.1 implementation
94
+ xmlrpc XML-RPC implementation
95
+ xsd XML Schema Datatypes implementation
96
+ yaml.rb YAML implementation
@@ -0,0 +1,103 @@
1
+ #!/usr/bin/env ruby
2
+ =begin
3
+ #
4
+ # Copyright (c) 2001,2003 Akinori MUSHA <knu@iDaemons.org>
5
+ #
6
+ # All rights reserved. You can redistribute and/or modify it under
7
+ # the same terms as Ruby.
8
+ #
9
+ # $Idaemons: /home/cvs/rb/abbrev.rb,v 1.2 2001/05/30 09:37:45 knu Exp $
10
+ # $RoughId: abbrev.rb,v 1.4 2003/10/14 19:45:42 knu Exp $
11
+ # $Id: abbrev.rb 11708 2007-02-12 23:01:19Z shyouhei $
12
+ =end
13
+
14
+ # Calculate the set of unique abbreviations for a given set of strings.
15
+ #
16
+ # require 'abbrev'
17
+ # require 'pp'
18
+ #
19
+ # pp Abbrev::abbrev(['ruby', 'rules']).sort
20
+ #
21
+ # <i>Generates:</i>
22
+ #
23
+ # [["rub", "ruby"],
24
+ # ["ruby", "ruby"],
25
+ # ["rul", "rules"],
26
+ # ["rule", "rules"],
27
+ # ["rules", "rules"]]
28
+ #
29
+ # Also adds an +abbrev+ method to class +Array+.
30
+
31
+ module Abbrev
32
+
33
+ # Given a set of strings, calculate the set of unambiguous
34
+ # abbreviations for those strings, and return a hash where the keys
35
+ # are all the possible abbreviations and the values are the full
36
+ # strings. Thus, given input of "car" and "cone", the keys pointing
37
+ # to "car" would be "ca" and "car", while those pointing to "cone"
38
+ # would be "co", "con", and "cone".
39
+ #
40
+ # The optional +pattern+ parameter is a pattern or a string. Only
41
+ # those input strings matching the pattern, or begging the string,
42
+ # are considered for inclusion in the output hash
43
+
44
+ def abbrev(words, pattern = nil)
45
+ table = {}
46
+ seen = Hash.new(0)
47
+
48
+ if pattern.is_a?(String)
49
+ pattern = /^#{Regexp.quote(pattern)}/ # regard as a prefix
50
+ end
51
+
52
+ words.each do |word|
53
+ next if (abbrev = word).empty?
54
+ while (len = abbrev.rindex(/[\w\W]\z/)) > 0
55
+ abbrev = word[0,len]
56
+
57
+ next if pattern && pattern !~ abbrev
58
+
59
+ case seen[abbrev] += 1
60
+ when 1
61
+ table[abbrev] = word
62
+ when 2
63
+ table.delete(abbrev)
64
+ else
65
+ break
66
+ end
67
+ end
68
+ end
69
+
70
+ words.each do |word|
71
+ next if pattern && pattern !~ word
72
+
73
+ table[word] = word
74
+ end
75
+
76
+ table
77
+ end
78
+
79
+ module_function :abbrev
80
+ end
81
+
82
+ class Array
83
+ # Calculates the set of unambiguous abbreviations for the strings in
84
+ # +self+. If passed a pattern or a string, only the strings matching
85
+ # the pattern or starting with the string are considered.
86
+ #
87
+ # %w{ car cone }.abbrev #=> { "ca" => "car", "car" => "car",
88
+ # "co" => "cone", "con" => cone",
89
+ # "cone" => "cone" }
90
+ def abbrev(pattern = nil)
91
+ Abbrev::abbrev(self, pattern)
92
+ end
93
+ end
94
+
95
+ if $0 == __FILE__
96
+ while line = gets
97
+ hash = line.split.abbrev
98
+
99
+ hash.sort.each do |k, v|
100
+ puts "#{k} => #{v}"
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,133 @@
1
+ #
2
+ # = base64.rb: methods for base64-encoding and -decoding stings
3
+ #
4
+ # Author:: Yukihiro Matsumoto
5
+ # Documentation:: Dave Thomas and Gavin Sinclair
6
+ #
7
+ # Until Ruby 1.8.1, these methods were defined at the top-level. Now
8
+ # they are in the Base64 module but included in the top-level, where
9
+ # their usage is deprecated.
10
+ #
11
+ # See Base64 for documentation.
12
+ #
13
+
14
+ require "kconv"
15
+
16
+
17
+ # The Base64 module provides for the encoding (#encode64) and decoding
18
+ # (#decode64) of binary data using a Base64 representation.
19
+ #
20
+ # The following particular features are also provided:
21
+ # - encode into lines of a given length (#b64encode)
22
+ # - decode the special format specified in RFC2047 for the
23
+ # representation of email headers (decode_b)
24
+ #
25
+ # == Example
26
+ #
27
+ # A simple encoding and decoding.
28
+ #
29
+ # require "base64"
30
+ #
31
+ # enc = Base64.encode64('Send reinforcements')
32
+ # # -> "U2VuZCByZWluZm9yY2VtZW50cw==\n"
33
+ # plain = Base64.decode64(enc)
34
+ # # -> "Send reinforcements"
35
+ #
36
+ # The purpose of using base64 to encode data is that it translates any
37
+ # binary data into purely printable characters. It is specified in
38
+ # RFC 2045 (http://www.faqs.org/rfcs/rfc2045.html).
39
+
40
+ module Base64
41
+ module_function
42
+
43
+ # Returns the Base64-decoded version of +str+.
44
+ #
45
+ # require 'base64'
46
+ # str = 'VGhpcyBpcyBsaW5lIG9uZQpUaGlzIG' +
47
+ # 'lzIGxpbmUgdHdvClRoaXMgaXMgbGlu' +
48
+ # 'ZSB0aHJlZQpBbmQgc28gb24uLi4K'
49
+ # puts Base64.decode64(str)
50
+ #
51
+ # <i>Generates:</i>
52
+ #
53
+ # This is line one
54
+ # This is line two
55
+ # This is line three
56
+ # And so on...
57
+
58
+ def decode64(str)
59
+ str.unpack("m")[0]
60
+ end
61
+
62
+
63
+ # Decodes text formatted using a subset of RFC2047 (the one used for
64
+ # mime-encoding mail headers).
65
+ #
66
+ # Only supports an encoding type of 'b' (base 64), and only supports
67
+ # the character sets ISO-2022-JP and SHIFT_JIS (so the only two
68
+ # encoded word sequences recognized are <tt>=?ISO-2022-JP?B?...=</tt> and
69
+ # <tt>=?SHIFT_JIS?B?...=</tt>). Recognition of these sequences is case
70
+ # insensitive.
71
+
72
+ def decode_b(str)
73
+ str.gsub!(/=\?ISO-2022-JP\?B\?([!->@-~]+)\?=/i) {
74
+ decode64($1)
75
+ }
76
+ str = Kconv::toeuc(str)
77
+ str.gsub!(/=\?SHIFT_JIS\?B\?([!->@-~]+)\?=/i) {
78
+ decode64($1)
79
+ }
80
+ str = Kconv::toeuc(str)
81
+ str.gsub!(/\n/, ' ')
82
+ str.gsub!(/\0/, '')
83
+ str
84
+ end
85
+
86
+ # Returns the Base64-encoded version of +str+.
87
+ #
88
+ # require 'base64'
89
+ # Base64.b64encode("Now is the time for all good coders\nto learn Ruby")
90
+ #
91
+ # <i>Generates:</i>
92
+ #
93
+ # Tm93IGlzIHRoZSB0aW1lIGZvciBhbGwgZ29vZCBjb2RlcnMKdG8gbGVhcm4g
94
+ # UnVieQ==
95
+
96
+ def encode64(bin)
97
+ [bin].pack("m")
98
+ end
99
+
100
+ # _Prints_ the Base64 encoded version of +bin+ (a +String+) in lines of
101
+ # +len+ (default 60) characters.
102
+ #
103
+ # require 'base64'
104
+ # data = "Now is the time for all good coders\nto learn Ruby"
105
+ # Base64.b64encode(data)
106
+ #
107
+ # <i>Generates:</i>
108
+ #
109
+ # Tm93IGlzIHRoZSB0aW1lIGZvciBhbGwgZ29vZCBjb2RlcnMKdG8gbGVhcm4g
110
+ # UnVieQ==
111
+
112
+ def b64encode(bin, len = 60)
113
+ encode64(bin).scan(/.{1,#{len}}/) do
114
+ print $&, "\n"
115
+ end
116
+ end
117
+
118
+
119
+ module Deprecated # :nodoc:
120
+ include Base64
121
+
122
+ for m in Base64.private_instance_methods(false)
123
+ module_eval %{
124
+ def #{m}(*args)
125
+ warn("\#{caller(1)[0]}: #{m} is deprecated; use Base64.#{m} instead")
126
+ super
127
+ end
128
+ }
129
+ end
130
+ end
131
+ end
132
+
133
+ include Base64::Deprecated
@@ -0,0 +1,572 @@
1
+ =begin
2
+ #
3
+ # benchmark.rb - a performance benchmarking library
4
+ #
5
+ # $Id: benchmark.rb 15425 2008-02-10 15:24:56Z naruse $
6
+ #
7
+ # Created by Gotoken (gotoken@notwork.org).
8
+ #
9
+ # Documentation by Gotoken (original RD), Lyle Johnson (RDoc conversion), and
10
+ # Gavin Sinclair (editing).
11
+ #
12
+ =end
13
+
14
+ # == Overview
15
+ #
16
+ # The Benchmark module provides methods for benchmarking Ruby code, giving
17
+ # detailed reports on the time taken for each task.
18
+ #
19
+
20
+ # The Benchmark module provides methods to measure and report the time
21
+ # used to execute Ruby code.
22
+ #
23
+ # * Measure the time to construct the string given by the expression
24
+ # <tt>"a"*1_000_000</tt>:
25
+ #
26
+ # require 'benchmark'
27
+ #
28
+ # puts Benchmark.measure { "a"*1_000_000 }
29
+ #
30
+ # On my machine (FreeBSD 3.2 on P5, 100MHz) this generates:
31
+ #
32
+ # 1.166667 0.050000 1.216667 ( 0.571355)
33
+ #
34
+ # This report shows the user CPU time, system CPU time, the sum of
35
+ # the user and system CPU times, and the elapsed real time. The unit
36
+ # of time is seconds.
37
+ #
38
+ # * Do some experiments sequentially using the #bm method:
39
+ #
40
+ # require 'benchmark'
41
+ #
42
+ # n = 50000
43
+ # Benchmark.bm do |x|
44
+ # x.report { for i in 1..n; a = "1"; end }
45
+ # x.report { n.times do ; a = "1"; end }
46
+ # x.report { 1.upto(n) do ; a = "1"; end }
47
+ # end
48
+ #
49
+ # The result:
50
+ #
51
+ # user system total real
52
+ # 1.033333 0.016667 1.016667 ( 0.492106)
53
+ # 1.483333 0.000000 1.483333 ( 0.694605)
54
+ # 1.516667 0.000000 1.516667 ( 0.711077)
55
+ #
56
+ # * Continuing the previous example, put a label in each report:
57
+ #
58
+ # require 'benchmark'
59
+ #
60
+ # n = 50000
61
+ # Benchmark.bm(7) do |x|
62
+ # x.report("for:") { for i in 1..n; a = "1"; end }
63
+ # x.report("times:") { n.times do ; a = "1"; end }
64
+ # x.report("upto:") { 1.upto(n) do ; a = "1"; end }
65
+ # end
66
+ #
67
+ # The result:
68
+ #
69
+ # user system total real
70
+ # for: 1.050000 0.000000 1.050000 ( 0.503462)
71
+ # times: 1.533333 0.016667 1.550000 ( 0.735473)
72
+ # upto: 1.500000 0.016667 1.516667 ( 0.711239)
73
+ #
74
+ #
75
+ # * The times for some benchmarks depend on the order in which items
76
+ # are run. These differences are due to the cost of memory
77
+ # allocation and garbage collection. To avoid these discrepancies,
78
+ # the #bmbm method is provided. For example, to compare ways to
79
+ # sort an array of floats:
80
+ #
81
+ # require 'benchmark'
82
+ #
83
+ # array = (1..1000000).map { rand }
84
+ #
85
+ # Benchmark.bmbm do |x|
86
+ # x.report("sort!") { array.dup.sort! }
87
+ # x.report("sort") { array.dup.sort }
88
+ # end
89
+ #
90
+ # The result:
91
+ #
92
+ # Rehearsal -----------------------------------------
93
+ # sort! 11.928000 0.010000 11.938000 ( 12.756000)
94
+ # sort 13.048000 0.020000 13.068000 ( 13.857000)
95
+ # ------------------------------- total: 25.006000sec
96
+ #
97
+ # user system total real
98
+ # sort! 12.959000 0.010000 12.969000 ( 13.793000)
99
+ # sort 12.007000 0.000000 12.007000 ( 12.791000)
100
+ #
101
+ #
102
+ # * Report statistics of sequential experiments with unique labels,
103
+ # using the #benchmark method:
104
+ #
105
+ # require 'benchmark'
106
+ #
107
+ # n = 50000
108
+ # Benchmark.benchmark(" "*7 + CAPTION, 7, FMTSTR, ">total:", ">avg:") do |x|
109
+ # tf = x.report("for:") { for i in 1..n; a = "1"; end }
110
+ # tt = x.report("times:") { n.times do ; a = "1"; end }
111
+ # tu = x.report("upto:") { 1.upto(n) do ; a = "1"; end }
112
+ # [tf+tt+tu, (tf+tt+tu)/3]
113
+ # end
114
+ #
115
+ # The result:
116
+ #
117
+ # user system total real
118
+ # for: 1.016667 0.016667 1.033333 ( 0.485749)
119
+ # times: 1.450000 0.016667 1.466667 ( 0.681367)
120
+ # upto: 1.533333 0.000000 1.533333 ( 0.722166)
121
+ # >total: 4.000000 0.033333 4.033333 ( 1.889282)
122
+ # >avg: 1.333333 0.011111 1.344444 ( 0.629761)
123
+
124
+ module Benchmark
125
+
126
+ BENCHMARK_VERSION = "2002-04-25" #:nodoc"
127
+
128
+ def Benchmark::times() # :nodoc:
129
+ Process::times()
130
+ end
131
+
132
+
133
+ # Invokes the block with a <tt>Benchmark::Report</tt> object, which
134
+ # may be used to collect and report on the results of individual
135
+ # benchmark tests. Reserves <i>label_width</i> leading spaces for
136
+ # labels on each line. Prints _caption_ at the top of the
137
+ # report, and uses _fmt_ to format each line.
138
+ # If the block returns an array of
139
+ # <tt>Benchmark::Tms</tt> objects, these will be used to format
140
+ # additional lines of output. If _label_ parameters are
141
+ # given, these are used to label these extra lines.
142
+ #
143
+ # _Note_: Other methods provide a simpler interface to this one, and are
144
+ # suitable for nearly all benchmarking requirements. See the examples in
145
+ # Benchmark, and the #bm and #bmbm methods.
146
+ #
147
+ # Example:
148
+ #
149
+ # require 'benchmark'
150
+ # include Benchmark # we need the CAPTION and FMTSTR constants
151
+ #
152
+ # n = 50000
153
+ # Benchmark.benchmark(" "*7 + CAPTION, 7, FMTSTR, ">total:", ">avg:") do |x|
154
+ # tf = x.report("for:") { for i in 1..n; a = "1"; end }
155
+ # tt = x.report("times:") { n.times do ; a = "1"; end }
156
+ # tu = x.report("upto:") { 1.upto(n) do ; a = "1"; end }
157
+ # [tf+tt+tu, (tf+tt+tu)/3]
158
+ # end
159
+ #
160
+ # <i>Generates:</i>
161
+ #
162
+ # user system total real
163
+ # for: 1.016667 0.016667 1.033333 ( 0.485749)
164
+ # times: 1.450000 0.016667 1.466667 ( 0.681367)
165
+ # upto: 1.533333 0.000000 1.533333 ( 0.722166)
166
+ # >total: 4.000000 0.033333 4.033333 ( 1.889282)
167
+ # >avg: 1.333333 0.011111 1.344444 ( 0.629761)
168
+ #
169
+
170
+ def benchmark(caption = "", label_width = nil, fmtstr = nil, *labels) # :yield: report
171
+ sync = STDOUT.sync
172
+ STDOUT.sync = true
173
+ label_width ||= 0
174
+ fmtstr ||= FMTSTR
175
+ raise ArgumentError, "no block" unless iterator?
176
+ print caption
177
+ results = yield(Report.new(label_width, fmtstr))
178
+ Array === results and results.grep(Tms).each {|t|
179
+ print((labels.shift || t.label || "").ljust(label_width),
180
+ t.format(fmtstr))
181
+ }
182
+ STDOUT.sync = sync
183
+ end
184
+
185
+
186
+ # A simple interface to the #benchmark method, #bm is generates sequential reports
187
+ # with labels. The parameters have the same meaning as for #benchmark.
188
+ #
189
+ # require 'benchmark'
190
+ #
191
+ # n = 50000
192
+ # Benchmark.bm(7) do |x|
193
+ # x.report("for:") { for i in 1..n; a = "1"; end }
194
+ # x.report("times:") { n.times do ; a = "1"; end }
195
+ # x.report("upto:") { 1.upto(n) do ; a = "1"; end }
196
+ # end
197
+ #
198
+ # <i>Generates:</i>
199
+ #
200
+ # user system total real
201
+ # for: 1.050000 0.000000 1.050000 ( 0.503462)
202
+ # times: 1.533333 0.016667 1.550000 ( 0.735473)
203
+ # upto: 1.500000 0.016667 1.516667 ( 0.711239)
204
+ #
205
+
206
+ def bm(label_width = 0, *labels, &blk) # :yield: report
207
+ benchmark(" "*label_width + CAPTION, label_width, FMTSTR, *labels, &blk)
208
+ end
209
+
210
+
211
+ # Sometimes benchmark results are skewed because code executed
212
+ # earlier encounters different garbage collection overheads than
213
+ # that run later. #bmbm attempts to minimize this effect by running
214
+ # the tests twice, the first time as a rehearsal in order to get the
215
+ # runtime environment stable, the second time for
216
+ # real. <tt>GC.start</tt> is executed before the start of each of
217
+ # the real timings; the cost of this is not included in the
218
+ # timings. In reality, though, there's only so much that #bmbm can
219
+ # do, and the results are not guaranteed to be isolated from garbage
220
+ # collection and other effects.
221
+ #
222
+ # Because #bmbm takes two passes through the tests, it can
223
+ # calculate the required label width.
224
+ #
225
+ # require 'benchmark'
226
+ #
227
+ # array = (1..1000000).map { rand }
228
+ #
229
+ # Benchmark.bmbm do |x|
230
+ # x.report("sort!") { array.dup.sort! }
231
+ # x.report("sort") { array.dup.sort }
232
+ # end
233
+ #
234
+ # <i>Generates:</i>
235
+ #
236
+ # Rehearsal -----------------------------------------
237
+ # sort! 11.928000 0.010000 11.938000 ( 12.756000)
238
+ # sort 13.048000 0.020000 13.068000 ( 13.857000)
239
+ # ------------------------------- total: 25.006000sec
240
+ #
241
+ # user system total real
242
+ # sort! 12.959000 0.010000 12.969000 ( 13.793000)
243
+ # sort 12.007000 0.000000 12.007000 ( 12.791000)
244
+ #
245
+ # #bmbm yields a Benchmark::Job object and returns an array of
246
+ # Benchmark::Tms objects.
247
+ #
248
+ def bmbm(width = 0, &blk) # :yield: job
249
+ job = Job.new(width)
250
+ yield(job)
251
+ width = job.width
252
+ sync = STDOUT.sync
253
+ STDOUT.sync = true
254
+
255
+ # rehearsal
256
+ print "Rehearsal "
257
+ puts '-'*(width+CAPTION.length - "Rehearsal ".length)
258
+ list = []
259
+ job.list.each{|label,item|
260
+ print(label.ljust(width))
261
+ res = Benchmark::measure(&item)
262
+ print res.format()
263
+ list.push res
264
+ }
265
+ sum = Tms.new; list.each{|i| sum += i}
266
+ ets = sum.format("total: %tsec")
267
+ printf("%s %s\n\n",
268
+ "-"*(width+CAPTION.length-ets.length-1), ets)
269
+
270
+ # take
271
+ print ' '*width, CAPTION
272
+ list = []
273
+ ary = []
274
+ job.list.each{|label,item|
275
+ GC::start
276
+ print label.ljust(width)
277
+ res = Benchmark::measure(&item)
278
+ print res.format()
279
+ ary.push res
280
+ list.push [label, res]
281
+ }
282
+
283
+ STDOUT.sync = sync
284
+ ary
285
+ end
286
+
287
+ #
288
+ # Returns the time used to execute the given block as a
289
+ # Benchmark::Tms object.
290
+ #
291
+ def measure(label = "") # :yield:
292
+ t0, r0 = Benchmark.times, Time.now
293
+ yield
294
+ t1, r1 = Benchmark.times, Time.now
295
+ Benchmark::Tms.new(t1.utime - t0.utime,
296
+ t1.stime - t0.stime,
297
+ t1.cutime - t0.cutime,
298
+ t1.cstime - t0.cstime,
299
+ r1.to_f - r0.to_f,
300
+ label)
301
+ end
302
+
303
+ #
304
+ # Returns the elapsed real time used to execute the given block.
305
+ #
306
+ def realtime(&blk) # :yield:
307
+ r0 = Time.now
308
+ yield
309
+ r1 = Time.now
310
+ r1.to_f - r0.to_f
311
+ end
312
+
313
+
314
+
315
+ #
316
+ # A Job is a sequence of labelled blocks to be processed by the
317
+ # Benchmark.bmbm method. It is of little direct interest to the user.
318
+ #
319
+ class Job # :nodoc:
320
+ #
321
+ # Returns an initialized Job instance.
322
+ # Usually, one doesn't call this method directly, as new
323
+ # Job objects are created by the #bmbm method.
324
+ # _width_ is a initial value for the label offset used in formatting;
325
+ # the #bmbm method passes its _width_ argument to this constructor.
326
+ #
327
+ def initialize(width)
328
+ @width = width
329
+ @list = []
330
+ end
331
+
332
+ #
333
+ # Registers the given label and block pair in the job list.
334
+ #
335
+ def item(label = "", &blk) # :yield:
336
+ raise ArgumentError, "no block" unless block_given?
337
+ label += ' '
338
+ w = label.length
339
+ @width = w if @width < w
340
+ @list.push [label, blk]
341
+ self
342
+ end
343
+
344
+ alias report item
345
+
346
+ # An array of 2-element arrays, consisting of label and block pairs.
347
+ attr_reader :list
348
+
349
+ # Length of the widest label in the #list, plus one.
350
+ attr_reader :width
351
+ end
352
+
353
+ module_function :benchmark, :measure, :realtime, :bm, :bmbm
354
+
355
+
356
+
357
+ #
358
+ # This class is used by the Benchmark.benchmark and Benchmark.bm methods.
359
+ # It is of little direct interest to the user.
360
+ #
361
+ class Report # :nodoc:
362
+ #
363
+ # Returns an initialized Report instance.
364
+ # Usually, one doesn't call this method directly, as new
365
+ # Report objects are created by the #benchmark and #bm methods.
366
+ # _width_ and _fmtstr_ are the label offset and
367
+ # format string used by Tms#format.
368
+ #
369
+ def initialize(width = 0, fmtstr = nil)
370
+ @width, @fmtstr = width, fmtstr
371
+ end
372
+
373
+ #
374
+ # Prints the _label_ and measured time for the block,
375
+ # formatted by _fmt_. See Tms#format for the
376
+ # formatting rules.
377
+ #
378
+ def item(label = "", *fmt, &blk) # :yield:
379
+ print label.ljust(@width)
380
+ res = Benchmark::measure(&blk)
381
+ print res.format(@fmtstr, *fmt)
382
+ res
383
+ end
384
+
385
+ alias report item
386
+ end
387
+
388
+
389
+
390
+ #
391
+ # A data object, representing the times associated with a benchmark
392
+ # measurement.
393
+ #
394
+ class Tms
395
+ CAPTION = " user system total real\n"
396
+ FMTSTR = "%10.6u %10.6y %10.6t %10.6r\n"
397
+
398
+ # User CPU time
399
+ attr_reader :utime
400
+
401
+ # System CPU time
402
+ attr_reader :stime
403
+
404
+ # User CPU time of children
405
+ attr_reader :cutime
406
+
407
+ # System CPU time of children
408
+ attr_reader :cstime
409
+
410
+ # Elapsed real time
411
+ attr_reader :real
412
+
413
+ # Total time, that is _utime_ + _stime_ + _cutime_ + _cstime_
414
+ attr_reader :total
415
+
416
+ # Label
417
+ attr_reader :label
418
+
419
+ #
420
+ # Returns an initialized Tms object which has
421
+ # _u_ as the user CPU time, _s_ as the system CPU time,
422
+ # _cu_ as the children's user CPU time, _cs_ as the children's
423
+ # system CPU time, _real_ as the elapsed real time and _l_
424
+ # as the label.
425
+ #
426
+ def initialize(u = 0.0, s = 0.0, cu = 0.0, cs = 0.0, real = 0.0, l = nil)
427
+ @utime, @stime, @cutime, @cstime, @real, @label = u, s, cu, cs, real, l
428
+ @total = @utime + @stime + @cutime + @cstime
429
+ end
430
+
431
+ #
432
+ # Returns a new Tms object whose times are the sum of the times for this
433
+ # Tms object, plus the time required to execute the code block (_blk_).
434
+ #
435
+ def add(&blk) # :yield:
436
+ self + Benchmark::measure(&blk)
437
+ end
438
+
439
+ #
440
+ # An in-place version of #add.
441
+ #
442
+ def add!
443
+ t = Benchmark::measure(&blk)
444
+ @utime = utime + t.utime
445
+ @stime = stime + t.stime
446
+ @cutime = cutime + t.cutime
447
+ @cstime = cstime + t.cstime
448
+ @real = real + t.real
449
+ self
450
+ end
451
+
452
+ #
453
+ # Returns a new Tms object obtained by memberwise summation
454
+ # of the individual times for this Tms object with those of the other
455
+ # Tms object.
456
+ # This method and #/() are useful for taking statistics.
457
+ #
458
+ def +(other); memberwise(:+, other) end
459
+
460
+ #
461
+ # Returns a new Tms object obtained by memberwise subtraction
462
+ # of the individual times for the other Tms object from those of this
463
+ # Tms object.
464
+ #
465
+ def -(other); memberwise(:-, other) end
466
+
467
+ #
468
+ # Returns a new Tms object obtained by memberwise multiplication
469
+ # of the individual times for this Tms object by _x_.
470
+ #
471
+ def *(x); memberwise(:*, x) end
472
+
473
+ #
474
+ # Returns a new Tms object obtained by memberwise division
475
+ # of the individual times for this Tms object by _x_.
476
+ # This method and #+() are useful for taking statistics.
477
+ #
478
+ def /(x); memberwise(:/, x) end
479
+
480
+ #
481
+ # Returns the contents of this Tms object as
482
+ # a formatted string, according to a format string
483
+ # like that passed to Kernel.format. In addition, #format
484
+ # accepts the following extensions:
485
+ #
486
+ # <tt>%u</tt>:: Replaced by the user CPU time, as reported by Tms#utime.
487
+ # <tt>%y</tt>:: Replaced by the system CPU time, as reported by #stime (Mnemonic: y of "s*y*stem")
488
+ # <tt>%U</tt>:: Replaced by the children's user CPU time, as reported by Tms#cutime
489
+ # <tt>%Y</tt>:: Replaced by the children's system CPU time, as reported by Tms#cstime
490
+ # <tt>%t</tt>:: Replaced by the total CPU time, as reported by Tms#total
491
+ # <tt>%r</tt>:: Replaced by the elapsed real time, as reported by Tms#real
492
+ # <tt>%n</tt>:: Replaced by the label string, as reported by Tms#label (Mnemonic: n of "*n*ame")
493
+ #
494
+ # If _fmtstr_ is not given, FMTSTR is used as default value, detailing the
495
+ # user, system and real elapsed time.
496
+ #
497
+ def format(arg0 = nil, *args)
498
+ fmtstr = (arg0 || FMTSTR).dup
499
+ fmtstr.gsub!(/(%[-+\.\d]*)n/){"#{$1}s" % label}
500
+ fmtstr.gsub!(/(%[-+\.\d]*)u/){"#{$1}f" % utime}
501
+ fmtstr.gsub!(/(%[-+\.\d]*)y/){"#{$1}f" % stime}
502
+ fmtstr.gsub!(/(%[-+\.\d]*)U/){"#{$1}f" % cutime}
503
+ fmtstr.gsub!(/(%[-+\.\d]*)Y/){"#{$1}f" % cstime}
504
+ fmtstr.gsub!(/(%[-+\.\d]*)t/){"#{$1}f" % total}
505
+ fmtstr.gsub!(/(%[-+\.\d]*)r/){"(#{$1}f)" % real}
506
+ arg0 ? Kernel::format(fmtstr, *args) : fmtstr
507
+ end
508
+
509
+ #
510
+ # Same as #format.
511
+ #
512
+ def to_s
513
+ format
514
+ end
515
+
516
+ #
517
+ # Returns a new 6-element array, consisting of the
518
+ # label, user CPU time, system CPU time, children's
519
+ # user CPU time, children's system CPU time and elapsed
520
+ # real time.
521
+ #
522
+ def to_a
523
+ [@label, @utime, @stime, @cutime, @cstime, @real]
524
+ end
525
+
526
+ protected
527
+ def memberwise(op, x)
528
+ case x
529
+ when Benchmark::Tms
530
+ Benchmark::Tms.new(utime.__send__(op, x.utime),
531
+ stime.__send__(op, x.stime),
532
+ cutime.__send__(op, x.cutime),
533
+ cstime.__send__(op, x.cstime),
534
+ real.__send__(op, x.real)
535
+ )
536
+ else
537
+ Benchmark::Tms.new(utime.__send__(op, x),
538
+ stime.__send__(op, x),
539
+ cutime.__send__(op, x),
540
+ cstime.__send__(op, x),
541
+ real.__send__(op, x)
542
+ )
543
+ end
544
+ end
545
+ end
546
+
547
+ # The default caption string (heading above the output times).
548
+ CAPTION = Benchmark::Tms::CAPTION
549
+
550
+ # The default format string used to display times. See also Benchmark::Tms#format.
551
+ FMTSTR = Benchmark::Tms::FMTSTR
552
+ end
553
+
554
+ if __FILE__ == $0
555
+ include Benchmark
556
+
557
+ n = ARGV[0].to_i.nonzero? || 50000
558
+ puts %Q([#{n} times iterations of `a = "1"'])
559
+ benchmark(" " + CAPTION, 7, FMTSTR) do |x|
560
+ x.report("for:") {for i in 1..n; a = "1"; end} # Benchmark::measure
561
+ x.report("times:") {n.times do ; a = "1"; end}
562
+ x.report("upto:") {1.upto(n) do ; a = "1"; end}
563
+ end
564
+
565
+ benchmark do
566
+ [
567
+ measure{for i in 1..n; a = "1"; end}, # Benchmark::measure
568
+ measure{n.times do ; a = "1"; end},
569
+ measure{1.upto(n) do ; a = "1"; end}
570
+ ]
571
+ end
572
+ end