ruby_on_ruby 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (493) hide show
  1. data/.gitignore +18 -0
  2. data/.rvmrc +1 -0
  3. data/Gemfile +6 -0
  4. data/LICENSE +22 -0
  5. data/README.md +66 -0
  6. data/Rakefile +1 -0
  7. data/lib/ruby_on_ruby.rb +5 -0
  8. data/lib/ruby_on_ruby/console.rb +7 -0
  9. data/lib/ruby_on_ruby/context.rb +33 -0
  10. data/lib/ruby_on_ruby/file_loader.rb +31 -0
  11. data/lib/ruby_on_ruby/ruby_stream.rb +27 -0
  12. data/lib/ruby_on_ruby/version.rb +3 -0
  13. data/lib/rubyonruby.rb +1 -0
  14. data/ruby_in_ruby.gemspec +19 -0
  15. data/vendor/javascripts/emscripted-ruby/lib/.document +106 -0
  16. data/vendor/javascripts/emscripted-ruby/lib/English.rb +155 -0
  17. data/vendor/javascripts/emscripted-ruby/lib/Env.rb +18 -0
  18. data/vendor/javascripts/emscripted-ruby/lib/README +96 -0
  19. data/vendor/javascripts/emscripted-ruby/lib/abbrev.rb +103 -0
  20. data/vendor/javascripts/emscripted-ruby/lib/base64.rb +133 -0
  21. data/vendor/javascripts/emscripted-ruby/lib/benchmark.rb +572 -0
  22. data/vendor/javascripts/emscripted-ruby/lib/cgi-lib.rb +272 -0
  23. data/vendor/javascripts/emscripted-ruby/lib/cgi.rb +2308 -0
  24. data/vendor/javascripts/emscripted-ruby/lib/cgi/.document +2 -0
  25. data/vendor/javascripts/emscripted-ruby/lib/cgi/session.rb +498 -0
  26. data/vendor/javascripts/emscripted-ruby/lib/cgi/session/pstore.rb +111 -0
  27. data/vendor/javascripts/emscripted-ruby/lib/complex.rb +663 -0
  28. data/vendor/javascripts/emscripted-ruby/lib/csv.rb +992 -0
  29. data/vendor/javascripts/emscripted-ruby/lib/date.rb +1767 -0
  30. data/vendor/javascripts/emscripted-ruby/lib/date/format.rb +1190 -0
  31. data/vendor/javascripts/emscripted-ruby/lib/date2.rb +5 -0
  32. data/vendor/javascripts/emscripted-ruby/lib/debug.rb +947 -0
  33. data/vendor/javascripts/emscripted-ruby/lib/delegate.rb +337 -0
  34. data/vendor/javascripts/emscripted-ruby/lib/drb.rb +2 -0
  35. data/vendor/javascripts/emscripted-ruby/lib/drb/acl.rb +146 -0
  36. data/vendor/javascripts/emscripted-ruby/lib/drb/drb.rb +1782 -0
  37. data/vendor/javascripts/emscripted-ruby/lib/drb/eq.rb +16 -0
  38. data/vendor/javascripts/emscripted-ruby/lib/drb/extserv.rb +64 -0
  39. data/vendor/javascripts/emscripted-ruby/lib/drb/extservm.rb +89 -0
  40. data/vendor/javascripts/emscripted-ruby/lib/drb/gw.rb +122 -0
  41. data/vendor/javascripts/emscripted-ruby/lib/drb/invokemethod.rb +36 -0
  42. data/vendor/javascripts/emscripted-ruby/lib/drb/observer.rb +22 -0
  43. data/vendor/javascripts/emscripted-ruby/lib/drb/ssl.rb +190 -0
  44. data/vendor/javascripts/emscripted-ruby/lib/drb/timeridconv.rb +91 -0
  45. data/vendor/javascripts/emscripted-ruby/lib/drb/unix.rb +108 -0
  46. data/vendor/javascripts/emscripted-ruby/lib/e2mmap.rb +195 -0
  47. data/vendor/javascripts/emscripted-ruby/lib/erb.rb +880 -0
  48. data/vendor/javascripts/emscripted-ruby/lib/eregex.rb +37 -0
  49. data/vendor/javascripts/emscripted-ruby/lib/fileutils.rb +1591 -0
  50. data/vendor/javascripts/emscripted-ruby/lib/finalize.rb +193 -0
  51. data/vendor/javascripts/emscripted-ruby/lib/find.rb +79 -0
  52. data/vendor/javascripts/emscripted-ruby/lib/forwardable.rb +218 -0
  53. data/vendor/javascripts/emscripted-ruby/lib/ftools.rb +261 -0
  54. data/vendor/javascripts/emscripted-ruby/lib/generator.rb +418 -0
  55. data/vendor/javascripts/emscripted-ruby/lib/getoptlong.rb +621 -0
  56. data/vendor/javascripts/emscripted-ruby/lib/getopts.rb +127 -0
  57. data/vendor/javascripts/emscripted-ruby/lib/gserver.rb +253 -0
  58. data/vendor/javascripts/emscripted-ruby/lib/importenv.rb +33 -0
  59. data/vendor/javascripts/emscripted-ruby/lib/ipaddr.rb +814 -0
  60. data/vendor/javascripts/emscripted-ruby/lib/irb.rb +346 -0
  61. data/vendor/javascripts/emscripted-ruby/lib/irb/cmd/chws.rb +33 -0
  62. data/vendor/javascripts/emscripted-ruby/lib/irb/cmd/fork.rb +39 -0
  63. data/vendor/javascripts/emscripted-ruby/lib/irb/cmd/help.rb +34 -0
  64. data/vendor/javascripts/emscripted-ruby/lib/irb/cmd/load.rb +67 -0
  65. data/vendor/javascripts/emscripted-ruby/lib/irb/cmd/nop.rb +39 -0
  66. data/vendor/javascripts/emscripted-ruby/lib/irb/cmd/pushws.rb +39 -0
  67. data/vendor/javascripts/emscripted-ruby/lib/irb/cmd/subirb.rb +43 -0
  68. data/vendor/javascripts/emscripted-ruby/lib/irb/completion.rb +205 -0
  69. data/vendor/javascripts/emscripted-ruby/lib/irb/context.rb +255 -0
  70. data/vendor/javascripts/emscripted-ruby/lib/irb/ext/change-ws.rb +62 -0
  71. data/vendor/javascripts/emscripted-ruby/lib/irb/ext/history.rb +110 -0
  72. data/vendor/javascripts/emscripted-ruby/lib/irb/ext/loader.rb +120 -0
  73. data/vendor/javascripts/emscripted-ruby/lib/irb/ext/math-mode.rb +37 -0
  74. data/vendor/javascripts/emscripted-ruby/lib/irb/ext/multi-irb.rb +241 -0
  75. data/vendor/javascripts/emscripted-ruby/lib/irb/ext/save-history.rb +85 -0
  76. data/vendor/javascripts/emscripted-ruby/lib/irb/ext/tracer.rb +61 -0
  77. data/vendor/javascripts/emscripted-ruby/lib/irb/ext/use-loader.rb +65 -0
  78. data/vendor/javascripts/emscripted-ruby/lib/irb/ext/workspaces.rb +56 -0
  79. data/vendor/javascripts/emscripted-ruby/lib/irb/extend-command.rb +264 -0
  80. data/vendor/javascripts/emscripted-ruby/lib/irb/frame.rb +67 -0
  81. data/vendor/javascripts/emscripted-ruby/lib/irb/help.rb +33 -0
  82. data/vendor/javascripts/emscripted-ruby/lib/irb/init.rb +259 -0
  83. data/vendor/javascripts/emscripted-ruby/lib/irb/input-method.rb +120 -0
  84. data/vendor/javascripts/emscripted-ruby/lib/irb/lc/error.rb +30 -0
  85. data/vendor/javascripts/emscripted-ruby/lib/irb/lc/help-message +35 -0
  86. data/vendor/javascripts/emscripted-ruby/lib/irb/lc/ja/error.rb +27 -0
  87. data/vendor/javascripts/emscripted-ruby/lib/irb/lc/ja/help-message +36 -0
  88. data/vendor/javascripts/emscripted-ruby/lib/irb/locale.rb +184 -0
  89. data/vendor/javascripts/emscripted-ruby/lib/irb/notifier.rb +145 -0
  90. data/vendor/javascripts/emscripted-ruby/lib/irb/output-method.rb +85 -0
  91. data/vendor/javascripts/emscripted-ruby/lib/irb/ruby-lex.rb +1149 -0
  92. data/vendor/javascripts/emscripted-ruby/lib/irb/ruby-token.rb +273 -0
  93. data/vendor/javascripts/emscripted-ruby/lib/irb/slex.rb +285 -0
  94. data/vendor/javascripts/emscripted-ruby/lib/irb/version.rb +16 -0
  95. data/vendor/javascripts/emscripted-ruby/lib/irb/workspace.rb +107 -0
  96. data/vendor/javascripts/emscripted-ruby/lib/irb/ws-for-case-2.rb +15 -0
  97. data/vendor/javascripts/emscripted-ruby/lib/irb/xmp.rb +86 -0
  98. data/vendor/javascripts/emscripted-ruby/lib/jcode.rb +220 -0
  99. data/vendor/javascripts/emscripted-ruby/lib/logger.rb +703 -0
  100. data/vendor/javascripts/emscripted-ruby/lib/mailread.rb +62 -0
  101. data/vendor/javascripts/emscripted-ruby/lib/mathn.rb +308 -0
  102. data/vendor/javascripts/emscripted-ruby/lib/matrix.rb +1278 -0
  103. data/vendor/javascripts/emscripted-ruby/lib/mkmf.rb +1811 -0
  104. data/vendor/javascripts/emscripted-ruby/lib/monitor.rb +352 -0
  105. data/vendor/javascripts/emscripted-ruby/lib/mutex_m.rb +122 -0
  106. data/vendor/javascripts/emscripted-ruby/lib/net/ftp.rb +927 -0
  107. data/vendor/javascripts/emscripted-ruby/lib/net/http.rb +2277 -0
  108. data/vendor/javascripts/emscripted-ruby/lib/net/https.rb +173 -0
  109. data/vendor/javascripts/emscripted-ruby/lib/net/imap.rb +3371 -0
  110. data/vendor/javascripts/emscripted-ruby/lib/net/pop.rb +999 -0
  111. data/vendor/javascripts/emscripted-ruby/lib/net/protocol.rb +392 -0
  112. data/vendor/javascripts/emscripted-ruby/lib/net/smtp.rb +1014 -0
  113. data/vendor/javascripts/emscripted-ruby/lib/net/telnet.rb +756 -0
  114. data/vendor/javascripts/emscripted-ruby/lib/observer.rb +192 -0
  115. data/vendor/javascripts/emscripted-ruby/lib/open-uri.rb +678 -0
  116. data/vendor/javascripts/emscripted-ruby/lib/open3.rb +101 -0
  117. data/vendor/javascripts/emscripted-ruby/lib/optparse.rb +1790 -0
  118. data/vendor/javascripts/emscripted-ruby/lib/optparse/date.rb +17 -0
  119. data/vendor/javascripts/emscripted-ruby/lib/optparse/shellwords.rb +6 -0
  120. data/vendor/javascripts/emscripted-ruby/lib/optparse/time.rb +10 -0
  121. data/vendor/javascripts/emscripted-ruby/lib/optparse/uri.rb +6 -0
  122. data/vendor/javascripts/emscripted-ruby/lib/optparse/version.rb +70 -0
  123. data/vendor/javascripts/emscripted-ruby/lib/ostruct.rb +146 -0
  124. data/vendor/javascripts/emscripted-ruby/lib/parsearg.rb +87 -0
  125. data/vendor/javascripts/emscripted-ruby/lib/parsedate.rb +53 -0
  126. data/vendor/javascripts/emscripted-ruby/lib/pathname.rb +1062 -0
  127. data/vendor/javascripts/emscripted-ruby/lib/ping.rb +64 -0
  128. data/vendor/javascripts/emscripted-ruby/lib/pp.rb +654 -0
  129. data/vendor/javascripts/emscripted-ruby/lib/prettyprint.rb +896 -0
  130. data/vendor/javascripts/emscripted-ruby/lib/profile.rb +6 -0
  131. data/vendor/javascripts/emscripted-ruby/lib/profiler.rb +59 -0
  132. data/vendor/javascripts/emscripted-ruby/lib/pstore.rb +395 -0
  133. data/vendor/javascripts/emscripted-ruby/lib/racc/parser.rb +442 -0
  134. data/vendor/javascripts/emscripted-ruby/lib/rational.rb +564 -0
  135. data/vendor/javascripts/emscripted-ruby/lib/readbytes.rb +41 -0
  136. data/vendor/javascripts/emscripted-ruby/lib/resolv-replace.rb +62 -0
  137. data/vendor/javascripts/emscripted-ruby/lib/resolv.rb +2210 -0
  138. data/vendor/javascripts/emscripted-ruby/lib/rexml/attlistdecl.rb +62 -0
  139. data/vendor/javascripts/emscripted-ruby/lib/rexml/attribute.rb +185 -0
  140. data/vendor/javascripts/emscripted-ruby/lib/rexml/cdata.rb +67 -0
  141. data/vendor/javascripts/emscripted-ruby/lib/rexml/child.rb +96 -0
  142. data/vendor/javascripts/emscripted-ruby/lib/rexml/comment.rb +80 -0
  143. data/vendor/javascripts/emscripted-ruby/lib/rexml/doctype.rb +271 -0
  144. data/vendor/javascripts/emscripted-ruby/lib/rexml/document.rb +208 -0
  145. data/vendor/javascripts/emscripted-ruby/lib/rexml/dtd/attlistdecl.rb +10 -0
  146. data/vendor/javascripts/emscripted-ruby/lib/rexml/dtd/dtd.rb +51 -0
  147. data/vendor/javascripts/emscripted-ruby/lib/rexml/dtd/elementdecl.rb +17 -0
  148. data/vendor/javascripts/emscripted-ruby/lib/rexml/dtd/entitydecl.rb +56 -0
  149. data/vendor/javascripts/emscripted-ruby/lib/rexml/dtd/notationdecl.rb +39 -0
  150. data/vendor/javascripts/emscripted-ruby/lib/rexml/element.rb +1227 -0
  151. data/vendor/javascripts/emscripted-ruby/lib/rexml/encoding.rb +71 -0
  152. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/CP-1252.rb +103 -0
  153. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/EUC-JP.rb +35 -0
  154. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/ICONV.rb +22 -0
  155. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/ISO-8859-1.rb +7 -0
  156. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/ISO-8859-15.rb +72 -0
  157. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/SHIFT-JIS.rb +37 -0
  158. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/SHIFT_JIS.rb +1 -0
  159. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/UNILE.rb +34 -0
  160. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/US-ASCII.rb +30 -0
  161. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/UTF-16.rb +35 -0
  162. data/vendor/javascripts/emscripted-ruby/lib/rexml/encodings/UTF-8.rb +18 -0
  163. data/vendor/javascripts/emscripted-ruby/lib/rexml/entity.rb +165 -0
  164. data/vendor/javascripts/emscripted-ruby/lib/rexml/formatters/default.rb +109 -0
  165. data/vendor/javascripts/emscripted-ruby/lib/rexml/formatters/pretty.rb +137 -0
  166. data/vendor/javascripts/emscripted-ruby/lib/rexml/formatters/transitive.rb +56 -0
  167. data/vendor/javascripts/emscripted-ruby/lib/rexml/functions.rb +382 -0
  168. data/vendor/javascripts/emscripted-ruby/lib/rexml/instruction.rb +70 -0
  169. data/vendor/javascripts/emscripted-ruby/lib/rexml/light/node.rb +196 -0
  170. data/vendor/javascripts/emscripted-ruby/lib/rexml/namespace.rb +47 -0
  171. data/vendor/javascripts/emscripted-ruby/lib/rexml/node.rb +75 -0
  172. data/vendor/javascripts/emscripted-ruby/lib/rexml/output.rb +24 -0
  173. data/vendor/javascripts/emscripted-ruby/lib/rexml/parent.rb +166 -0
  174. data/vendor/javascripts/emscripted-ruby/lib/rexml/parseexception.rb +51 -0
  175. data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/baseparser.rb +503 -0
  176. data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/lightparser.rb +60 -0
  177. data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/pullparser.rb +196 -0
  178. data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/sax2parser.rb +238 -0
  179. data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/streamparser.rb +46 -0
  180. data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/treeparser.rb +97 -0
  181. data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/ultralightparser.rb +56 -0
  182. data/vendor/javascripts/emscripted-ruby/lib/rexml/parsers/xpathparser.rb +698 -0
  183. data/vendor/javascripts/emscripted-ruby/lib/rexml/quickpath.rb +266 -0
  184. data/vendor/javascripts/emscripted-ruby/lib/rexml/rexml.rb +32 -0
  185. data/vendor/javascripts/emscripted-ruby/lib/rexml/sax2listener.rb +97 -0
  186. data/vendor/javascripts/emscripted-ruby/lib/rexml/source.rb +251 -0
  187. data/vendor/javascripts/emscripted-ruby/lib/rexml/streamlistener.rb +92 -0
  188. data/vendor/javascripts/emscripted-ruby/lib/rexml/syncenumerator.rb +33 -0
  189. data/vendor/javascripts/emscripted-ruby/lib/rexml/text.rb +344 -0
  190. data/vendor/javascripts/emscripted-ruby/lib/rexml/undefinednamespaceexception.rb +8 -0
  191. data/vendor/javascripts/emscripted-ruby/lib/rexml/validation/relaxng.rb +559 -0
  192. data/vendor/javascripts/emscripted-ruby/lib/rexml/validation/validation.rb +155 -0
  193. data/vendor/javascripts/emscripted-ruby/lib/rexml/validation/validationexception.rb +9 -0
  194. data/vendor/javascripts/emscripted-ruby/lib/rexml/xmldecl.rb +119 -0
  195. data/vendor/javascripts/emscripted-ruby/lib/rexml/xmltokens.rb +18 -0
  196. data/vendor/javascripts/emscripted-ruby/lib/rexml/xpath.rb +66 -0
  197. data/vendor/javascripts/emscripted-ruby/lib/rexml/xpath_parser.rb +792 -0
  198. data/vendor/javascripts/emscripted-ruby/lib/rinda/rinda.rb +283 -0
  199. data/vendor/javascripts/emscripted-ruby/lib/rinda/ring.rb +271 -0
  200. data/vendor/javascripts/emscripted-ruby/lib/rinda/tuplespace.rb +642 -0
  201. data/vendor/javascripts/emscripted-ruby/lib/rss.rb +19 -0
  202. data/vendor/javascripts/emscripted-ruby/lib/rss/0.9.rb +428 -0
  203. data/vendor/javascripts/emscripted-ruby/lib/rss/1.0.rb +452 -0
  204. data/vendor/javascripts/emscripted-ruby/lib/rss/2.0.rb +111 -0
  205. data/vendor/javascripts/emscripted-ruby/lib/rss/atom.rb +749 -0
  206. data/vendor/javascripts/emscripted-ruby/lib/rss/content.rb +31 -0
  207. data/vendor/javascripts/emscripted-ruby/lib/rss/content/1.0.rb +10 -0
  208. data/vendor/javascripts/emscripted-ruby/lib/rss/content/2.0.rb +12 -0
  209. data/vendor/javascripts/emscripted-ruby/lib/rss/converter.rb +162 -0
  210. data/vendor/javascripts/emscripted-ruby/lib/rss/dublincore.rb +161 -0
  211. data/vendor/javascripts/emscripted-ruby/lib/rss/dublincore/1.0.rb +13 -0
  212. data/vendor/javascripts/emscripted-ruby/lib/rss/dublincore/2.0.rb +13 -0
  213. data/vendor/javascripts/emscripted-ruby/lib/rss/dublincore/atom.rb +17 -0
  214. data/vendor/javascripts/emscripted-ruby/lib/rss/image.rb +193 -0
  215. data/vendor/javascripts/emscripted-ruby/lib/rss/itunes.rb +410 -0
  216. data/vendor/javascripts/emscripted-ruby/lib/rss/maker.rb +44 -0
  217. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/0.9.rb +467 -0
  218. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/1.0.rb +434 -0
  219. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/2.0.rb +223 -0
  220. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/atom.rb +172 -0
  221. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/base.rb +868 -0
  222. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/content.rb +21 -0
  223. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/dublincore.rb +124 -0
  224. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/entry.rb +163 -0
  225. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/feed.rb +429 -0
  226. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/image.rb +111 -0
  227. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/itunes.rb +242 -0
  228. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/slash.rb +33 -0
  229. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/syndication.rb +18 -0
  230. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/taxonomy.rb +118 -0
  231. data/vendor/javascripts/emscripted-ruby/lib/rss/maker/trackback.rb +61 -0
  232. data/vendor/javascripts/emscripted-ruby/lib/rss/parser.rb +541 -0
  233. data/vendor/javascripts/emscripted-ruby/lib/rss/rexmlparser.rb +54 -0
  234. data/vendor/javascripts/emscripted-ruby/lib/rss/rss.rb +1312 -0
  235. data/vendor/javascripts/emscripted-ruby/lib/rss/slash.rb +49 -0
  236. data/vendor/javascripts/emscripted-ruby/lib/rss/syndication.rb +67 -0
  237. data/vendor/javascripts/emscripted-ruby/lib/rss/taxonomy.rb +145 -0
  238. data/vendor/javascripts/emscripted-ruby/lib/rss/trackback.rb +288 -0
  239. data/vendor/javascripts/emscripted-ruby/lib/rss/utils.rb +111 -0
  240. data/vendor/javascripts/emscripted-ruby/lib/rss/xml-stylesheet.rb +105 -0
  241. data/vendor/javascripts/emscripted-ruby/lib/rss/xml.rb +71 -0
  242. data/vendor/javascripts/emscripted-ruby/lib/rss/xmlparser.rb +93 -0
  243. data/vendor/javascripts/emscripted-ruby/lib/rss/xmlscanner.rb +121 -0
  244. data/vendor/javascripts/emscripted-ruby/lib/rubyunit.rb +6 -0
  245. data/vendor/javascripts/emscripted-ruby/lib/runit/assert.rb +73 -0
  246. data/vendor/javascripts/emscripted-ruby/lib/runit/cui/testrunner.rb +51 -0
  247. data/vendor/javascripts/emscripted-ruby/lib/runit/error.rb +9 -0
  248. data/vendor/javascripts/emscripted-ruby/lib/runit/testcase.rb +45 -0
  249. data/vendor/javascripts/emscripted-ruby/lib/runit/testresult.rb +44 -0
  250. data/vendor/javascripts/emscripted-ruby/lib/runit/testsuite.rb +26 -0
  251. data/vendor/javascripts/emscripted-ruby/lib/runit/topublic.rb +8 -0
  252. data/vendor/javascripts/emscripted-ruby/lib/scanf.rb +702 -0
  253. data/vendor/javascripts/emscripted-ruby/lib/securerandom.rb +137 -0
  254. data/vendor/javascripts/emscripted-ruby/lib/set.rb +1233 -0
  255. data/vendor/javascripts/emscripted-ruby/lib/shell.rb +269 -0
  256. data/vendor/javascripts/emscripted-ruby/lib/shell/builtin-command.rb +154 -0
  257. data/vendor/javascripts/emscripted-ruby/lib/shell/command-processor.rb +592 -0
  258. data/vendor/javascripts/emscripted-ruby/lib/shell/error.rb +26 -0
  259. data/vendor/javascripts/emscripted-ruby/lib/shell/filter.rb +110 -0
  260. data/vendor/javascripts/emscripted-ruby/lib/shell/process-controller.rb +260 -0
  261. data/vendor/javascripts/emscripted-ruby/lib/shell/system-command.rb +168 -0
  262. data/vendor/javascripts/emscripted-ruby/lib/shell/version.rb +16 -0
  263. data/vendor/javascripts/emscripted-ruby/lib/shellwords.rb +172 -0
  264. data/vendor/javascripts/emscripted-ruby/lib/singleton.rb +360 -0
  265. data/vendor/javascripts/emscripted-ruby/lib/soap/attachment.rb +107 -0
  266. data/vendor/javascripts/emscripted-ruby/lib/soap/baseData.rb +942 -0
  267. data/vendor/javascripts/emscripted-ruby/lib/soap/element.rb +258 -0
  268. data/vendor/javascripts/emscripted-ruby/lib/soap/encodingstyle/aspDotNetHandler.rb +213 -0
  269. data/vendor/javascripts/emscripted-ruby/lib/soap/encodingstyle/handler.rb +100 -0
  270. data/vendor/javascripts/emscripted-ruby/lib/soap/encodingstyle/literalHandler.rb +226 -0
  271. data/vendor/javascripts/emscripted-ruby/lib/soap/encodingstyle/soapHandler.rb +582 -0
  272. data/vendor/javascripts/emscripted-ruby/lib/soap/generator.rb +268 -0
  273. data/vendor/javascripts/emscripted-ruby/lib/soap/header/handler.rb +57 -0
  274. data/vendor/javascripts/emscripted-ruby/lib/soap/header/handlerset.rb +70 -0
  275. data/vendor/javascripts/emscripted-ruby/lib/soap/header/simplehandler.rb +44 -0
  276. data/vendor/javascripts/emscripted-ruby/lib/soap/httpconfigloader.rb +119 -0
  277. data/vendor/javascripts/emscripted-ruby/lib/soap/mapping.rb +10 -0
  278. data/vendor/javascripts/emscripted-ruby/lib/soap/mapping/factory.rb +355 -0
  279. data/vendor/javascripts/emscripted-ruby/lib/soap/mapping/mapping.rb +381 -0
  280. data/vendor/javascripts/emscripted-ruby/lib/soap/mapping/registry.rb +541 -0
  281. data/vendor/javascripts/emscripted-ruby/lib/soap/mapping/rubytypeFactory.rb +475 -0
  282. data/vendor/javascripts/emscripted-ruby/lib/soap/mapping/typeMap.rb +50 -0
  283. data/vendor/javascripts/emscripted-ruby/lib/soap/mapping/wsdlencodedregistry.rb +280 -0
  284. data/vendor/javascripts/emscripted-ruby/lib/soap/mapping/wsdlliteralregistry.rb +418 -0
  285. data/vendor/javascripts/emscripted-ruby/lib/soap/marshal.rb +59 -0
  286. data/vendor/javascripts/emscripted-ruby/lib/soap/mimemessage.rb +240 -0
  287. data/vendor/javascripts/emscripted-ruby/lib/soap/netHttpClient.rb +190 -0
  288. data/vendor/javascripts/emscripted-ruby/lib/soap/parser.rb +251 -0
  289. data/vendor/javascripts/emscripted-ruby/lib/soap/processor.rb +66 -0
  290. data/vendor/javascripts/emscripted-ruby/lib/soap/property.rb +333 -0
  291. data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/cgistub.rb +206 -0
  292. data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/driver.rb +254 -0
  293. data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/element.rb +325 -0
  294. data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/httpserver.rb +129 -0
  295. data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/proxy.rb +497 -0
  296. data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/router.rb +594 -0
  297. data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/rpc.rb +25 -0
  298. data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/soaplet.rb +162 -0
  299. data/vendor/javascripts/emscripted-ruby/lib/soap/rpc/standaloneServer.rb +43 -0
  300. data/vendor/javascripts/emscripted-ruby/lib/soap/soap.rb +140 -0
  301. data/vendor/javascripts/emscripted-ruby/lib/soap/streamHandler.rb +229 -0
  302. data/vendor/javascripts/emscripted-ruby/lib/soap/wsdlDriver.rb +575 -0
  303. data/vendor/javascripts/emscripted-ruby/lib/sync.rb +311 -0
  304. data/vendor/javascripts/emscripted-ruby/lib/tempfile.rb +209 -0
  305. data/vendor/javascripts/emscripted-ruby/lib/test/unit.rb +280 -0
  306. data/vendor/javascripts/emscripted-ruby/lib/test/unit/assertionfailederror.rb +14 -0
  307. data/vendor/javascripts/emscripted-ruby/lib/test/unit/assertions.rb +622 -0
  308. data/vendor/javascripts/emscripted-ruby/lib/test/unit/autorunner.rb +220 -0
  309. data/vendor/javascripts/emscripted-ruby/lib/test/unit/collector.rb +43 -0
  310. data/vendor/javascripts/emscripted-ruby/lib/test/unit/collector/dir.rb +107 -0
  311. data/vendor/javascripts/emscripted-ruby/lib/test/unit/collector/objectspace.rb +34 -0
  312. data/vendor/javascripts/emscripted-ruby/lib/test/unit/error.rb +56 -0
  313. data/vendor/javascripts/emscripted-ruby/lib/test/unit/failure.rb +51 -0
  314. data/vendor/javascripts/emscripted-ruby/lib/test/unit/testcase.rb +160 -0
  315. data/vendor/javascripts/emscripted-ruby/lib/test/unit/testresult.rb +80 -0
  316. data/vendor/javascripts/emscripted-ruby/lib/test/unit/testsuite.rb +76 -0
  317. data/vendor/javascripts/emscripted-ruby/lib/test/unit/ui/console/testrunner.rb +127 -0
  318. data/vendor/javascripts/emscripted-ruby/lib/test/unit/ui/fox/testrunner.rb +268 -0
  319. data/vendor/javascripts/emscripted-ruby/lib/test/unit/ui/gtk/testrunner.rb +416 -0
  320. data/vendor/javascripts/emscripted-ruby/lib/test/unit/ui/gtk2/testrunner.rb +465 -0
  321. data/vendor/javascripts/emscripted-ruby/lib/test/unit/ui/testrunnermediator.rb +68 -0
  322. data/vendor/javascripts/emscripted-ruby/lib/test/unit/ui/testrunnerutilities.rb +46 -0
  323. data/vendor/javascripts/emscripted-ruby/lib/test/unit/ui/tk/testrunner.rb +260 -0
  324. data/vendor/javascripts/emscripted-ruby/lib/test/unit/util/backtracefilter.rb +40 -0
  325. data/vendor/javascripts/emscripted-ruby/lib/test/unit/util/observable.rb +90 -0
  326. data/vendor/javascripts/emscripted-ruby/lib/test/unit/util/procwrapper.rb +48 -0
  327. data/vendor/javascripts/emscripted-ruby/lib/thread.rb +479 -0
  328. data/vendor/javascripts/emscripted-ruby/lib/thwait.rb +169 -0
  329. data/vendor/javascripts/emscripted-ruby/lib/time.rb +797 -0
  330. data/vendor/javascripts/emscripted-ruby/lib/timeout.rb +122 -0
  331. data/vendor/javascripts/emscripted-ruby/lib/tmpdir.rb +130 -0
  332. data/vendor/javascripts/emscripted-ruby/lib/tracer.rb +167 -0
  333. data/vendor/javascripts/emscripted-ruby/lib/tsort.rb +290 -0
  334. data/vendor/javascripts/emscripted-ruby/lib/un.rb +235 -0
  335. data/vendor/javascripts/emscripted-ruby/lib/uri.rb +29 -0
  336. data/vendor/javascripts/emscripted-ruby/lib/uri/common.rb +611 -0
  337. data/vendor/javascripts/emscripted-ruby/lib/uri/ftp.rb +198 -0
  338. data/vendor/javascripts/emscripted-ruby/lib/uri/generic.rb +1122 -0
  339. data/vendor/javascripts/emscripted-ruby/lib/uri/http.rb +100 -0
  340. data/vendor/javascripts/emscripted-ruby/lib/uri/https.rb +20 -0
  341. data/vendor/javascripts/emscripted-ruby/lib/uri/ldap.rb +190 -0
  342. data/vendor/javascripts/emscripted-ruby/lib/uri/ldaps.rb +12 -0
  343. data/vendor/javascripts/emscripted-ruby/lib/uri/mailto.rb +266 -0
  344. data/vendor/javascripts/emscripted-ruby/lib/weakref.rb +100 -0
  345. data/vendor/javascripts/emscripted-ruby/lib/webrick.rb +29 -0
  346. data/vendor/javascripts/emscripted-ruby/lib/webrick/accesslog.rb +67 -0
  347. data/vendor/javascripts/emscripted-ruby/lib/webrick/cgi.rb +257 -0
  348. data/vendor/javascripts/emscripted-ruby/lib/webrick/compat.rb +15 -0
  349. data/vendor/javascripts/emscripted-ruby/lib/webrick/config.rb +97 -0
  350. data/vendor/javascripts/emscripted-ruby/lib/webrick/cookie.rb +110 -0
  351. data/vendor/javascripts/emscripted-ruby/lib/webrick/htmlutils.rb +25 -0
  352. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth.rb +45 -0
  353. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth/authenticator.rb +79 -0
  354. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth/basicauth.rb +65 -0
  355. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth/digestauth.rb +343 -0
  356. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth/htdigest.rb +91 -0
  357. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth/htgroup.rb +61 -0
  358. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth/htpasswd.rb +83 -0
  359. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpauth/userdb.rb +29 -0
  360. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpproxy.rb +254 -0
  361. data/vendor/javascripts/emscripted-ruby/lib/webrick/httprequest.rb +365 -0
  362. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpresponse.rb +327 -0
  363. data/vendor/javascripts/emscripted-ruby/lib/webrick/https.rb +63 -0
  364. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpserver.rb +210 -0
  365. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpservlet.rb +22 -0
  366. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpservlet/abstract.rb +71 -0
  367. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpservlet/cgi_runner.rb +47 -0
  368. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpservlet/cgihandler.rb +108 -0
  369. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpservlet/erbhandler.rb +54 -0
  370. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpservlet/filehandler.rb +435 -0
  371. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpservlet/prochandler.rb +33 -0
  372. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpstatus.rb +126 -0
  373. data/vendor/javascripts/emscripted-ruby/lib/webrick/httputils.rb +399 -0
  374. data/vendor/javascripts/emscripted-ruby/lib/webrick/httpversion.rb +49 -0
  375. data/vendor/javascripts/emscripted-ruby/lib/webrick/log.rb +88 -0
  376. data/vendor/javascripts/emscripted-ruby/lib/webrick/server.rb +200 -0
  377. data/vendor/javascripts/emscripted-ruby/lib/webrick/ssl.rb +126 -0
  378. data/vendor/javascripts/emscripted-ruby/lib/webrick/utils.rb +100 -0
  379. data/vendor/javascripts/emscripted-ruby/lib/webrick/version.rb +13 -0
  380. data/vendor/javascripts/emscripted-ruby/lib/wsdl/binding.rb +65 -0
  381. data/vendor/javascripts/emscripted-ruby/lib/wsdl/data.rb +64 -0
  382. data/vendor/javascripts/emscripted-ruby/lib/wsdl/definitions.rb +250 -0
  383. data/vendor/javascripts/emscripted-ruby/lib/wsdl/documentation.rb +32 -0
  384. data/vendor/javascripts/emscripted-ruby/lib/wsdl/import.rb +80 -0
  385. data/vendor/javascripts/emscripted-ruby/lib/wsdl/importer.rb +38 -0
  386. data/vendor/javascripts/emscripted-ruby/lib/wsdl/info.rb +39 -0
  387. data/vendor/javascripts/emscripted-ruby/lib/wsdl/message.rb +54 -0
  388. data/vendor/javascripts/emscripted-ruby/lib/wsdl/operation.rb +130 -0
  389. data/vendor/javascripts/emscripted-ruby/lib/wsdl/operationBinding.rb +108 -0
  390. data/vendor/javascripts/emscripted-ruby/lib/wsdl/param.rb +85 -0
  391. data/vendor/javascripts/emscripted-ruby/lib/wsdl/parser.rb +163 -0
  392. data/vendor/javascripts/emscripted-ruby/lib/wsdl/part.rb +52 -0
  393. data/vendor/javascripts/emscripted-ruby/lib/wsdl/port.rb +84 -0
  394. data/vendor/javascripts/emscripted-ruby/lib/wsdl/portType.rb +73 -0
  395. data/vendor/javascripts/emscripted-ruby/lib/wsdl/service.rb +61 -0
  396. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/address.rb +40 -0
  397. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/binding.rb +49 -0
  398. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/body.rb +56 -0
  399. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/cgiStubCreator.rb +76 -0
  400. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/classDefCreator.rb +314 -0
  401. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/classDefCreatorSupport.rb +126 -0
  402. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/clientSkeltonCreator.rb +78 -0
  403. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/complexType.rb +161 -0
  404. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/data.rb +42 -0
  405. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/definitions.rb +149 -0
  406. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/driverCreator.rb +95 -0
  407. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/element.rb +28 -0
  408. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/fault.rb +56 -0
  409. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/header.rb +86 -0
  410. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/headerfault.rb +56 -0
  411. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/mappingRegistryCreator.rb +92 -0
  412. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/methodDefCreator.rb +228 -0
  413. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/operation.rb +122 -0
  414. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/servantSkeltonCreator.rb +67 -0
  415. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/standaloneServerStubCreator.rb +85 -0
  416. data/vendor/javascripts/emscripted-ruby/lib/wsdl/soap/wsdl2ruby.rb +176 -0
  417. data/vendor/javascripts/emscripted-ruby/lib/wsdl/types.rb +43 -0
  418. data/vendor/javascripts/emscripted-ruby/lib/wsdl/wsdl.rb +23 -0
  419. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/all.rb +69 -0
  420. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/annotation.rb +34 -0
  421. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/any.rb +56 -0
  422. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/attribute.rb +127 -0
  423. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/choice.rb +69 -0
  424. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/complexContent.rb +92 -0
  425. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/complexType.rb +139 -0
  426. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/content.rb +96 -0
  427. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/data.rb +80 -0
  428. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/element.rb +154 -0
  429. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/enumeration.rb +36 -0
  430. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/import.rb +65 -0
  431. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/importer.rb +87 -0
  432. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/include.rb +54 -0
  433. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/length.rb +35 -0
  434. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/parser.rb +166 -0
  435. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/pattern.rb +36 -0
  436. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/schema.rb +143 -0
  437. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/sequence.rb +69 -0
  438. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/simpleContent.rb +65 -0
  439. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/simpleExtension.rb +54 -0
  440. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/simpleRestriction.rb +73 -0
  441. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/simpleType.rb +73 -0
  442. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/unique.rb +34 -0
  443. data/vendor/javascripts/emscripted-ruby/lib/wsdl/xmlSchema/xsd2ruby.rb +107 -0
  444. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/.document +1 -0
  445. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/README.txt +31 -0
  446. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/base64.rb +81 -0
  447. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/client.rb +624 -0
  448. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/config.rb +40 -0
  449. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/create.rb +290 -0
  450. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/datetime.rb +142 -0
  451. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/httpserver.rb +178 -0
  452. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/marshal.rb +76 -0
  453. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/parser.rb +813 -0
  454. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/server.rb +780 -0
  455. data/vendor/javascripts/emscripted-ruby/lib/xmlrpc/utils.rb +165 -0
  456. data/vendor/javascripts/emscripted-ruby/lib/xsd/charset.rb +187 -0
  457. data/vendor/javascripts/emscripted-ruby/lib/xsd/codegen.rb +12 -0
  458. data/vendor/javascripts/emscripted-ruby/lib/xsd/codegen/classdef.rb +203 -0
  459. data/vendor/javascripts/emscripted-ruby/lib/xsd/codegen/commentdef.rb +34 -0
  460. data/vendor/javascripts/emscripted-ruby/lib/xsd/codegen/gensupport.rb +166 -0
  461. data/vendor/javascripts/emscripted-ruby/lib/xsd/codegen/methoddef.rb +63 -0
  462. data/vendor/javascripts/emscripted-ruby/lib/xsd/codegen/moduledef.rb +191 -0
  463. data/vendor/javascripts/emscripted-ruby/lib/xsd/datatypes.rb +1269 -0
  464. data/vendor/javascripts/emscripted-ruby/lib/xsd/datatypes1999.rb +20 -0
  465. data/vendor/javascripts/emscripted-ruby/lib/xsd/iconvcharset.rb +33 -0
  466. data/vendor/javascripts/emscripted-ruby/lib/xsd/mapping.rb +42 -0
  467. data/vendor/javascripts/emscripted-ruby/lib/xsd/namedelements.rb +95 -0
  468. data/vendor/javascripts/emscripted-ruby/lib/xsd/ns.rb +140 -0
  469. data/vendor/javascripts/emscripted-ruby/lib/xsd/qname.rb +78 -0
  470. data/vendor/javascripts/emscripted-ruby/lib/xsd/xmlparser.rb +61 -0
  471. data/vendor/javascripts/emscripted-ruby/lib/xsd/xmlparser/parser.rb +96 -0
  472. data/vendor/javascripts/emscripted-ruby/lib/xsd/xmlparser/rexmlparser.rb +54 -0
  473. data/vendor/javascripts/emscripted-ruby/lib/xsd/xmlparser/xmlparser.rb +50 -0
  474. data/vendor/javascripts/emscripted-ruby/lib/xsd/xmlparser/xmlscanner.rb +147 -0
  475. data/vendor/javascripts/emscripted-ruby/lib/yaml.rb +440 -0
  476. data/vendor/javascripts/emscripted-ruby/lib/yaml/baseemitter.rb +247 -0
  477. data/vendor/javascripts/emscripted-ruby/lib/yaml/basenode.rb +216 -0
  478. data/vendor/javascripts/emscripted-ruby/lib/yaml/constants.rb +45 -0
  479. data/vendor/javascripts/emscripted-ruby/lib/yaml/dbm.rb +111 -0
  480. data/vendor/javascripts/emscripted-ruby/lib/yaml/encoding.rb +33 -0
  481. data/vendor/javascripts/emscripted-ruby/lib/yaml/error.rb +34 -0
  482. data/vendor/javascripts/emscripted-ruby/lib/yaml/loader.rb +14 -0
  483. data/vendor/javascripts/emscripted-ruby/lib/yaml/rubytypes.rb +408 -0
  484. data/vendor/javascripts/emscripted-ruby/lib/yaml/store.rb +43 -0
  485. data/vendor/javascripts/emscripted-ruby/lib/yaml/stream.rb +40 -0
  486. data/vendor/javascripts/emscripted-ruby/lib/yaml/stringio.rb +83 -0
  487. data/vendor/javascripts/emscripted-ruby/lib/yaml/syck.rb +19 -0
  488. data/vendor/javascripts/emscripted-ruby/lib/yaml/tag.rb +91 -0
  489. data/vendor/javascripts/emscripted-ruby/lib/yaml/types.rb +192 -0
  490. data/vendor/javascripts/emscripted-ruby/lib/yaml/yamlnode.rb +54 -0
  491. data/vendor/javascripts/emscripted-ruby/lib/yaml/ypath.rb +52 -0
  492. data/vendor/javascripts/emscripted-ruby/ruby.closure.js +7201 -0
  493. metadata +554 -0
@@ -0,0 +1,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)