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,198 @@
1
+ #
2
+ # = uri/ftp.rb
3
+ #
4
+ # Author:: Akira Yamada <akira@ruby-lang.org>
5
+ # License:: You can redistribute it and/or modify it under the same term as Ruby.
6
+ # Revision:: $Id: ftp.rb 16085 2008-04-19 11:56:22Z knu $
7
+ #
8
+
9
+ require 'uri/generic'
10
+
11
+ module URI
12
+
13
+ #
14
+ # FTP URI syntax is defined by RFC1738 section 3.2.
15
+ #
16
+ class FTP < Generic
17
+ DEFAULT_PORT = 21
18
+
19
+ COMPONENT = [
20
+ :scheme,
21
+ :userinfo, :host, :port,
22
+ :path, :typecode
23
+ ].freeze
24
+ #
25
+ # Typecode is "a", "i" or "d".
26
+ #
27
+ # * "a" indicates a text file (the FTP command was ASCII)
28
+ # * "i" indicates a binary file (FTP command IMAGE)
29
+ # * "d" indicates the contents of a directory should be displayed
30
+ #
31
+ TYPECODE = ['a', 'i', 'd'].freeze
32
+ TYPECODE_PREFIX = ';type='.freeze
33
+
34
+ def self.new2(user, password, host, port, path,
35
+ typecode = nil, arg_check = true)
36
+ typecode = nil if typecode.size == 0
37
+ if typecode && !TYPECODE.include?(typecode)
38
+ raise ArgumentError,
39
+ "bad typecode is specified: #{typecode}"
40
+ end
41
+
42
+ # do escape
43
+
44
+ self.new('ftp',
45
+ [user, password],
46
+ host, port, nil,
47
+ typecode ? path + TYPECODE_PREFIX + typecode : path,
48
+ nil, nil, nil, arg_check)
49
+ end
50
+
51
+ #
52
+ # == Description
53
+ #
54
+ # Creates a new URI::FTP object from components, with syntax checking.
55
+ #
56
+ # The components accepted are +userinfo+, +host+, +port+, +path+ and
57
+ # +typecode+.
58
+ #
59
+ # The components should be provided either as an Array, or as a Hash
60
+ # with keys formed by preceding the component names with a colon.
61
+ #
62
+ # If an Array is used, the components must be passed in the order
63
+ # [userinfo, host, port, path, typecode]
64
+ #
65
+ # If the path supplied is absolute, it will be escaped in order to
66
+ # make it absolute in the URI. Examples:
67
+ #
68
+ # require 'uri'
69
+ #
70
+ # uri = URI::FTP.build(['user:password', 'ftp.example.com', nil,
71
+ # '/path/file.> zip', 'i'])
72
+ # puts uri.to_s -> ftp://user:password@ftp.example.com/%2Fpath/file.zip;type=a
73
+ #
74
+ # uri2 = URI::FTP.build({:host => 'ftp.example.com',
75
+ # :path => 'ruby/src'})
76
+ # puts uri2.to_s -> ftp://ftp.example.com/ruby/src
77
+ #
78
+ def self.build(args)
79
+
80
+ # Fix the incoming path to be generic URL syntax
81
+ # FTP path -> URL path
82
+ # foo/bar /foo/bar
83
+ # /foo/bar /%2Ffoo/bar
84
+ #
85
+ if args.kind_of?(Array)
86
+ args[3] = '/' + args[3].sub(/^\//, '%2F')
87
+ else
88
+ args[:path] = '/' + args[:path].sub(/^\//, '%2F')
89
+ end
90
+
91
+ tmp = Util::make_components_hash(self, args)
92
+
93
+ if tmp[:typecode]
94
+ if tmp[:typecode].size == 1
95
+ tmp[:typecode] = TYPECODE_PREFIX + tmp[:typecode]
96
+ end
97
+ tmp[:path] << tmp[:typecode]
98
+ end
99
+
100
+ return super(tmp)
101
+ end
102
+
103
+ #
104
+ # == Description
105
+ #
106
+ # Creates a new URI::FTP object from generic URL components with no
107
+ # syntax checking.
108
+ #
109
+ # Unlike build(), this method does not escape the path component as
110
+ # required by RFC1738; instead it is treated as per RFC2396.
111
+ #
112
+ # Arguments are +scheme+, +userinfo+, +host+, +port+, +registry+, +path+,
113
+ # +opaque+, +query+ and +fragment+, in that order.
114
+ #
115
+ def initialize(*arg)
116
+ super(*arg)
117
+ @typecode = nil
118
+ tmp = @path.index(TYPECODE_PREFIX)
119
+ if tmp
120
+ typecode = @path[tmp + TYPECODE_PREFIX.size..-1]
121
+ self.set_path(@path[0..tmp - 1])
122
+
123
+ if arg[-1]
124
+ self.typecode = typecode
125
+ else
126
+ self.set_typecode(typecode)
127
+ end
128
+ end
129
+ end
130
+ attr_reader :typecode
131
+
132
+ def check_typecode(v)
133
+ if TYPECODE.include?(v)
134
+ return true
135
+ else
136
+ raise InvalidComponentError,
137
+ "bad typecode(expected #{TYPECODE.join(', ')}): #{v}"
138
+ end
139
+ end
140
+ private :check_typecode
141
+
142
+ def set_typecode(v)
143
+ @typecode = v
144
+ end
145
+ protected :set_typecode
146
+
147
+ def typecode=(typecode)
148
+ check_typecode(typecode)
149
+ set_typecode(typecode)
150
+ typecode
151
+ end
152
+
153
+ def merge(oth) # :nodoc:
154
+ tmp = super(oth)
155
+ if self != tmp
156
+ tmp.set_typecode(oth.typecode)
157
+ end
158
+
159
+ return tmp
160
+ end
161
+
162
+ # Returns the path from an FTP URI.
163
+ #
164
+ # RFC 1738 specifically states that the path for an FTP URI does not
165
+ # include the / which separates the URI path from the URI host. Example:
166
+ #
167
+ # ftp://ftp.example.com/pub/ruby
168
+ #
169
+ # The above URI indicates that the client should connect to
170
+ # ftp.example.com then cd pub/ruby from the initial login directory.
171
+ #
172
+ # If you want to cd to an absolute directory, you must include an
173
+ # escaped / (%2F) in the path. Example:
174
+ #
175
+ # ftp://ftp.example.com/%2Fpub/ruby
176
+ #
177
+ # This method will then return "/pub/ruby"
178
+ #
179
+ def path
180
+ return @path.sub(/^\//,'').sub(/^%2F/i,'/')
181
+ end
182
+
183
+ def to_s
184
+ save_path = nil
185
+ if @typecode
186
+ save_path = @path
187
+ @path = @path + TYPECODE_PREFIX + @typecode
188
+ end
189
+ str = super
190
+ if @typecode
191
+ @path = save_path
192
+ end
193
+
194
+ return str
195
+ end
196
+ end
197
+ @@schemes['FTP'] = FTP
198
+ end
@@ -0,0 +1,1122 @@
1
+ #
2
+ # = uri/generic.rb
3
+ #
4
+ # Author:: Akira Yamada <akira@ruby-lang.org>
5
+ # License:: You can redistribute it and/or modify it under the same term as Ruby.
6
+ # Revision:: $Id: generic.rb 16085 2008-04-19 11:56:22Z knu $
7
+ #
8
+
9
+ require 'uri/common'
10
+
11
+ module URI
12
+
13
+ #
14
+ # Base class for all URI classes.
15
+ # Implements generic URI syntax as per RFC 2396.
16
+ #
17
+ class Generic
18
+ include URI
19
+ include REGEXP
20
+
21
+ DEFAULT_PORT = nil
22
+
23
+ #
24
+ # Returns default port
25
+ #
26
+ def self.default_port
27
+ self::DEFAULT_PORT
28
+ end
29
+
30
+ def default_port
31
+ self.class.default_port
32
+ end
33
+
34
+ COMPONENT = [
35
+ :scheme,
36
+ :userinfo, :host, :port, :registry,
37
+ :path, :opaque,
38
+ :query,
39
+ :fragment
40
+ ].freeze
41
+
42
+ #
43
+ # Components of the URI in the order.
44
+ #
45
+ def self.component
46
+ self::COMPONENT
47
+ end
48
+
49
+ USE_REGISTRY = false
50
+
51
+ #
52
+ # DOC: FIXME!
53
+ #
54
+ def self.use_registry
55
+ self::USE_REGISTRY
56
+ end
57
+
58
+ #
59
+ # == Synopsis
60
+ #
61
+ # See #new
62
+ #
63
+ # == Description
64
+ #
65
+ # At first, tries to create a new URI::Generic instance using
66
+ # URI::Generic::build. But, if exception URI::InvalidComponentError is raised,
67
+ # then it URI::Escape.escape all URI components and tries again.
68
+ #
69
+ #
70
+ def self.build2(args)
71
+ begin
72
+ return self.build(args)
73
+ rescue InvalidComponentError
74
+ if args.kind_of?(Array)
75
+ return self.build(args.collect{|x|
76
+ if x
77
+ URI.escape(x)
78
+ else
79
+ x
80
+ end
81
+ })
82
+ elsif args.kind_of?(Hash)
83
+ tmp = {}
84
+ args.each do |key, value|
85
+ tmp[key] = if value
86
+ URI.escape(value)
87
+ else
88
+ value
89
+ end
90
+ end
91
+ return self.build(tmp)
92
+ end
93
+ end
94
+ end
95
+
96
+ #
97
+ # == Synopsis
98
+ #
99
+ # See #new
100
+ #
101
+ # == Description
102
+ #
103
+ # Creates a new URI::Generic instance from components of URI::Generic
104
+ # with check. Components are: scheme, userinfo, host, port, registry, path,
105
+ # opaque, query and fragment. You can provide arguments either by an Array or a Hash.
106
+ # See #new for hash keys to use or for order of array items.
107
+ #
108
+ def self.build(args)
109
+ if args.kind_of?(Array) &&
110
+ args.size == ::URI::Generic::COMPONENT.size
111
+ tmp = args
112
+ elsif args.kind_of?(Hash)
113
+ tmp = ::URI::Generic::COMPONENT.collect do |c|
114
+ if args.include?(c)
115
+ args[c]
116
+ else
117
+ nil
118
+ end
119
+ end
120
+ else
121
+ raise ArgumentError,
122
+ "expected Array of or Hash of components of #{self.class} (#{self.class.component.join(', ')})"
123
+ end
124
+
125
+ tmp << true
126
+ return self.new(*tmp)
127
+ end
128
+ #
129
+ # == Args
130
+ #
131
+ # +scheme+::
132
+ # Protocol scheme, i.e. 'http','ftp','mailto' and so on.
133
+ # +userinfo+::
134
+ # User name and password, i.e. 'sdmitry:bla'
135
+ # +host+::
136
+ # Server host name
137
+ # +port+::
138
+ # Server port
139
+ # +registry+::
140
+ # DOC: FIXME!
141
+ # +path+::
142
+ # Path on server
143
+ # +opaque+::
144
+ # DOC: FIXME!
145
+ # +query+::
146
+ # Query data
147
+ # +fragment+::
148
+ # A part of URI after '#' sign
149
+ # +arg_check+::
150
+ # Check arguments [false by default]
151
+ #
152
+ # == Description
153
+ #
154
+ # Creates a new URI::Generic instance from ``generic'' components without check.
155
+ #
156
+ def initialize(scheme,
157
+ userinfo, host, port, registry,
158
+ path, opaque,
159
+ query,
160
+ fragment,
161
+ arg_check = false)
162
+ @scheme = nil
163
+ @user = nil
164
+ @password = nil
165
+ @host = nil
166
+ @port = nil
167
+ @path = nil
168
+ @query = nil
169
+ @opaque = nil
170
+ @registry = nil
171
+ @fragment = nil
172
+
173
+ if arg_check
174
+ self.scheme = scheme
175
+ self.userinfo = userinfo
176
+ self.host = host
177
+ self.port = port
178
+ self.path = path
179
+ self.query = query
180
+ self.opaque = opaque
181
+ self.registry = registry
182
+ self.fragment = fragment
183
+ else
184
+ self.set_scheme(scheme)
185
+ self.set_userinfo(userinfo)
186
+ self.set_host(host)
187
+ self.set_port(port)
188
+ self.set_path(path)
189
+ self.set_query(query)
190
+ self.set_opaque(opaque)
191
+ self.set_registry(registry)
192
+ self.set_fragment(fragment)
193
+ end
194
+ if @registry && !self.class.use_registry
195
+ raise InvalidURIError,
196
+ "the scheme #{@scheme} does not accept registry part: #{@registry} (or bad hostname?)"
197
+ end
198
+
199
+ @scheme.freeze if @scheme
200
+ self.set_path('') if !@path && !@opaque # (see RFC2396 Section 5.2)
201
+ self.set_port(self.default_port) if self.default_port && !@port
202
+ end
203
+ attr_reader :scheme
204
+ attr_reader :host
205
+ attr_reader :port
206
+ attr_reader :registry
207
+ attr_reader :path
208
+ attr_reader :query
209
+ attr_reader :opaque
210
+ attr_reader :fragment
211
+
212
+ # replace self by other URI object
213
+ def replace!(oth)
214
+ if self.class != oth.class
215
+ raise ArgumentError, "expected #{self.class} object"
216
+ end
217
+
218
+ component.each do |c|
219
+ self.__send__("#{c}=", oth.__send__(c))
220
+ end
221
+ end
222
+ private :replace!
223
+
224
+ def component
225
+ self.class.component
226
+ end
227
+
228
+ def check_scheme(v)
229
+ if v && SCHEME !~ v
230
+ raise InvalidComponentError,
231
+ "bad component(expected scheme component): #{v}"
232
+ end
233
+
234
+ return true
235
+ end
236
+ private :check_scheme
237
+
238
+ def set_scheme(v)
239
+ @scheme = v
240
+ end
241
+ protected :set_scheme
242
+
243
+ def scheme=(v)
244
+ check_scheme(v)
245
+ set_scheme(v)
246
+ v
247
+ end
248
+
249
+ def check_userinfo(user, password = nil)
250
+ if !password
251
+ user, password = split_userinfo(user)
252
+ end
253
+ check_user(user)
254
+ check_password(password, user)
255
+
256
+ return true
257
+ end
258
+ private :check_userinfo
259
+
260
+ def check_user(v)
261
+ if @registry || @opaque
262
+ raise InvalidURIError,
263
+ "can not set user with registry or opaque"
264
+ end
265
+
266
+ return v unless v
267
+
268
+ if USERINFO !~ v
269
+ raise InvalidComponentError,
270
+ "bad component(expected userinfo component or user component): #{v}"
271
+ end
272
+
273
+ return true
274
+ end
275
+ private :check_user
276
+
277
+ def check_password(v, user = @user)
278
+ if @registry || @opaque
279
+ raise InvalidURIError,
280
+ "can not set password with registry or opaque"
281
+ end
282
+ return v unless v
283
+
284
+ if !user
285
+ raise InvalidURIError,
286
+ "password component depends user component"
287
+ end
288
+
289
+ if USERINFO !~ v
290
+ raise InvalidComponentError,
291
+ "bad component(expected user component): #{v}"
292
+ end
293
+
294
+ return true
295
+ end
296
+ private :check_password
297
+
298
+ #
299
+ # Sets userinfo, argument is string like 'name:pass'
300
+ #
301
+ def userinfo=(userinfo)
302
+ if userinfo.nil?
303
+ return nil
304
+ end
305
+ check_userinfo(*userinfo)
306
+ set_userinfo(*userinfo)
307
+ # returns userinfo
308
+ end
309
+
310
+ def user=(user)
311
+ check_user(user)
312
+ set_user(user)
313
+ # returns user
314
+ end
315
+
316
+ def password=(password)
317
+ check_password(password)
318
+ set_password(password)
319
+ # returns password
320
+ end
321
+
322
+ def set_userinfo(user, password = nil)
323
+ unless password
324
+ user, password = split_userinfo(user)
325
+ end
326
+ @user = user
327
+ @password = password if password
328
+
329
+ [@user, @password]
330
+ end
331
+ protected :set_userinfo
332
+
333
+ def set_user(v)
334
+ set_userinfo(v, @password)
335
+ v
336
+ end
337
+ protected :set_user
338
+
339
+ def set_password(v)
340
+ @password = v
341
+ # returns v
342
+ end
343
+ protected :set_password
344
+
345
+ def split_userinfo(ui)
346
+ return nil, nil unless ui
347
+ user, password = ui.split(/:/, 2)
348
+
349
+ return user, password
350
+ end
351
+ private :split_userinfo
352
+
353
+ def escape_userpass(v)
354
+ v = URI.escape(v, /[@:\/]/o) # RFC 1738 section 3.1 #/
355
+ end
356
+ private :escape_userpass
357
+
358
+ def userinfo
359
+ if @user.nil?
360
+ nil
361
+ elsif @password.nil?
362
+ @user
363
+ else
364
+ @user + ':' + @password
365
+ end
366
+ end
367
+
368
+ def user
369
+ @user
370
+ end
371
+
372
+ def password
373
+ @password
374
+ end
375
+
376
+ def check_host(v)
377
+ return v unless v
378
+
379
+ if @registry || @opaque
380
+ raise InvalidURIError,
381
+ "can not set host with registry or opaque"
382
+ elsif HOST !~ v
383
+ raise InvalidComponentError,
384
+ "bad component(expected host component): #{v}"
385
+ end
386
+
387
+ return true
388
+ end
389
+ private :check_host
390
+
391
+ def set_host(v)
392
+ @host = v
393
+ end
394
+ protected :set_host
395
+
396
+ def host=(v)
397
+ check_host(v)
398
+ set_host(v)
399
+ v
400
+ end
401
+
402
+ def check_port(v)
403
+ return v unless v
404
+
405
+ if @registry || @opaque
406
+ raise InvalidURIError,
407
+ "can not set port with registry or opaque"
408
+ elsif !v.kind_of?(Fixnum) && PORT !~ v
409
+ raise InvalidComponentError,
410
+ "bad component(expected port component): #{v}"
411
+ end
412
+
413
+ return true
414
+ end
415
+ private :check_port
416
+
417
+ def set_port(v)
418
+ unless !v || v.kind_of?(Fixnum)
419
+ if v.empty?
420
+ v = nil
421
+ else
422
+ v = v.to_i
423
+ end
424
+ end
425
+ @port = v
426
+ end
427
+ protected :set_port
428
+
429
+ def port=(v)
430
+ check_port(v)
431
+ set_port(v)
432
+ port
433
+ end
434
+
435
+ def check_registry(v)
436
+ return v unless v
437
+
438
+ # raise if both server and registry are not nil, because:
439
+ # authority = server | reg_name
440
+ # server = [ [ userinfo "@" ] hostport ]
441
+ if @host || @port || @user # userinfo = @user + ':' + @password
442
+ raise InvalidURIError,
443
+ "can not set registry with host, port, or userinfo"
444
+ elsif v && REGISTRY !~ v
445
+ raise InvalidComponentError,
446
+ "bad component(expected registry component): #{v}"
447
+ end
448
+
449
+ return true
450
+ end
451
+ private :check_registry
452
+
453
+ def set_registry(v)
454
+ @registry = v
455
+ end
456
+ protected :set_registry
457
+
458
+ def registry=(v)
459
+ check_registry(v)
460
+ set_registry(v)
461
+ v
462
+ end
463
+
464
+ def check_path(v)
465
+ # raise if both hier and opaque are not nil, because:
466
+ # absoluteURI = scheme ":" ( hier_part | opaque_part )
467
+ # hier_part = ( net_path | abs_path ) [ "?" query ]
468
+ if v && @opaque
469
+ raise InvalidURIError,
470
+ "path conflicts with opaque"
471
+ end
472
+
473
+ if @scheme
474
+ if v && v != '' && ABS_PATH !~ v
475
+ raise InvalidComponentError,
476
+ "bad component(expected absolute path component): #{v}"
477
+ end
478
+ else
479
+ if v && v != '' && ABS_PATH !~ v && REL_PATH !~ v
480
+ raise InvalidComponentError,
481
+ "bad component(expected relative path component): #{v}"
482
+ end
483
+ end
484
+
485
+ return true
486
+ end
487
+ private :check_path
488
+
489
+ def set_path(v)
490
+ @path = v
491
+ end
492
+ protected :set_path
493
+
494
+ def path=(v)
495
+ check_path(v)
496
+ set_path(v)
497
+ v
498
+ end
499
+
500
+ def check_query(v)
501
+ return v unless v
502
+
503
+ # raise if both hier and opaque are not nil, because:
504
+ # absoluteURI = scheme ":" ( hier_part | opaque_part )
505
+ # hier_part = ( net_path | abs_path ) [ "?" query ]
506
+ if @opaque
507
+ raise InvalidURIError,
508
+ "query conflicts with opaque"
509
+ end
510
+
511
+ if v && v != '' && QUERY !~ v
512
+ raise InvalidComponentError,
513
+ "bad component(expected query component): #{v}"
514
+ end
515
+
516
+ return true
517
+ end
518
+ private :check_query
519
+
520
+ def set_query(v)
521
+ @query = v
522
+ end
523
+ protected :set_query
524
+
525
+ def query=(v)
526
+ check_query(v)
527
+ set_query(v)
528
+ v
529
+ end
530
+
531
+ def check_opaque(v)
532
+ return v unless v
533
+
534
+ # raise if both hier and opaque are not nil, because:
535
+ # absoluteURI = scheme ":" ( hier_part | opaque_part )
536
+ # hier_part = ( net_path | abs_path ) [ "?" query ]
537
+ if @host || @port || @user || @path # userinfo = @user + ':' + @password
538
+ raise InvalidURIError,
539
+ "can not set opaque with host, port, userinfo or path"
540
+ elsif v && OPAQUE !~ v
541
+ raise InvalidComponentError,
542
+ "bad component(expected opaque component): #{v}"
543
+ end
544
+
545
+ return true
546
+ end
547
+ private :check_opaque
548
+
549
+ def set_opaque(v)
550
+ @opaque = v
551
+ end
552
+ protected :set_opaque
553
+
554
+ def opaque=(v)
555
+ check_opaque(v)
556
+ set_opaque(v)
557
+ v
558
+ end
559
+
560
+ def check_fragment(v)
561
+ return v unless v
562
+
563
+ if v && v != '' && FRAGMENT !~ v
564
+ raise InvalidComponentError,
565
+ "bad component(expected fragment component): #{v}"
566
+ end
567
+
568
+ return true
569
+ end
570
+ private :check_fragment
571
+
572
+ def set_fragment(v)
573
+ @fragment = v
574
+ end
575
+ protected :set_fragment
576
+
577
+ def fragment=(v)
578
+ check_fragment(v)
579
+ set_fragment(v)
580
+ v
581
+ end
582
+
583
+ #
584
+ # Checks if URI has a path
585
+ #
586
+ def hierarchical?
587
+ if @path
588
+ true
589
+ else
590
+ false
591
+ end
592
+ end
593
+
594
+ #
595
+ # Checks if URI is an absolute one
596
+ #
597
+ def absolute?
598
+ if @scheme
599
+ true
600
+ else
601
+ false
602
+ end
603
+ end
604
+ alias absolute absolute?
605
+
606
+ #
607
+ # Checks if URI is relative
608
+ #
609
+ def relative?
610
+ !absolute?
611
+ end
612
+
613
+ def split_path(path)
614
+ path.split(%r{/+}, -1)
615
+ end
616
+ private :split_path
617
+
618
+ def merge_path(base, rel)
619
+
620
+ # RFC2396, Section 5.2, 5)
621
+ # RFC2396, Section 5.2, 6)
622
+ base_path = split_path(base)
623
+ rel_path = split_path(rel)
624
+
625
+ # RFC2396, Section 5.2, 6), a)
626
+ base_path << '' if base_path.last == '..'
627
+ while i = base_path.index('..')
628
+ base_path.slice!(i - 1, 2)
629
+ end
630
+
631
+ if (first = rel_path.first) and first.empty?
632
+ base_path.clear
633
+ rel_path.shift
634
+ end
635
+
636
+ # RFC2396, Section 5.2, 6), c)
637
+ # RFC2396, Section 5.2, 6), d)
638
+ rel_path.push('') if rel_path.last == '.' || rel_path.last == '..'
639
+ rel_path.delete('.')
640
+
641
+ # RFC2396, Section 5.2, 6), e)
642
+ tmp = []
643
+ rel_path.each do |x|
644
+ if x == '..' &&
645
+ !(tmp.empty? || tmp.last == '..')
646
+ tmp.pop
647
+ else
648
+ tmp << x
649
+ end
650
+ end
651
+
652
+ add_trailer_slash = !tmp.empty?
653
+ if base_path.empty?
654
+ base_path = [''] # keep '/' for root directory
655
+ elsif add_trailer_slash
656
+ base_path.pop
657
+ end
658
+ while x = tmp.shift
659
+ if x == '..'
660
+ # RFC2396, Section 4
661
+ # a .. or . in an absolute path has no special meaning
662
+ base_path.pop if base_path.size > 1
663
+ else
664
+ # if x == '..'
665
+ # valid absolute (but abnormal) path "/../..."
666
+ # else
667
+ # valid absolute path
668
+ # end
669
+ base_path << x
670
+ tmp.each {|t| base_path << t}
671
+ add_trailer_slash = false
672
+ break
673
+ end
674
+ end
675
+ base_path.push('') if add_trailer_slash
676
+
677
+ return base_path.join('/')
678
+ end
679
+ private :merge_path
680
+
681
+ #
682
+ # == Args
683
+ #
684
+ # +oth+::
685
+ # URI or String
686
+ #
687
+ # == Description
688
+ #
689
+ # Destructive form of #merge
690
+ #
691
+ # == Usage
692
+ #
693
+ # require 'uri'
694
+ #
695
+ # uri = URI.parse("http://my.example.com")
696
+ # uri.merge!("/main.rbx?page=1")
697
+ # p uri
698
+ # # => #<URI::HTTP:0x2021f3b0 URL:http://my.example.com/main.rbx?page=1>
699
+ #
700
+ def merge!(oth)
701
+ t = merge(oth)
702
+ if self == t
703
+ nil
704
+ else
705
+ replace!(t)
706
+ self
707
+ end
708
+ end
709
+
710
+ #
711
+ # == Args
712
+ #
713
+ # +oth+::
714
+ # URI or String
715
+ #
716
+ # == Description
717
+ #
718
+ # Merges two URI's.
719
+ #
720
+ # == Usage
721
+ #
722
+ # require 'uri'
723
+ #
724
+ # uri = URI.parse("http://my.example.com")
725
+ # p uri.merge("/main.rbx?page=1")
726
+ # # => #<URI::HTTP:0x2021f3b0 URL:http://my.example.com/main.rbx?page=1>
727
+ #
728
+ def merge(oth)
729
+ begin
730
+ base, rel = merge0(oth)
731
+ rescue
732
+ raise $!.class, $!.message
733
+ end
734
+
735
+ if base == rel
736
+ return base
737
+ end
738
+
739
+ authority = rel.userinfo || rel.host || rel.port
740
+
741
+ # RFC2396, Section 5.2, 2)
742
+ if (rel.path.nil? || rel.path.empty?) && !authority && !rel.query
743
+ base.set_fragment(rel.fragment) if rel.fragment
744
+ return base
745
+ end
746
+
747
+ base.set_query(nil)
748
+ base.set_fragment(nil)
749
+
750
+ # RFC2396, Section 5.2, 4)
751
+ if !authority
752
+ base.set_path(merge_path(base.path, rel.path)) if base.path && rel.path
753
+ else
754
+ # RFC2396, Section 5.2, 4)
755
+ base.set_path(rel.path) if rel.path
756
+ end
757
+
758
+ # RFC2396, Section 5.2, 7)
759
+ base.set_userinfo(rel.userinfo) if rel.userinfo
760
+ base.set_host(rel.host) if rel.host
761
+ base.set_port(rel.port) if rel.port
762
+ base.set_query(rel.query) if rel.query
763
+ base.set_fragment(rel.fragment) if rel.fragment
764
+
765
+ return base
766
+ end # merge
767
+ alias + merge
768
+
769
+ # return base and rel.
770
+ # you can modify `base', but can not `rel'.
771
+ def merge0(oth)
772
+ case oth
773
+ when Generic
774
+ when String
775
+ oth = URI.parse(oth)
776
+ else
777
+ raise ArgumentError,
778
+ "bad argument(expected URI object or URI string)"
779
+ end
780
+
781
+ if self.relative? && oth.relative?
782
+ raise BadURIError,
783
+ "both URI are relative"
784
+ end
785
+
786
+ if self.absolute? && oth.absolute?
787
+ #raise BadURIError,
788
+ # "both URI are absolute"
789
+ # hmm... should return oth for usability?
790
+ return oth, oth
791
+ end
792
+
793
+ if self.absolute?
794
+ return self.dup, oth
795
+ else
796
+ return oth, oth
797
+ end
798
+ end
799
+ private :merge0
800
+
801
+ def route_from_path(src, dst)
802
+ # RFC2396, Section 4.2
803
+ return '' if src == dst
804
+
805
+ src_path = split_path(src)
806
+ dst_path = split_path(dst)
807
+
808
+ # hmm... dst has abnormal absolute path,
809
+ # like "/./", "/../", "/x/../", ...
810
+ if dst_path.include?('..') ||
811
+ dst_path.include?('.')
812
+ return dst.dup
813
+ end
814
+
815
+ src_path.pop
816
+
817
+ # discard same parts
818
+ while dst_path.first == src_path.first
819
+ break if dst_path.empty?
820
+
821
+ src_path.shift
822
+ dst_path.shift
823
+ end
824
+
825
+ tmp = dst_path.join('/')
826
+
827
+ # calculate
828
+ if src_path.empty?
829
+ if tmp.empty?
830
+ return './'
831
+ elsif dst_path.first.include?(':') # (see RFC2396 Section 5)
832
+ return './' + tmp
833
+ else
834
+ return tmp
835
+ end
836
+ end
837
+
838
+ return '../' * src_path.size + tmp
839
+ end
840
+ private :route_from_path
841
+
842
+ def route_from0(oth)
843
+ case oth
844
+ when Generic
845
+ when String
846
+ oth = URI.parse(oth)
847
+ else
848
+ raise ArgumentError,
849
+ "bad argument(expected URI object or URI string)"
850
+ end
851
+
852
+ if self.relative?
853
+ raise BadURIError,
854
+ "relative URI: #{self}"
855
+ end
856
+ if oth.relative?
857
+ raise BadURIError,
858
+ "relative URI: #{oth}"
859
+ end
860
+
861
+ if self.scheme != oth.scheme
862
+ return self, self.dup
863
+ end
864
+ rel = URI::Generic.new(nil, # it is relative URI
865
+ self.userinfo, self.host, self.port,
866
+ self.registry, self.path, self.opaque,
867
+ self.query, self.fragment)
868
+
869
+ if rel.userinfo != oth.userinfo ||
870
+ rel.host.to_s.downcase != oth.host.to_s.downcase ||
871
+ rel.port != oth.port
872
+ if self.userinfo.nil? && self.host.nil?
873
+ return self, self.dup
874
+ end
875
+ rel.set_port(nil) if rel.port == oth.default_port
876
+ return rel, rel
877
+ end
878
+ rel.set_userinfo(nil)
879
+ rel.set_host(nil)
880
+ rel.set_port(nil)
881
+
882
+ if rel.path && rel.path == oth.path
883
+ rel.set_path('')
884
+ rel.set_query(nil) if rel.query == oth.query
885
+ return rel, rel
886
+ elsif rel.opaque && rel.opaque == oth.opaque
887
+ rel.set_opaque('')
888
+ rel.set_query(nil) if rel.query == oth.query
889
+ return rel, rel
890
+ end
891
+
892
+ # you can modify `rel', but can not `oth'.
893
+ return oth, rel
894
+ end
895
+ private :route_from0
896
+ #
897
+ # == Args
898
+ #
899
+ # +oth+::
900
+ # URI or String
901
+ #
902
+ # == Description
903
+ #
904
+ # Calculates relative path from oth to self
905
+ #
906
+ # == Usage
907
+ #
908
+ # require 'uri'
909
+ #
910
+ # uri = URI.parse('http://my.example.com/main.rbx?page=1')
911
+ # p uri.route_from('http://my.example.com')
912
+ # #=> #<URI::Generic:0x20218858 URL:/main.rbx?page=1>
913
+ #
914
+ def route_from(oth)
915
+ # you can modify `rel', but can not `oth'.
916
+ begin
917
+ oth, rel = route_from0(oth)
918
+ rescue
919
+ raise $!.class, $!.message
920
+ end
921
+ if oth == rel
922
+ return rel
923
+ end
924
+
925
+ rel.set_path(route_from_path(oth.path, self.path))
926
+ if rel.path == './' && self.query
927
+ # "./?foo" -> "?foo"
928
+ rel.set_path('')
929
+ end
930
+
931
+ return rel
932
+ end
933
+
934
+ alias - route_from
935
+
936
+ #
937
+ # == Args
938
+ #
939
+ # +oth+::
940
+ # URI or String
941
+ #
942
+ # == Description
943
+ #
944
+ # Calculates relative path to oth from self
945
+ #
946
+ # == Usage
947
+ #
948
+ # require 'uri'
949
+ #
950
+ # uri = URI.parse('http://my.example.com')
951
+ # p uri.route_to('http://my.example.com/main.rbx?page=1')
952
+ # #=> #<URI::Generic:0x2020c2f6 URL:/main.rbx?page=1>
953
+ #
954
+ def route_to(oth)
955
+ case oth
956
+ when Generic
957
+ when String
958
+ oth = URI.parse(oth)
959
+ else
960
+ raise ArgumentError,
961
+ "bad argument(expected URI object or URI string)"
962
+ end
963
+
964
+ oth.route_from(self)
965
+ end
966
+
967
+ #
968
+ # Returns normalized URI
969
+ #
970
+ def normalize
971
+ uri = dup
972
+ uri.normalize!
973
+ uri
974
+ end
975
+
976
+ #
977
+ # Destructive version of #normalize
978
+ #
979
+ def normalize!
980
+ if path && path == ''
981
+ set_path('/')
982
+ end
983
+ if host && host != host.downcase
984
+ set_host(self.host.downcase)
985
+ end
986
+ end
987
+
988
+ def path_query
989
+ str = @path
990
+ if @query
991
+ str += '?' + @query
992
+ end
993
+ str
994
+ end
995
+ private :path_query
996
+
997
+ #
998
+ # Constructs String from URI
999
+ #
1000
+ def to_s
1001
+ str = ''
1002
+ if @scheme
1003
+ str << @scheme
1004
+ str << ':'
1005
+ end
1006
+
1007
+ if @opaque
1008
+ str << @opaque
1009
+
1010
+ else
1011
+ if @registry
1012
+ str << @registry
1013
+ else
1014
+ if @host
1015
+ str << '//'
1016
+ end
1017
+ if self.userinfo
1018
+ str << self.userinfo
1019
+ str << '@'
1020
+ end
1021
+ if @host
1022
+ str << @host
1023
+ end
1024
+ if @port && @port != self.default_port
1025
+ str << ':'
1026
+ str << @port.to_s
1027
+ end
1028
+ end
1029
+
1030
+ str << path_query
1031
+ end
1032
+
1033
+ if @fragment
1034
+ str << '#'
1035
+ str << @fragment
1036
+ end
1037
+
1038
+ str
1039
+ end
1040
+
1041
+ #
1042
+ # Compares to URI's
1043
+ #
1044
+ def ==(oth)
1045
+ if self.class == oth.class
1046
+ self.normalize.component_ary == oth.normalize.component_ary
1047
+ else
1048
+ false
1049
+ end
1050
+ end
1051
+
1052
+ def hash
1053
+ self.component_ary.hash
1054
+ end
1055
+
1056
+ def eql?(oth)
1057
+ self.component_ary.eql?(oth.component_ary)
1058
+ end
1059
+
1060
+ =begin
1061
+
1062
+ --- URI::Generic#===(oth)
1063
+
1064
+ =end
1065
+ # def ===(oth)
1066
+ # raise NotImplementedError
1067
+ # end
1068
+
1069
+ =begin
1070
+ =end
1071
+ def component_ary
1072
+ component.collect do |x|
1073
+ self.send(x)
1074
+ end
1075
+ end
1076
+ protected :component_ary
1077
+
1078
+ # == Args
1079
+ #
1080
+ # +components+::
1081
+ # Multiple Symbol arguments defined in URI::HTTP
1082
+ #
1083
+ # == Description
1084
+ #
1085
+ # Selects specified components from URI
1086
+ #
1087
+ # == Usage
1088
+ #
1089
+ # require 'uri'
1090
+ #
1091
+ # uri = URI.parse('http://myuser:mypass@my.example.com/test.rbx')
1092
+ # p uri.select(:userinfo, :host, :path)
1093
+ # # => ["myuser:mypass", "my.example.com", "/test.rbx"]
1094
+ #
1095
+ def select(*components)
1096
+ components.collect do |c|
1097
+ if component.include?(c)
1098
+ self.send(c)
1099
+ else
1100
+ raise ArgumentError,
1101
+ "expected of components of #{self.class} (#{self.class.component.join(', ')})"
1102
+ end
1103
+ end
1104
+ end
1105
+
1106
+ @@to_s = Kernel.instance_method(:to_s)
1107
+ def inspect
1108
+ @@to_s.bind(self).call.sub!(/>\z/) {" URL:#{self}>"}
1109
+ end
1110
+
1111
+ def coerce(oth)
1112
+ case oth
1113
+ when String
1114
+ oth = URI.parse(oth)
1115
+ else
1116
+ super
1117
+ end
1118
+
1119
+ return oth, self
1120
+ end
1121
+ end
1122
+ end