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,442 @@
1
+ #
2
+ # $originalId: parser.rb,v 1.8 2006/07/06 11:42:07 aamine Exp $
3
+ #
4
+ # Copyright (c) 1999-2006 Minero Aoki
5
+ #
6
+ # This program is free software.
7
+ # You can distribute/modify this program under the same terms of ruby.
8
+ #
9
+ # As a special exception, when this code is copied by Racc
10
+ # into a Racc output file, you may use that output file
11
+ # without restriction.
12
+ #
13
+
14
+ unless defined?(NotImplementedError)
15
+ NotImplementedError = NotImplementError
16
+ end
17
+
18
+ module Racc
19
+ class ParseError < StandardError; end
20
+ end
21
+ unless defined?(::ParseError)
22
+ ParseError = Racc::ParseError
23
+ end
24
+
25
+ module Racc
26
+
27
+ unless defined?(Racc_No_Extentions)
28
+ Racc_No_Extentions = false
29
+ end
30
+
31
+ class Parser
32
+
33
+ Racc_Runtime_Version = '1.4.5'
34
+ Racc_Runtime_Revision = '$originalRevision: 1.8 $'.split[1]
35
+
36
+ Racc_Runtime_Core_Version_R = '1.4.5'
37
+ Racc_Runtime_Core_Revision_R = '$originalRevision: 1.8 $'.split[1]
38
+ begin
39
+ require 'racc/cparse'
40
+ # Racc_Runtime_Core_Version_C = (defined in extention)
41
+ Racc_Runtime_Core_Revision_C = Racc_Runtime_Core_Id_C.split[2]
42
+ unless new.respond_to?(:_racc_do_parse_c, true)
43
+ raise LoadError, 'old cparse.so'
44
+ end
45
+ if Racc_No_Extentions
46
+ raise LoadError, 'selecting ruby version of racc runtime core'
47
+ end
48
+
49
+ Racc_Main_Parsing_Routine = :_racc_do_parse_c
50
+ Racc_YY_Parse_Method = :_racc_yyparse_c
51
+ Racc_Runtime_Core_Version = Racc_Runtime_Core_Version_C
52
+ Racc_Runtime_Core_Revision = Racc_Runtime_Core_Revision_C
53
+ Racc_Runtime_Type = 'c'
54
+ rescue LoadError
55
+ Racc_Main_Parsing_Routine = :_racc_do_parse_rb
56
+ Racc_YY_Parse_Method = :_racc_yyparse_rb
57
+ Racc_Runtime_Core_Version = Racc_Runtime_Core_Version_R
58
+ Racc_Runtime_Core_Revision = Racc_Runtime_Core_Revision_R
59
+ Racc_Runtime_Type = 'ruby'
60
+ end
61
+
62
+ def Parser.racc_runtime_type
63
+ Racc_Runtime_Type
64
+ end
65
+
66
+ private
67
+
68
+ def _racc_setup
69
+ @yydebug = false unless self.class::Racc_debug_parser
70
+ @yydebug = false unless defined?(@yydebug)
71
+ if @yydebug
72
+ @racc_debug_out = $stderr unless defined?(@racc_debug_out)
73
+ @racc_debug_out ||= $stderr
74
+ end
75
+ arg = self.class::Racc_arg
76
+ arg[13] = true if arg.size < 14
77
+ arg
78
+ end
79
+
80
+ def _racc_init_sysvars
81
+ @racc_state = [0]
82
+ @racc_tstack = []
83
+ @racc_vstack = []
84
+
85
+ @racc_t = nil
86
+ @racc_val = nil
87
+
88
+ @racc_read_next = true
89
+
90
+ @racc_user_yyerror = false
91
+ @racc_error_status = 0
92
+ end
93
+
94
+ ###
95
+ ### do_parse
96
+ ###
97
+
98
+ def do_parse
99
+ __send__(Racc_Main_Parsing_Routine, _racc_setup(), false)
100
+ end
101
+
102
+ def next_token
103
+ raise NotImplementedError, "#{self.class}\#next_token is not defined"
104
+ end
105
+
106
+ def _racc_do_parse_rb(arg, in_debug)
107
+ action_table, action_check, action_default, action_pointer,
108
+ goto_table, goto_check, goto_default, goto_pointer,
109
+ nt_base, reduce_table, token_table, shift_n,
110
+ reduce_n, use_result, * = arg
111
+
112
+ _racc_init_sysvars
113
+ tok = act = i = nil
114
+ nerr = 0
115
+
116
+ catch(:racc_end_parse) {
117
+ while true
118
+ if i = action_pointer[@racc_state[-1]]
119
+ if @racc_read_next
120
+ if @racc_t != 0 # not EOF
121
+ tok, @racc_val = next_token()
122
+ unless tok # EOF
123
+ @racc_t = 0
124
+ else
125
+ @racc_t = (token_table[tok] or 1) # error token
126
+ end
127
+ racc_read_token(@racc_t, tok, @racc_val) if @yydebug
128
+ @racc_read_next = false
129
+ end
130
+ end
131
+ i += @racc_t
132
+ unless i >= 0 and
133
+ act = action_table[i] and
134
+ action_check[i] == @racc_state[-1]
135
+ act = action_default[@racc_state[-1]]
136
+ end
137
+ else
138
+ act = action_default[@racc_state[-1]]
139
+ end
140
+ while act = _racc_evalact(act, arg)
141
+ ;
142
+ end
143
+ end
144
+ }
145
+ end
146
+
147
+ ###
148
+ ### yyparse
149
+ ###
150
+
151
+ def yyparse(recv, mid)
152
+ __send__(Racc_YY_Parse_Method, recv, mid, _racc_setup(), true)
153
+ end
154
+
155
+ def _racc_yyparse_rb(recv, mid, arg, c_debug)
156
+ action_table, action_check, action_default, action_pointer,
157
+ goto_table, goto_check, goto_default, goto_pointer,
158
+ nt_base, reduce_table, token_table, shift_n,
159
+ reduce_n, use_result, * = arg
160
+
161
+ _racc_init_sysvars
162
+ tok = nil
163
+ act = nil
164
+ i = nil
165
+ nerr = 0
166
+
167
+ catch(:racc_end_parse) {
168
+ until i = action_pointer[@racc_state[-1]]
169
+ while act = _racc_evalact(action_default[@racc_state[-1]], arg)
170
+ ;
171
+ end
172
+ end
173
+ recv.__send__(mid) do |tok, val|
174
+ unless tok
175
+ @racc_t = 0
176
+ else
177
+ @racc_t = (token_table[tok] or 1) # error token
178
+ end
179
+ @racc_val = val
180
+ @racc_read_next = false
181
+
182
+ i += @racc_t
183
+ unless i >= 0 and
184
+ act = action_table[i] and
185
+ action_check[i] == @racc_state[-1]
186
+ act = action_default[@racc_state[-1]]
187
+ end
188
+ while act = _racc_evalact(act, arg)
189
+ ;
190
+ end
191
+
192
+ while not (i = action_pointer[@racc_state[-1]]) or
193
+ not @racc_read_next or
194
+ @racc_t == 0 # $
195
+ unless i and i += @racc_t and
196
+ i >= 0 and
197
+ act = action_table[i] and
198
+ action_check[i] == @racc_state[-1]
199
+ act = action_default[@racc_state[-1]]
200
+ end
201
+ while act = _racc_evalact(act, arg)
202
+ ;
203
+ end
204
+ end
205
+ end
206
+ }
207
+ end
208
+
209
+ ###
210
+ ### common
211
+ ###
212
+
213
+ def _racc_evalact(act, arg)
214
+ action_table, action_check, action_default, action_pointer,
215
+ goto_table, goto_check, goto_default, goto_pointer,
216
+ nt_base, reduce_table, token_table, shift_n,
217
+ reduce_n, use_result, * = arg
218
+ nerr = 0 # tmp
219
+
220
+ if act > 0 and act < shift_n
221
+ #
222
+ # shift
223
+ #
224
+ if @racc_error_status > 0
225
+ @racc_error_status -= 1 unless @racc_t == 1 # error token
226
+ end
227
+ @racc_vstack.push @racc_val
228
+ @racc_state.push act
229
+ @racc_read_next = true
230
+ if @yydebug
231
+ @racc_tstack.push @racc_t
232
+ racc_shift @racc_t, @racc_tstack, @racc_vstack
233
+ end
234
+
235
+ elsif act < 0 and act > -reduce_n
236
+ #
237
+ # reduce
238
+ #
239
+ code = catch(:racc_jump) {
240
+ @racc_state.push _racc_do_reduce(arg, act)
241
+ false
242
+ }
243
+ if code
244
+ case code
245
+ when 1 # yyerror
246
+ @racc_user_yyerror = true # user_yyerror
247
+ return -reduce_n
248
+ when 2 # yyaccept
249
+ return shift_n
250
+ else
251
+ raise '[Racc Bug] unknown jump code'
252
+ end
253
+ end
254
+
255
+ elsif act == shift_n
256
+ #
257
+ # accept
258
+ #
259
+ racc_accept if @yydebug
260
+ throw :racc_end_parse, @racc_vstack[0]
261
+
262
+ elsif act == -reduce_n
263
+ #
264
+ # error
265
+ #
266
+ case @racc_error_status
267
+ when 0
268
+ unless arg[21] # user_yyerror
269
+ nerr += 1
270
+ on_error @racc_t, @racc_val, @racc_vstack
271
+ end
272
+ when 3
273
+ if @racc_t == 0 # is $
274
+ throw :racc_end_parse, nil
275
+ end
276
+ @racc_read_next = true
277
+ end
278
+ @racc_user_yyerror = false
279
+ @racc_error_status = 3
280
+ while true
281
+ if i = action_pointer[@racc_state[-1]]
282
+ i += 1 # error token
283
+ if i >= 0 and
284
+ (act = action_table[i]) and
285
+ action_check[i] == @racc_state[-1]
286
+ break
287
+ end
288
+ end
289
+ throw :racc_end_parse, nil if @racc_state.size <= 1
290
+ @racc_state.pop
291
+ @racc_vstack.pop
292
+ if @yydebug
293
+ @racc_tstack.pop
294
+ racc_e_pop @racc_state, @racc_tstack, @racc_vstack
295
+ end
296
+ end
297
+ return act
298
+
299
+ else
300
+ raise "[Racc Bug] unknown action #{act.inspect}"
301
+ end
302
+
303
+ racc_next_state(@racc_state[-1], @racc_state) if @yydebug
304
+
305
+ nil
306
+ end
307
+
308
+ def _racc_do_reduce(arg, act)
309
+ action_table, action_check, action_default, action_pointer,
310
+ goto_table, goto_check, goto_default, goto_pointer,
311
+ nt_base, reduce_table, token_table, shift_n,
312
+ reduce_n, use_result, * = arg
313
+ state = @racc_state
314
+ vstack = @racc_vstack
315
+ tstack = @racc_tstack
316
+
317
+ i = act * -3
318
+ len = reduce_table[i]
319
+ reduce_to = reduce_table[i+1]
320
+ method_id = reduce_table[i+2]
321
+ void_array = []
322
+
323
+ tmp_t = tstack[-len, len] if @yydebug
324
+ tmp_v = vstack[-len, len]
325
+ tstack[-len, len] = void_array if @yydebug
326
+ vstack[-len, len] = void_array
327
+ state[-len, len] = void_array
328
+
329
+ # tstack must be updated AFTER method call
330
+ if use_result
331
+ vstack.push __send__(method_id, tmp_v, vstack, tmp_v[0])
332
+ else
333
+ vstack.push __send__(method_id, tmp_v, vstack)
334
+ end
335
+ tstack.push reduce_to
336
+
337
+ racc_reduce(tmp_t, reduce_to, tstack, vstack) if @yydebug
338
+
339
+ k1 = reduce_to - nt_base
340
+ if i = goto_pointer[k1]
341
+ i += state[-1]
342
+ if i >= 0 and (curstate = goto_table[i]) and goto_check[i] == k1
343
+ return curstate
344
+ end
345
+ end
346
+ goto_default[k1]
347
+ end
348
+
349
+ def on_error(t, val, vstack)
350
+ raise ParseError, sprintf("\nparse error on value %s (%s)",
351
+ val.inspect, token_to_str(t) || '?')
352
+ end
353
+
354
+ def yyerror
355
+ throw :racc_jump, 1
356
+ end
357
+
358
+ def yyaccept
359
+ throw :racc_jump, 2
360
+ end
361
+
362
+ def yyerrok
363
+ @racc_error_status = 0
364
+ end
365
+
366
+ #
367
+ # for debugging output
368
+ #
369
+
370
+ def racc_read_token(t, tok, val)
371
+ @racc_debug_out.print 'read '
372
+ @racc_debug_out.print tok.inspect, '(', racc_token2str(t), ') '
373
+ @racc_debug_out.puts val.inspect
374
+ @racc_debug_out.puts
375
+ end
376
+
377
+ def racc_shift(tok, tstack, vstack)
378
+ @racc_debug_out.puts "shift #{racc_token2str tok}"
379
+ racc_print_stacks tstack, vstack
380
+ @racc_debug_out.puts
381
+ end
382
+
383
+ def racc_reduce(toks, sim, tstack, vstack)
384
+ out = @racc_debug_out
385
+ out.print 'reduce '
386
+ if toks.empty?
387
+ out.print ' <none>'
388
+ else
389
+ toks.each {|t| out.print ' ', racc_token2str(t) }
390
+ end
391
+ out.puts " --> #{racc_token2str(sim)}"
392
+
393
+ racc_print_stacks tstack, vstack
394
+ @racc_debug_out.puts
395
+ end
396
+
397
+ def racc_accept
398
+ @racc_debug_out.puts 'accept'
399
+ @racc_debug_out.puts
400
+ end
401
+
402
+ def racc_e_pop(state, tstack, vstack)
403
+ @racc_debug_out.puts 'error recovering mode: pop token'
404
+ racc_print_states state
405
+ racc_print_stacks tstack, vstack
406
+ @racc_debug_out.puts
407
+ end
408
+
409
+ def racc_next_state(curstate, state)
410
+ @racc_debug_out.puts "goto #{curstate}"
411
+ racc_print_states state
412
+ @racc_debug_out.puts
413
+ end
414
+
415
+ def racc_print_stacks(t, v)
416
+ out = @racc_debug_out
417
+ out.print ' ['
418
+ t.each_index do |i|
419
+ out.print ' (', racc_token2str(t[i]), ' ', v[i].inspect, ')'
420
+ end
421
+ out.puts ' ]'
422
+ end
423
+
424
+ def racc_print_states(s)
425
+ out = @racc_debug_out
426
+ out.print ' ['
427
+ s.each {|st| out.print ' ', st }
428
+ out.puts ' ]'
429
+ end
430
+
431
+ def racc_token2str(tok)
432
+ self.class::Racc_token_to_s_table[tok] or
433
+ raise "[Racc Bug] can't convert token #{tok} to string"
434
+ end
435
+
436
+ def token_to_str(t)
437
+ self.class::Racc_token_to_s_table[t]
438
+ end
439
+
440
+ end
441
+
442
+ end
@@ -0,0 +1,564 @@
1
+ #
2
+ # rational.rb -
3
+ # $Release Version: 0.5 $
4
+ # $Revision: 1.7 $
5
+ # $Date: 1999/08/24 12:49:28 $
6
+ # by Keiju ISHITSUKA(SHL Japan Inc.)
7
+ #
8
+ # Documentation by Kevin Jackson and Gavin Sinclair.
9
+ #
10
+ # When you <tt>require 'rational'</tt>, all interactions between numbers
11
+ # potentially return a rational result. For example:
12
+ #
13
+ # 1.quo(2) # -> 0.5
14
+ # require 'rational'
15
+ # 1.quo(2) # -> Rational(1,2)
16
+ #
17
+ # See Rational for full documentation.
18
+ #
19
+
20
+
21
+ #
22
+ # Creates a Rational number (i.e. a fraction). +a+ and +b+ should be Integers:
23
+ #
24
+ # Rational(1,3) # -> 1/3
25
+ #
26
+ # Note: trying to construct a Rational with floating point or real values
27
+ # produces errors:
28
+ #
29
+ # Rational(1.1, 2.3) # -> NoMethodError
30
+ #
31
+ def Rational(a, b = 1)
32
+ if a.kind_of?(Rational) && b == 1
33
+ a
34
+ else
35
+ Rational.reduce(a, b)
36
+ end
37
+ end
38
+
39
+ #
40
+ # Rational implements a rational class for numbers.
41
+ #
42
+ # <em>A rational number is a number that can be expressed as a fraction p/q
43
+ # where p and q are integers and q != 0. A rational number p/q is said to have
44
+ # numerator p and denominator q. Numbers that are not rational are called
45
+ # irrational numbers.</em> (http://mathworld.wolfram.com/RationalNumber.html)
46
+ #
47
+ # To create a Rational Number:
48
+ # Rational(a,b) # -> a/b
49
+ # Rational.new!(a,b) # -> a/b
50
+ #
51
+ # Examples:
52
+ # Rational(5,6) # -> 5/6
53
+ # Rational(5) # -> 5/1
54
+ #
55
+ # Rational numbers are reduced to their lowest terms:
56
+ # Rational(6,10) # -> 3/5
57
+ #
58
+ # But not if you use the unusual method "new!":
59
+ # Rational.new!(6,10) # -> 6/10
60
+ #
61
+ # Division by zero is obviously not allowed:
62
+ # Rational(3,0) # -> ZeroDivisionError
63
+ #
64
+ class Rational < Numeric
65
+ @RCS_ID='-$Id: rational.rb,v 1.7 1999/08/24 12:49:28 keiju Exp keiju $-'
66
+
67
+ #
68
+ # Reduces the given numerator and denominator to their lowest terms. Use
69
+ # Rational() instead.
70
+ #
71
+ def Rational.reduce(num, den = 1)
72
+ raise ZeroDivisionError, "denominator is zero" if den == 0
73
+
74
+ if den < 0
75
+ num = -num
76
+ den = -den
77
+ end
78
+ gcd = num.gcd(den)
79
+ num = num.div(gcd)
80
+ den = den.div(gcd)
81
+ if den == 1 && defined?(Unify)
82
+ num
83
+ else
84
+ new!(num, den)
85
+ end
86
+ end
87
+
88
+ #
89
+ # Implements the constructor. This method does not reduce to lowest terms or
90
+ # check for division by zero. Therefore #Rational() should be preferred in
91
+ # normal use.
92
+ #
93
+ def Rational.new!(num, den = 1)
94
+ new(num, den)
95
+ end
96
+
97
+ private_class_method :new
98
+
99
+ #
100
+ # This method is actually private.
101
+ #
102
+ def initialize(num, den)
103
+ if den < 0
104
+ num = -num
105
+ den = -den
106
+ end
107
+ if num.kind_of?(Integer) and den.kind_of?(Integer)
108
+ @numerator = num
109
+ @denominator = den
110
+ else
111
+ @numerator = num.to_i
112
+ @denominator = den.to_i
113
+ end
114
+ end
115
+
116
+ #
117
+ # Returns the addition of this value and +a+.
118
+ #
119
+ # Examples:
120
+ # r = Rational(3,4) # -> Rational(3,4)
121
+ # r + 1 # -> Rational(7,4)
122
+ # r + 0.5 # -> 1.25
123
+ #
124
+ def + (a)
125
+ if a.kind_of?(Rational)
126
+ num = @numerator * a.denominator
127
+ num_a = a.numerator * @denominator
128
+ Rational(num + num_a, @denominator * a.denominator)
129
+ elsif a.kind_of?(Integer)
130
+ self + Rational.new!(a, 1)
131
+ elsif a.kind_of?(Float)
132
+ Float(self) + a
133
+ else
134
+ x, y = a.coerce(self)
135
+ x + y
136
+ end
137
+ end
138
+
139
+ #
140
+ # Returns the difference of this value and +a+.
141
+ # subtracted.
142
+ #
143
+ # Examples:
144
+ # r = Rational(3,4) # -> Rational(3,4)
145
+ # r - 1 # -> Rational(-1,4)
146
+ # r - 0.5 # -> 0.25
147
+ #
148
+ def - (a)
149
+ if a.kind_of?(Rational)
150
+ num = @numerator * a.denominator
151
+ num_a = a.numerator * @denominator
152
+ Rational(num - num_a, @denominator*a.denominator)
153
+ elsif a.kind_of?(Integer)
154
+ self - Rational.new!(a, 1)
155
+ elsif a.kind_of?(Float)
156
+ Float(self) - a
157
+ else
158
+ x, y = a.coerce(self)
159
+ x - y
160
+ end
161
+ end
162
+
163
+ #
164
+ # Returns the product of this value and +a+.
165
+ #
166
+ # Examples:
167
+ # r = Rational(3,4) # -> Rational(3,4)
168
+ # r * 2 # -> Rational(3,2)
169
+ # r * 4 # -> Rational(3,1)
170
+ # r * 0.5 # -> 0.375
171
+ # r * Rational(1,2) # -> Rational(3,8)
172
+ #
173
+ def * (a)
174
+ if a.kind_of?(Rational)
175
+ num = @numerator * a.numerator
176
+ den = @denominator * a.denominator
177
+ Rational(num, den)
178
+ elsif a.kind_of?(Integer)
179
+ self * Rational.new!(a, 1)
180
+ elsif a.kind_of?(Float)
181
+ Float(self) * a
182
+ else
183
+ x, y = a.coerce(self)
184
+ x * y
185
+ end
186
+ end
187
+
188
+ #
189
+ # Returns the quotient of this value and +a+.
190
+ # r = Rational(3,4) # -> Rational(3,4)
191
+ # r / 2 # -> Rational(3,8)
192
+ # r / 2.0 # -> 0.375
193
+ # r / Rational(1,2) # -> Rational(3,2)
194
+ #
195
+ def / (a)
196
+ if a.kind_of?(Rational)
197
+ num = @numerator * a.denominator
198
+ den = @denominator * a.numerator
199
+ Rational(num, den)
200
+ elsif a.kind_of?(Integer)
201
+ raise ZeroDivisionError, "division by zero" if a == 0
202
+ self / Rational.new!(a, 1)
203
+ elsif a.kind_of?(Float)
204
+ Float(self) / a
205
+ else
206
+ x, y = a.coerce(self)
207
+ x / y
208
+ end
209
+ end
210
+
211
+ #
212
+ # Returns this value raised to the given power.
213
+ #
214
+ # Examples:
215
+ # r = Rational(3,4) # -> Rational(3,4)
216
+ # r ** 2 # -> Rational(9,16)
217
+ # r ** 2.0 # -> 0.5625
218
+ # r ** Rational(1,2) # -> 0.866025403784439
219
+ #
220
+ def ** (other)
221
+ if other.kind_of?(Rational)
222
+ Float(self) ** other
223
+ elsif other.kind_of?(Integer)
224
+ if other > 0
225
+ num = @numerator ** other
226
+ den = @denominator ** other
227
+ elsif other < 0
228
+ num = @denominator ** -other
229
+ den = @numerator ** -other
230
+ elsif other == 0
231
+ num = 1
232
+ den = 1
233
+ end
234
+ Rational.new!(num, den)
235
+ elsif other.kind_of?(Float)
236
+ Float(self) ** other
237
+ else
238
+ x, y = other.coerce(self)
239
+ x ** y
240
+ end
241
+ end
242
+
243
+ def div(other)
244
+ (self / other).floor
245
+ end
246
+
247
+ #
248
+ # Returns the remainder when this value is divided by +other+.
249
+ #
250
+ # Examples:
251
+ # r = Rational(7,4) # -> Rational(7,4)
252
+ # r % Rational(1,2) # -> Rational(1,4)
253
+ # r % 1 # -> Rational(3,4)
254
+ # r % Rational(1,7) # -> Rational(1,28)
255
+ # r % 0.26 # -> 0.19
256
+ #
257
+ def % (other)
258
+ value = (self / other).floor
259
+ return self - other * value
260
+ end
261
+
262
+ #
263
+ # Returns the quotient _and_ remainder.
264
+ #
265
+ # Examples:
266
+ # r = Rational(7,4) # -> Rational(7,4)
267
+ # r.divmod Rational(1,2) # -> [3, Rational(1,4)]
268
+ #
269
+ def divmod(other)
270
+ value = (self / other).floor
271
+ return value, self - other * value
272
+ end
273
+
274
+ #
275
+ # Returns the absolute value.
276
+ #
277
+ def abs
278
+ if @numerator > 0
279
+ self
280
+ else
281
+ Rational.new!(-@numerator, @denominator)
282
+ end
283
+ end
284
+
285
+ #
286
+ # Returns +true+ iff this value is numerically equal to +other+.
287
+ #
288
+ # But beware:
289
+ # Rational(1,2) == Rational(4,8) # -> true
290
+ # Rational(1,2) == Rational.new!(4,8) # -> false
291
+ #
292
+ # Don't use Rational.new!
293
+ #
294
+ def == (other)
295
+ if other.kind_of?(Rational)
296
+ @numerator == other.numerator and @denominator == other.denominator
297
+ elsif other.kind_of?(Integer)
298
+ self == Rational.new!(other, 1)
299
+ elsif other.kind_of?(Float)
300
+ Float(self) == other
301
+ else
302
+ other == self
303
+ end
304
+ end
305
+
306
+ #
307
+ # Standard comparison operator.
308
+ #
309
+ def <=> (other)
310
+ if other.kind_of?(Rational)
311
+ num = @numerator * other.denominator
312
+ num_a = other.numerator * @denominator
313
+ v = num - num_a
314
+ if v > 0
315
+ return 1
316
+ elsif v < 0
317
+ return -1
318
+ else
319
+ return 0
320
+ end
321
+ elsif other.kind_of?(Integer)
322
+ return self <=> Rational.new!(other, 1)
323
+ elsif other.kind_of?(Float)
324
+ return Float(self) <=> other
325
+ elsif defined? other.coerce
326
+ x, y = other.coerce(self)
327
+ return x <=> y
328
+ else
329
+ return nil
330
+ end
331
+ end
332
+
333
+ def coerce(other)
334
+ if other.kind_of?(Float)
335
+ return other, self.to_f
336
+ elsif other.kind_of?(Integer)
337
+ return Rational.new!(other, 1), self
338
+ else
339
+ super
340
+ end
341
+ end
342
+
343
+ #
344
+ # Converts the rational to an Integer. Not the _nearest_ integer, the
345
+ # truncated integer. Study the following example carefully:
346
+ # Rational(+7,4).to_i # -> 1
347
+ # Rational(-7,4).to_i # -> -1
348
+ # (-1.75).to_i # -> -1
349
+ #
350
+ # In other words:
351
+ # Rational(-7,4) == -1.75 # -> true
352
+ # Rational(-7,4).to_i == (-1.75).to_i # -> true
353
+ #
354
+
355
+
356
+ def floor()
357
+ @numerator.div(@denominator)
358
+ end
359
+
360
+ def ceil()
361
+ -((-@numerator).div(@denominator))
362
+ end
363
+
364
+ def truncate()
365
+ if @numerator < 0
366
+ return -((-@numerator).div(@denominator))
367
+ end
368
+ @numerator.div(@denominator)
369
+ end
370
+
371
+ alias_method :to_i, :truncate
372
+
373
+ def round()
374
+ if @numerator < 0
375
+ num = -@numerator
376
+ num = num * 2 + @denominator
377
+ den = @denominator * 2
378
+ -(num.div(den))
379
+ else
380
+ num = @numerator * 2 + @denominator
381
+ den = @denominator * 2
382
+ num.div(den)
383
+ end
384
+ end
385
+
386
+ #
387
+ # Converts the rational to a Float.
388
+ #
389
+ def to_f
390
+ @numerator.to_f/@denominator.to_f
391
+ end
392
+
393
+ #
394
+ # Returns a string representation of the rational number.
395
+ #
396
+ # Example:
397
+ # Rational(3,4).to_s # "3/4"
398
+ # Rational(8).to_s # "8"
399
+ #
400
+ def to_s
401
+ if @denominator == 1
402
+ @numerator.to_s
403
+ else
404
+ @numerator.to_s+"/"+@denominator.to_s
405
+ end
406
+ end
407
+
408
+ #
409
+ # Returns +self+.
410
+ #
411
+ def to_r
412
+ self
413
+ end
414
+
415
+ #
416
+ # Returns a reconstructable string representation:
417
+ #
418
+ # Rational(5,8).inspect # -> "Rational(5, 8)"
419
+ #
420
+ def inspect
421
+ sprintf("Rational(%s, %s)", @numerator.inspect, @denominator.inspect)
422
+ end
423
+
424
+ #
425
+ # Returns a hash code for the object.
426
+ #
427
+ def hash
428
+ @numerator.hash ^ @denominator.hash
429
+ end
430
+
431
+ attr :numerator
432
+ attr :denominator
433
+
434
+ private :initialize
435
+ end
436
+
437
+ class Integer
438
+ #
439
+ # In an integer, the value _is_ the numerator of its rational equivalent.
440
+ # Therefore, this method returns +self+.
441
+ #
442
+ def numerator
443
+ self
444
+ end
445
+
446
+ #
447
+ # In an integer, the denominator is 1. Therefore, this method returns 1.
448
+ #
449
+ def denominator
450
+ 1
451
+ end
452
+
453
+ #
454
+ # Returns a Rational representation of this integer.
455
+ #
456
+ def to_r
457
+ Rational(self, 1)
458
+ end
459
+
460
+ #
461
+ # Returns the <em>greatest common denominator</em> of the two numbers (+self+
462
+ # and +n+).
463
+ #
464
+ # Examples:
465
+ # 72.gcd 168 # -> 24
466
+ # 19.gcd 36 # -> 1
467
+ #
468
+ # The result is positive, no matter the sign of the arguments.
469
+ #
470
+ def gcd(other)
471
+ min = self.abs
472
+ max = other.abs
473
+ while min > 0
474
+ tmp = min
475
+ min = max % min
476
+ max = tmp
477
+ end
478
+ max
479
+ end
480
+
481
+ #
482
+ # Returns the <em>lowest common multiple</em> (LCM) of the two arguments
483
+ # (+self+ and +other+).
484
+ #
485
+ # Examples:
486
+ # 6.lcm 7 # -> 42
487
+ # 6.lcm 9 # -> 18
488
+ #
489
+ def lcm(other)
490
+ if self.zero? or other.zero?
491
+ 0
492
+ else
493
+ (self.div(self.gcd(other)) * other).abs
494
+ end
495
+ end
496
+
497
+ #
498
+ # Returns the GCD _and_ the LCM (see #gcd and #lcm) of the two arguments
499
+ # (+self+ and +other+). This is more efficient than calculating them
500
+ # separately.
501
+ #
502
+ # Example:
503
+ # 6.gcdlcm 9 # -> [3, 18]
504
+ #
505
+ def gcdlcm(other)
506
+ gcd = self.gcd(other)
507
+ if self.zero? or other.zero?
508
+ [gcd, 0]
509
+ else
510
+ [gcd, (self.div(gcd) * other).abs]
511
+ end
512
+ end
513
+ end
514
+
515
+ class Fixnum
516
+ remove_method :quo
517
+
518
+ # If Rational is defined, returns a Rational number instead of a Float.
519
+ def quo(other)
520
+ Rational.new!(self, 1) / other
521
+ end
522
+ alias rdiv quo
523
+
524
+ # Returns a Rational number if the result is in fact rational (i.e. +other+ < 0).
525
+ def rpower (other)
526
+ if other >= 0
527
+ self.power!(other)
528
+ else
529
+ Rational.new!(self, 1)**other
530
+ end
531
+ end
532
+
533
+ end
534
+
535
+ class Bignum
536
+ remove_method :quo
537
+
538
+ # If Rational is defined, returns a Rational number instead of a Float.
539
+ def quo(other)
540
+ Rational.new!(self, 1) / other
541
+ end
542
+ alias rdiv quo
543
+
544
+ # Returns a Rational number if the result is in fact rational (i.e. +other+ < 0).
545
+ def rpower (other)
546
+ if other >= 0
547
+ self.power!(other)
548
+ else
549
+ Rational.new!(self, 1)**other
550
+ end
551
+ end
552
+
553
+ end
554
+
555
+ unless defined? 1.power!
556
+ class Fixnum
557
+ alias power! **
558
+ alias ** rpower
559
+ end
560
+ class Bignum
561
+ alias power! **
562
+ alias ** rpower
563
+ end
564
+ end