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,927 @@
1
+ #
2
+ # = net/ftp.rb - FTP Client Library
3
+ #
4
+ # Written by Shugo Maeda <shugo@ruby-lang.org>.
5
+ #
6
+ # Documentation by Gavin Sinclair, sourced from "Programming Ruby" (Hunt/Thomas)
7
+ # and "Ruby In a Nutshell" (Matsumoto), used with permission.
8
+ #
9
+ # This library is distributed under the terms of the Ruby license.
10
+ # You can freely distribute/modify this library.
11
+ #
12
+ # It is included in the Ruby standard library.
13
+ #
14
+ # See the Net::FTP class for an overview.
15
+ #
16
+
17
+ require "socket"
18
+ require "monitor"
19
+
20
+ module Net
21
+
22
+ # :stopdoc:
23
+ class FTPError < StandardError; end
24
+ class FTPReplyError < FTPError; end
25
+ class FTPTempError < FTPError; end
26
+ class FTPPermError < FTPError; end
27
+ class FTPProtoError < FTPError; end
28
+ # :startdoc:
29
+
30
+ #
31
+ # This class implements the File Transfer Protocol. If you have used a
32
+ # command-line FTP program, and are familiar with the commands, you will be
33
+ # able to use this class easily. Some extra features are included to take
34
+ # advantage of Ruby's style and strengths.
35
+ #
36
+ # == Example
37
+ #
38
+ # require 'net/ftp'
39
+ #
40
+ # === Example 1
41
+ #
42
+ # ftp = Net::FTP.new('ftp.netlab.co.jp')
43
+ # ftp.login
44
+ # files = ftp.chdir('pub/lang/ruby/contrib')
45
+ # files = ftp.list('n*')
46
+ # ftp.getbinaryfile('nif.rb-0.91.gz', 'nif.gz', 1024)
47
+ # ftp.close
48
+ #
49
+ # === Example 2
50
+ #
51
+ # Net::FTP.open('ftp.netlab.co.jp') do |ftp|
52
+ # ftp.login
53
+ # files = ftp.chdir('pub/lang/ruby/contrib')
54
+ # files = ftp.list('n*')
55
+ # ftp.getbinaryfile('nif.rb-0.91.gz', 'nif.gz', 1024)
56
+ # end
57
+ #
58
+ # == Major Methods
59
+ #
60
+ # The following are the methods most likely to be useful to users:
61
+ # - FTP.open
62
+ # - #getbinaryfile
63
+ # - #gettextfile
64
+ # - #putbinaryfile
65
+ # - #puttextfile
66
+ # - #chdir
67
+ # - #nlst
68
+ # - #size
69
+ # - #rename
70
+ # - #delete
71
+ #
72
+ class FTP
73
+ include MonitorMixin
74
+
75
+ # :stopdoc:
76
+ FTP_PORT = 21
77
+ CRLF = "\r\n"
78
+ DEFAULT_BLOCKSIZE = 4096
79
+ # :startdoc:
80
+
81
+ # When +true+, transfers are performed in binary mode. Default: +true+.
82
+ attr_accessor :binary
83
+
84
+ # When +true+, the connection is in passive mode. Default: +false+.
85
+ attr_accessor :passive
86
+
87
+ # When +true+, all traffic to and from the server is written
88
+ # to +$stdout+. Default: +false+.
89
+ attr_accessor :debug_mode
90
+
91
+ # Sets or retrieves the +resume+ status, which decides whether incomplete
92
+ # transfers are resumed or restarted. Default: +false+.
93
+ attr_accessor :resume
94
+
95
+ # The server's welcome message.
96
+ attr_reader :welcome
97
+
98
+ # The server's last response code.
99
+ attr_reader :last_response_code
100
+ alias lastresp last_response_code
101
+
102
+ # The server's last response.
103
+ attr_reader :last_response
104
+
105
+ #
106
+ # A synonym for <tt>FTP.new</tt>, but with a mandatory host parameter.
107
+ #
108
+ # If a block is given, it is passed the +FTP+ object, which will be closed
109
+ # when the block finishes, or when an exception is raised.
110
+ #
111
+ def FTP.open(host, user = nil, passwd = nil, acct = nil)
112
+ if block_given?
113
+ ftp = new(host, user, passwd, acct)
114
+ begin
115
+ yield ftp
116
+ ensure
117
+ ftp.close
118
+ end
119
+ else
120
+ new(host, user, passwd, acct)
121
+ end
122
+ end
123
+
124
+ #
125
+ # Creates and returns a new +FTP+ object. If a +host+ is given, a connection
126
+ # is made. Additionally, if the +user+ is given, the given user name,
127
+ # password, and (optionally) account are used to log in. See #login.
128
+ #
129
+ def initialize(host = nil, user = nil, passwd = nil, acct = nil)
130
+ super()
131
+ @binary = true
132
+ @passive = false
133
+ @debug_mode = false
134
+ @resume = false
135
+ if host
136
+ connect(host)
137
+ if user
138
+ login(user, passwd, acct)
139
+ end
140
+ end
141
+ end
142
+
143
+ # Obsolete
144
+ def return_code
145
+ $stderr.puts("warning: Net::FTP#return_code is obsolete and do nothing")
146
+ return "\n"
147
+ end
148
+
149
+ # Obsolete
150
+ def return_code=(s)
151
+ $stderr.puts("warning: Net::FTP#return_code= is obsolete and do nothing")
152
+ end
153
+
154
+ def open_socket(host, port)
155
+ if defined? SOCKSsocket and ENV["SOCKS_SERVER"]
156
+ @passive = true
157
+ return SOCKSsocket.open(host, port)
158
+ else
159
+ return TCPSocket.open(host, port)
160
+ end
161
+ end
162
+ private :open_socket
163
+
164
+ #
165
+ # Establishes an FTP connection to host, optionally overriding the default
166
+ # port. If the environment variable +SOCKS_SERVER+ is set, sets up the
167
+ # connection through a SOCKS proxy. Raises an exception (typically
168
+ # <tt>Errno::ECONNREFUSED</tt>) if the connection cannot be established.
169
+ #
170
+ def connect(host, port = FTP_PORT)
171
+ if @debug_mode
172
+ print "connect: ", host, ", ", port, "\n"
173
+ end
174
+ synchronize do
175
+ @sock = open_socket(host, port)
176
+ voidresp
177
+ end
178
+ end
179
+
180
+ #
181
+ # WRITEME or make private
182
+ #
183
+ def set_socket(sock, get_greeting = true)
184
+ synchronize do
185
+ @sock = sock
186
+ if get_greeting
187
+ voidresp
188
+ end
189
+ end
190
+ end
191
+
192
+ def sanitize(s)
193
+ if s =~ /^PASS /i
194
+ return s[0, 5] + "*" * (s.length - 5)
195
+ else
196
+ return s
197
+ end
198
+ end
199
+ private :sanitize
200
+
201
+ def putline(line)
202
+ if @debug_mode
203
+ print "put: ", sanitize(line), "\n"
204
+ end
205
+ line = line + CRLF
206
+ @sock.write(line)
207
+ end
208
+ private :putline
209
+
210
+ def getline
211
+ line = @sock.readline # if get EOF, raise EOFError
212
+ line.sub!(/(\r\n|\n|\r)\z/n, "")
213
+ if @debug_mode
214
+ print "get: ", sanitize(line), "\n"
215
+ end
216
+ return line
217
+ end
218
+ private :getline
219
+
220
+ def getmultiline
221
+ line = getline
222
+ buff = line
223
+ if line[3] == ?-
224
+ code = line[0, 3]
225
+ begin
226
+ line = getline
227
+ buff << "\n" << line
228
+ end until line[0, 3] == code and line[3] != ?-
229
+ end
230
+ return buff << "\n"
231
+ end
232
+ private :getmultiline
233
+
234
+ def getresp
235
+ @last_response = getmultiline
236
+ @last_response_code = @last_response[0, 3]
237
+ case @last_response_code
238
+ when /\A[123]/
239
+ return @last_response
240
+ when /\A4/
241
+ raise FTPTempError, @last_response
242
+ when /\A5/
243
+ raise FTPPermError, @last_response
244
+ else
245
+ raise FTPProtoError, @last_response
246
+ end
247
+ end
248
+ private :getresp
249
+
250
+ def voidresp
251
+ resp = getresp
252
+ if resp[0] != ?2
253
+ raise FTPReplyError, resp
254
+ end
255
+ end
256
+ private :voidresp
257
+
258
+ #
259
+ # Sends a command and returns the response.
260
+ #
261
+ def sendcmd(cmd)
262
+ synchronize do
263
+ putline(cmd)
264
+ return getresp
265
+ end
266
+ end
267
+
268
+ #
269
+ # Sends a command and expect a response beginning with '2'.
270
+ #
271
+ def voidcmd(cmd)
272
+ synchronize do
273
+ putline(cmd)
274
+ voidresp
275
+ end
276
+ end
277
+
278
+ def sendport(host, port)
279
+ af = (@sock.peeraddr)[0]
280
+ if af == "AF_INET"
281
+ hbytes = host.split(".")
282
+ pbytes = [port / 256, port % 256]
283
+ bytes = hbytes + pbytes
284
+ cmd = "PORT " + bytes.join(",")
285
+ elsif af == "AF_INET6"
286
+ cmd = "EPRT |2|" + host + "|" + sprintf("%d", port) + "|"
287
+ else
288
+ raise FTPProtoError, host
289
+ end
290
+ voidcmd(cmd)
291
+ end
292
+ private :sendport
293
+
294
+ def makeport
295
+ sock = TCPServer.open(@sock.addr[3], 0)
296
+ port = sock.addr[1]
297
+ host = sock.addr[3]
298
+ resp = sendport(host, port)
299
+ return sock
300
+ end
301
+ private :makeport
302
+
303
+ def makepasv
304
+ if @sock.peeraddr[0] == "AF_INET"
305
+ host, port = parse227(sendcmd("PASV"))
306
+ else
307
+ host, port = parse229(sendcmd("EPSV"))
308
+ # host, port = parse228(sendcmd("LPSV"))
309
+ end
310
+ return host, port
311
+ end
312
+ private :makepasv
313
+
314
+ def transfercmd(cmd, rest_offset = nil)
315
+ if @passive
316
+ host, port = makepasv
317
+ conn = open_socket(host, port)
318
+ if @resume and rest_offset
319
+ resp = sendcmd("REST " + rest_offset.to_s)
320
+ if resp[0] != ?3
321
+ raise FTPReplyError, resp
322
+ end
323
+ end
324
+ resp = sendcmd(cmd)
325
+ # skip 2XX for some ftp servers
326
+ resp = getresp if resp[0] == ?2
327
+ if resp[0] != ?1
328
+ raise FTPReplyError, resp
329
+ end
330
+ else
331
+ sock = makeport
332
+ if @resume and rest_offset
333
+ resp = sendcmd("REST " + rest_offset.to_s)
334
+ if resp[0] != ?3
335
+ raise FTPReplyError, resp
336
+ end
337
+ end
338
+ resp = sendcmd(cmd)
339
+ # skip 2XX for some ftp servers
340
+ resp = getresp if resp[0] == ?2
341
+ if resp[0] != ?1
342
+ raise FTPReplyError, resp
343
+ end
344
+ conn = sock.accept
345
+ sock.close
346
+ end
347
+ return conn
348
+ end
349
+ private :transfercmd
350
+
351
+ def getaddress
352
+ thishost = Socket.gethostname
353
+ if not thishost.index(".")
354
+ thishost = Socket.gethostbyname(thishost)[0]
355
+ end
356
+ if ENV.has_key?("LOGNAME")
357
+ realuser = ENV["LOGNAME"]
358
+ elsif ENV.has_key?("USER")
359
+ realuser = ENV["USER"]
360
+ else
361
+ realuser = "anonymous"
362
+ end
363
+ return realuser + "@" + thishost
364
+ end
365
+ private :getaddress
366
+
367
+ #
368
+ # Logs in to the remote host. The session must have been previously
369
+ # connected. If +user+ is the string "anonymous" and the +password+ is
370
+ # +nil+, a password of <tt>user@host</tt> is synthesized. If the +acct+
371
+ # parameter is not +nil+, an FTP ACCT command is sent following the
372
+ # successful login. Raises an exception on error (typically
373
+ # <tt>Net::FTPPermError</tt>).
374
+ #
375
+ def login(user = "anonymous", passwd = nil, acct = nil)
376
+ if user == "anonymous" and passwd == nil
377
+ passwd = getaddress
378
+ end
379
+
380
+ resp = ""
381
+ synchronize do
382
+ resp = sendcmd('USER ' + user)
383
+ if resp[0] == ?3
384
+ resp = sendcmd('PASS ' + passwd)
385
+ end
386
+ if resp[0] == ?3
387
+ resp = sendcmd('ACCT ' + acct)
388
+ end
389
+ end
390
+ if resp[0] != ?2
391
+ raise FTPReplyError, resp
392
+ end
393
+ @welcome = resp
394
+ end
395
+
396
+ #
397
+ # Puts the connection into binary (image) mode, issues the given command,
398
+ # and fetches the data returned, passing it to the associated block in
399
+ # chunks of +blocksize+ characters. Note that +cmd+ is a server command
400
+ # (such as "RETR myfile").
401
+ #
402
+ def retrbinary(cmd, blocksize, rest_offset = nil) # :yield: data
403
+ synchronize do
404
+ voidcmd("TYPE I")
405
+ conn = transfercmd(cmd, rest_offset)
406
+ loop do
407
+ data = conn.read(blocksize)
408
+ break if data == nil
409
+ yield(data)
410
+ end
411
+ conn.close
412
+ voidresp
413
+ end
414
+ end
415
+
416
+ #
417
+ # Puts the connection into ASCII (text) mode, issues the given command, and
418
+ # passes the resulting data, one line at a time, to the associated block. If
419
+ # no block is given, prints the lines. Note that +cmd+ is a server command
420
+ # (such as "RETR myfile").
421
+ #
422
+ def retrlines(cmd) # :yield: line
423
+ synchronize do
424
+ voidcmd("TYPE A")
425
+ conn = transfercmd(cmd)
426
+ loop do
427
+ line = conn.gets
428
+ break if line == nil
429
+ if line[-2, 2] == CRLF
430
+ line = line[0 .. -3]
431
+ elsif line[-1] == ?\n
432
+ line = line[0 .. -2]
433
+ end
434
+ yield(line)
435
+ end
436
+ conn.close
437
+ voidresp
438
+ end
439
+ end
440
+
441
+ #
442
+ # Puts the connection into binary (image) mode, issues the given server-side
443
+ # command (such as "STOR myfile"), and sends the contents of the file named
444
+ # +file+ to the server. If the optional block is given, it also passes it
445
+ # the data, in chunks of +blocksize+ characters.
446
+ #
447
+ def storbinary(cmd, file, blocksize, rest_offset = nil, &block) # :yield: data
448
+ if rest_offset
449
+ file.seek(rest_offset, IO::SEEK_SET)
450
+ end
451
+ synchronize do
452
+ voidcmd("TYPE I")
453
+ conn = transfercmd(cmd, rest_offset)
454
+ loop do
455
+ buf = file.read(blocksize)
456
+ break if buf == nil
457
+ conn.write(buf)
458
+ yield(buf) if block
459
+ end
460
+ conn.close
461
+ voidresp
462
+ end
463
+ end
464
+
465
+ #
466
+ # Puts the connection into ASCII (text) mode, issues the given server-side
467
+ # command (such as "STOR myfile"), and sends the contents of the file
468
+ # named +file+ to the server, one line at a time. If the optional block is
469
+ # given, it also passes it the lines.
470
+ #
471
+ def storlines(cmd, file, &block) # :yield: line
472
+ synchronize do
473
+ voidcmd("TYPE A")
474
+ conn = transfercmd(cmd)
475
+ loop do
476
+ buf = file.gets
477
+ break if buf == nil
478
+ if buf[-2, 2] != CRLF
479
+ buf = buf.chomp + CRLF
480
+ end
481
+ conn.write(buf)
482
+ yield(buf) if block
483
+ end
484
+ conn.close
485
+ voidresp
486
+ end
487
+ end
488
+
489
+ #
490
+ # Retrieves +remotefile+ in binary mode, storing the result in +localfile+.
491
+ # If a block is supplied, it is passed the retrieved data in +blocksize+
492
+ # chunks.
493
+ #
494
+ def getbinaryfile(remotefile, localfile = File.basename(remotefile),
495
+ blocksize = DEFAULT_BLOCKSIZE, &block) # :yield: data
496
+ if @resume
497
+ rest_offset = File.size?(localfile)
498
+ f = open(localfile, "a")
499
+ else
500
+ rest_offset = nil
501
+ f = open(localfile, "w")
502
+ end
503
+ begin
504
+ f.binmode
505
+ retrbinary("RETR " + remotefile, blocksize, rest_offset) do |data|
506
+ f.write(data)
507
+ yield(data) if block
508
+ end
509
+ ensure
510
+ f.close
511
+ end
512
+ end
513
+
514
+ #
515
+ # Retrieves +remotefile+ in ASCII (text) mode, storing the result in
516
+ # +localfile+. If a block is supplied, it is passed the retrieved data one
517
+ # line at a time.
518
+ #
519
+ def gettextfile(remotefile, localfile = File.basename(remotefile), &block) # :yield: line
520
+ f = open(localfile, "w")
521
+ begin
522
+ retrlines("RETR " + remotefile) do |line|
523
+ f.puts(line)
524
+ yield(line) if block
525
+ end
526
+ ensure
527
+ f.close
528
+ end
529
+ end
530
+
531
+ #
532
+ # Retrieves +remotefile+ in whatever mode the session is set (text or
533
+ # binary). See #gettextfile and #getbinaryfile.
534
+ #
535
+ def get(remotefile, localfile = File.basename(remotefile),
536
+ blocksize = DEFAULT_BLOCKSIZE, &block) # :yield: data
537
+ unless @binary
538
+ gettextfile(remotefile, localfile, &block)
539
+ else
540
+ getbinaryfile(remotefile, localfile, blocksize, &block)
541
+ end
542
+ end
543
+
544
+ #
545
+ # Transfers +localfile+ to the server in binary mode, storing the result in
546
+ # +remotefile+. If a block is supplied, calls it, passing in the transmitted
547
+ # data in +blocksize+ chunks.
548
+ #
549
+ def putbinaryfile(localfile, remotefile = File.basename(localfile),
550
+ blocksize = DEFAULT_BLOCKSIZE, &block) # :yield: data
551
+ if @resume
552
+ begin
553
+ rest_offset = size(remotefile)
554
+ rescue Net::FTPPermError
555
+ rest_offset = nil
556
+ end
557
+ else
558
+ rest_offset = nil
559
+ end
560
+ f = open(localfile)
561
+ begin
562
+ f.binmode
563
+ storbinary("STOR " + remotefile, f, blocksize, rest_offset, &block)
564
+ ensure
565
+ f.close
566
+ end
567
+ end
568
+
569
+ #
570
+ # Transfers +localfile+ to the server in ASCII (text) mode, storing the result
571
+ # in +remotefile+. If callback or an associated block is supplied, calls it,
572
+ # passing in the transmitted data one line at a time.
573
+ #
574
+ def puttextfile(localfile, remotefile = File.basename(localfile), &block) # :yield: line
575
+ f = open(localfile)
576
+ begin
577
+ storlines("STOR " + remotefile, f, &block)
578
+ ensure
579
+ f.close
580
+ end
581
+ end
582
+
583
+ #
584
+ # Transfers +localfile+ to the server in whatever mode the session is set
585
+ # (text or binary). See #puttextfile and #putbinaryfile.
586
+ #
587
+ def put(localfile, remotefile = File.basename(localfile),
588
+ blocksize = DEFAULT_BLOCKSIZE, &block)
589
+ unless @binary
590
+ puttextfile(localfile, remotefile, &block)
591
+ else
592
+ putbinaryfile(localfile, remotefile, blocksize, &block)
593
+ end
594
+ end
595
+
596
+ #
597
+ # Sends the ACCT command. TODO: more info.
598
+ #
599
+ def acct(account)
600
+ cmd = "ACCT " + account
601
+ voidcmd(cmd)
602
+ end
603
+
604
+ #
605
+ # Returns an array of filenames in the remote directory.
606
+ #
607
+ def nlst(dir = nil)
608
+ cmd = "NLST"
609
+ if dir
610
+ cmd = cmd + " " + dir
611
+ end
612
+ files = []
613
+ retrlines(cmd) do |line|
614
+ files.push(line)
615
+ end
616
+ return files
617
+ end
618
+
619
+ #
620
+ # Returns an array of file information in the directory (the output is like
621
+ # `ls -l`). If a block is given, it iterates through the listing.
622
+ #
623
+ def list(*args, &block) # :yield: line
624
+ cmd = "LIST"
625
+ args.each do |arg|
626
+ cmd = cmd + " " + arg
627
+ end
628
+ if block
629
+ retrlines(cmd, &block)
630
+ else
631
+ lines = []
632
+ retrlines(cmd) do |line|
633
+ lines << line
634
+ end
635
+ return lines
636
+ end
637
+ end
638
+ alias ls list
639
+ alias dir list
640
+
641
+ #
642
+ # Renames a file on the server.
643
+ #
644
+ def rename(fromname, toname)
645
+ resp = sendcmd("RNFR " + fromname)
646
+ if resp[0] != ?3
647
+ raise FTPReplyError, resp
648
+ end
649
+ voidcmd("RNTO " + toname)
650
+ end
651
+
652
+ #
653
+ # Deletes a file on the server.
654
+ #
655
+ def delete(filename)
656
+ resp = sendcmd("DELE " + filename)
657
+ if resp[0, 3] == "250"
658
+ return
659
+ elsif resp[0] == ?5
660
+ raise FTPPermError, resp
661
+ else
662
+ raise FTPReplyError, resp
663
+ end
664
+ end
665
+
666
+ #
667
+ # Changes the (remote) directory.
668
+ #
669
+ def chdir(dirname)
670
+ if dirname == ".."
671
+ begin
672
+ voidcmd("CDUP")
673
+ return
674
+ rescue FTPPermError
675
+ if $![0, 3] != "500"
676
+ raise FTPPermError, $!
677
+ end
678
+ end
679
+ end
680
+ cmd = "CWD " + dirname
681
+ voidcmd(cmd)
682
+ end
683
+
684
+ #
685
+ # Returns the size of the given (remote) filename.
686
+ #
687
+ def size(filename)
688
+ voidcmd("TYPE I")
689
+ resp = sendcmd("SIZE " + filename)
690
+ if resp[0, 3] != "213"
691
+ raise FTPReplyError, resp
692
+ end
693
+ return resp[3..-1].strip.to_i
694
+ end
695
+
696
+ MDTM_REGEXP = /^(\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)/ # :nodoc:
697
+
698
+ #
699
+ # Returns the last modification time of the (remote) file. If +local+ is
700
+ # +true+, it is returned as a local time, otherwise it's a UTC time.
701
+ #
702
+ def mtime(filename, local = false)
703
+ str = mdtm(filename)
704
+ ary = str.scan(MDTM_REGEXP)[0].collect {|i| i.to_i}
705
+ return local ? Time.local(*ary) : Time.gm(*ary)
706
+ end
707
+
708
+ #
709
+ # Creates a remote directory.
710
+ #
711
+ def mkdir(dirname)
712
+ resp = sendcmd("MKD " + dirname)
713
+ return parse257(resp)
714
+ end
715
+
716
+ #
717
+ # Removes a remote directory.
718
+ #
719
+ def rmdir(dirname)
720
+ voidcmd("RMD " + dirname)
721
+ end
722
+
723
+ #
724
+ # Returns the current remote directory.
725
+ #
726
+ def pwd
727
+ resp = sendcmd("PWD")
728
+ return parse257(resp)
729
+ end
730
+ alias getdir pwd
731
+
732
+ #
733
+ # Returns system information.
734
+ #
735
+ def system
736
+ resp = sendcmd("SYST")
737
+ if resp[0, 3] != "215"
738
+ raise FTPReplyError, resp
739
+ end
740
+ return resp[4 .. -1]
741
+ end
742
+
743
+ #
744
+ # Aborts the previous command (ABOR command).
745
+ #
746
+ def abort
747
+ line = "ABOR" + CRLF
748
+ print "put: ABOR\n" if @debug_mode
749
+ @sock.send(line, Socket::MSG_OOB)
750
+ resp = getmultiline
751
+ unless ["426", "226", "225"].include?(resp[0, 3])
752
+ raise FTPProtoError, resp
753
+ end
754
+ return resp
755
+ end
756
+
757
+ #
758
+ # Returns the status (STAT command).
759
+ #
760
+ def status
761
+ line = "STAT" + CRLF
762
+ print "put: STAT\n" if @debug_mode
763
+ @sock.send(line, Socket::MSG_OOB)
764
+ return getresp
765
+ end
766
+
767
+ #
768
+ # Issues the MDTM command. TODO: more info.
769
+ #
770
+ def mdtm(filename)
771
+ resp = sendcmd("MDTM " + filename)
772
+ if resp[0, 3] == "213"
773
+ return resp[3 .. -1].strip
774
+ end
775
+ end
776
+
777
+ #
778
+ # Issues the HELP command.
779
+ #
780
+ def help(arg = nil)
781
+ cmd = "HELP"
782
+ if arg
783
+ cmd = cmd + " " + arg
784
+ end
785
+ sendcmd(cmd)
786
+ end
787
+
788
+ #
789
+ # Exits the FTP session.
790
+ #
791
+ def quit
792
+ voidcmd("QUIT")
793
+ end
794
+
795
+ #
796
+ # Issues a NOOP command.
797
+ #
798
+ def noop
799
+ voidcmd("NOOP")
800
+ end
801
+
802
+ #
803
+ # Issues a SITE command.
804
+ #
805
+ def site(arg)
806
+ cmd = "SITE " + arg
807
+ voidcmd(cmd)
808
+ end
809
+
810
+ #
811
+ # Closes the connection. Further operations are impossible until you open
812
+ # a new connection with #connect.
813
+ #
814
+ def close
815
+ @sock.close if @sock and not @sock.closed?
816
+ end
817
+
818
+ #
819
+ # Returns +true+ iff the connection is closed.
820
+ #
821
+ def closed?
822
+ @sock == nil or @sock.closed?
823
+ end
824
+
825
+ def parse227(resp)
826
+ if resp[0, 3] != "227"
827
+ raise FTPReplyError, resp
828
+ end
829
+ left = resp.index("(")
830
+ right = resp.index(")")
831
+ if left == nil or right == nil
832
+ raise FTPProtoError, resp
833
+ end
834
+ numbers = resp[left + 1 .. right - 1].split(",")
835
+ if numbers.length != 6
836
+ raise FTPProtoError, resp
837
+ end
838
+ host = numbers[0, 4].join(".")
839
+ port = (numbers[4].to_i << 8) + numbers[5].to_i
840
+ return host, port
841
+ end
842
+ private :parse227
843
+
844
+ def parse228(resp)
845
+ if resp[0, 3] != "228"
846
+ raise FTPReplyError, resp
847
+ end
848
+ left = resp.index("(")
849
+ right = resp.index(")")
850
+ if left == nil or right == nil
851
+ raise FTPProtoError, resp
852
+ end
853
+ numbers = resp[left + 1 .. right - 1].split(",")
854
+ if numbers[0] == "4"
855
+ if numbers.length != 9 || numbers[1] != "4" || numbers[2 + 4] != "2"
856
+ raise FTPProtoError, resp
857
+ end
858
+ host = numbers[2, 4].join(".")
859
+ port = (numbers[7].to_i << 8) + numbers[8].to_i
860
+ elsif numbers[0] == "6"
861
+ if numbers.length != 21 || numbers[1] != "16" || numbers[2 + 16] != "2"
862
+ raise FTPProtoError, resp
863
+ end
864
+ v6 = ["", "", "", "", "", "", "", ""]
865
+ for i in 0 .. 7
866
+ v6[i] = sprintf("%02x%02x", numbers[(i * 2) + 2].to_i,
867
+ numbers[(i * 2) + 3].to_i)
868
+ end
869
+ host = v6[0, 8].join(":")
870
+ port = (numbers[19].to_i << 8) + numbers[20].to_i
871
+ end
872
+ return host, port
873
+ end
874
+ private :parse228
875
+
876
+ def parse229(resp)
877
+ if resp[0, 3] != "229"
878
+ raise FTPReplyError, resp
879
+ end
880
+ left = resp.index("(")
881
+ right = resp.index(")")
882
+ if left == nil or right == nil
883
+ raise FTPProtoError, resp
884
+ end
885
+ numbers = resp[left + 1 .. right - 1].split(resp[left + 1, 1])
886
+ if numbers.length != 4
887
+ raise FTPProtoError, resp
888
+ end
889
+ port = numbers[3].to_i
890
+ host = (@sock.peeraddr())[3]
891
+ return host, port
892
+ end
893
+ private :parse229
894
+
895
+ def parse257(resp)
896
+ if resp[0, 3] != "257"
897
+ raise FTPReplyError, resp
898
+ end
899
+ if resp[3, 2] != ' "'
900
+ return ""
901
+ end
902
+ dirname = ""
903
+ i = 5
904
+ n = resp.length
905
+ while i < n
906
+ c = resp[i, 1]
907
+ i = i + 1
908
+ if c == '"'
909
+ if i > n or resp[i, 1] != '"'
910
+ break
911
+ end
912
+ i = i + 1
913
+ end
914
+ dirname = dirname + c
915
+ end
916
+ return dirname
917
+ end
918
+ private :parse257
919
+ end
920
+
921
+ end
922
+
923
+
924
+ # Documentation comments:
925
+ # - sourced from pickaxe and nutshell, with improvements (hopefully)
926
+ # - three methods should be private (search WRITEME)
927
+ # - two methods need more information (search TODO)