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,192 @@
1
+ #
2
+ # observer.rb implements the _Observer_ object-oriented design pattern. The
3
+ # following documentation is copied, with modifications, from "Programming
4
+ # Ruby", by Hunt and Thomas; http://www.rubycentral.com/book/lib_patterns.html.
5
+ #
6
+ # == About
7
+ #
8
+ # The Observer pattern, also known as Publish/Subscribe, provides a simple
9
+ # mechanism for one object to inform a set of interested third-party objects
10
+ # when its state changes.
11
+ #
12
+ # == Mechanism
13
+ #
14
+ # In the Ruby implementation, the notifying class mixes in the +Observable+
15
+ # module, which provides the methods for managing the associated observer
16
+ # objects.
17
+ #
18
+ # The observers must implement the +update+ method to receive notifications.
19
+ #
20
+ # The observable object must:
21
+ # * assert that it has +changed+
22
+ # * call +notify_observers+
23
+ #
24
+ # == Example
25
+ #
26
+ # The following example demonstrates this nicely. A +Ticker+, when run,
27
+ # continually receives the stock +Price+ for its +@symbol+. A +Warner+ is a
28
+ # general observer of the price, and two warners are demonstrated, a +WarnLow+
29
+ # and a +WarnHigh+, which print a warning if the price is below or above their
30
+ # set limits, respectively.
31
+ #
32
+ # The +update+ callback allows the warners to run without being explicitly
33
+ # called. The system is set up with the +Ticker+ and several observers, and the
34
+ # observers do their duty without the top-level code having to interfere.
35
+ #
36
+ # Note that the contract between publisher and subscriber (observable and
37
+ # observer) is not declared or enforced. The +Ticker+ publishes a time and a
38
+ # price, and the warners receive that. But if you don't ensure that your
39
+ # contracts are correct, nothing else can warn you.
40
+ #
41
+ # require "observer"
42
+ #
43
+ # class Ticker ### Periodically fetch a stock price.
44
+ # include Observable
45
+ #
46
+ # def initialize(symbol)
47
+ # @symbol = symbol
48
+ # end
49
+ #
50
+ # def run
51
+ # lastPrice = nil
52
+ # loop do
53
+ # price = Price.fetch(@symbol)
54
+ # print "Current price: #{price}\n"
55
+ # if price != lastPrice
56
+ # changed # notify observers
57
+ # lastPrice = price
58
+ # notify_observers(Time.now, price)
59
+ # end
60
+ # sleep 1
61
+ # end
62
+ # end
63
+ # end
64
+ #
65
+ # class Price ### A mock class to fetch a stock price (60 - 140).
66
+ # def Price.fetch(symbol)
67
+ # 60 + rand(80)
68
+ # end
69
+ # end
70
+ #
71
+ # class Warner ### An abstract observer of Ticker objects.
72
+ # def initialize(ticker, limit)
73
+ # @limit = limit
74
+ # ticker.add_observer(self)
75
+ # end
76
+ # end
77
+ #
78
+ # class WarnLow < Warner
79
+ # def update(time, price) # callback for observer
80
+ # if price < @limit
81
+ # print "--- #{time.to_s}: Price below #@limit: #{price}\n"
82
+ # end
83
+ # end
84
+ # end
85
+ #
86
+ # class WarnHigh < Warner
87
+ # def update(time, price) # callback for observer
88
+ # if price > @limit
89
+ # print "+++ #{time.to_s}: Price above #@limit: #{price}\n"
90
+ # end
91
+ # end
92
+ # end
93
+ #
94
+ # ticker = Ticker.new("MSFT")
95
+ # WarnLow.new(ticker, 80)
96
+ # WarnHigh.new(ticker, 120)
97
+ # ticker.run
98
+ #
99
+ # Produces:
100
+ #
101
+ # Current price: 83
102
+ # Current price: 75
103
+ # --- Sun Jun 09 00:10:25 CDT 2002: Price below 80: 75
104
+ # Current price: 90
105
+ # Current price: 134
106
+ # +++ Sun Jun 09 00:10:25 CDT 2002: Price above 120: 134
107
+ # Current price: 134
108
+ # Current price: 112
109
+ # Current price: 79
110
+ # --- Sun Jun 09 00:10:25 CDT 2002: Price below 80: 79
111
+
112
+
113
+ #
114
+ # Implements the Observable design pattern as a mixin so that other objects can
115
+ # be notified of changes in state. See observer.rb for details and an example.
116
+ #
117
+ module Observable
118
+
119
+ #
120
+ # Add +observer+ as an observer on this object. +observer+ will now receive
121
+ # notifications.
122
+ #
123
+ def add_observer(observer)
124
+ @observer_peers = [] unless defined? @observer_peers
125
+ unless observer.respond_to? :update
126
+ raise NoMethodError, "observer needs to respond to `update'"
127
+ end
128
+ @observer_peers.push observer
129
+ end
130
+
131
+ #
132
+ # Delete +observer+ as an observer on this object. It will no longer receive
133
+ # notifications.
134
+ #
135
+ def delete_observer(observer)
136
+ @observer_peers.delete observer if defined? @observer_peers
137
+ end
138
+
139
+ #
140
+ # Delete all observers associated with this object.
141
+ #
142
+ def delete_observers
143
+ @observer_peers.clear if defined? @observer_peers
144
+ end
145
+
146
+ #
147
+ # Return the number of observers associated with this object.
148
+ #
149
+ def count_observers
150
+ if defined? @observer_peers
151
+ @observer_peers.size
152
+ else
153
+ 0
154
+ end
155
+ end
156
+
157
+ #
158
+ # Set the changed state of this object. Notifications will be sent only if
159
+ # the changed +state+ is +true+.
160
+ #
161
+ def changed(state=true)
162
+ @observer_state = state
163
+ end
164
+
165
+ #
166
+ # Query the changed state of this object.
167
+ #
168
+ def changed?
169
+ if defined? @observer_state and @observer_state
170
+ true
171
+ else
172
+ false
173
+ end
174
+ end
175
+
176
+ #
177
+ # If this object's changed state is +true+, invoke the update method in each
178
+ # currently associated observer in turn, passing it the given arguments. The
179
+ # changed state is then set to +false+.
180
+ #
181
+ def notify_observers(*arg)
182
+ if defined? @observer_state and @observer_state
183
+ if defined? @observer_peers
184
+ for i in @observer_peers.dup
185
+ i.update(*arg)
186
+ end
187
+ end
188
+ @observer_state = false
189
+ end
190
+ end
191
+
192
+ end
@@ -0,0 +1,678 @@
1
+ require 'uri'
2
+ require 'stringio'
3
+ require 'time'
4
+
5
+ module Kernel
6
+ private
7
+ alias open_uri_original_open open # :nodoc:
8
+
9
+ # makes possible to open various resources including URIs.
10
+ # If the first argument respond to `open' method,
11
+ # the method is called with the rest arguments.
12
+ #
13
+ # If the first argument is a string which begins with xxx://,
14
+ # it is parsed by URI.parse. If the parsed object respond to `open' method,
15
+ # the method is called with the rest arguments.
16
+ #
17
+ # Otherwise original open is called.
18
+ #
19
+ # Since open-uri.rb provides URI::HTTP#open, URI::HTTPS#open and
20
+ # URI::FTP#open,
21
+ # Kernel[#.]open can accepts such URIs and strings which begins with
22
+ # http://, https:// and ftp://.
23
+ # In these case, the opened file object is extended by OpenURI::Meta.
24
+ def open(name, *rest, &block) # :doc:
25
+ if name.respond_to?(:open)
26
+ name.open(*rest, &block)
27
+ elsif name.respond_to?(:to_str) &&
28
+ %r{\A[A-Za-z][A-Za-z0-9+\-\.]*://} =~ name &&
29
+ (uri = URI.parse(name)).respond_to?(:open)
30
+ uri.open(*rest, &block)
31
+ else
32
+ open_uri_original_open(name, *rest, &block)
33
+ end
34
+ end
35
+ module_function :open
36
+ end
37
+
38
+ # OpenURI is an easy-to-use wrapper for net/http, net/https and net/ftp.
39
+ #
40
+ #== Example
41
+ #
42
+ # It is possible to open http/https/ftp URL as usual like opening a file:
43
+ #
44
+ # open("http://www.ruby-lang.org/") {|f|
45
+ # f.each_line {|line| p line}
46
+ # }
47
+ #
48
+ # The opened file has several methods for meta information as follows since
49
+ # it is extended by OpenURI::Meta.
50
+ #
51
+ # open("http://www.ruby-lang.org/en") {|f|
52
+ # f.each_line {|line| p line}
53
+ # p f.base_uri # <URI::HTTP:0x40e6ef2 URL:http://www.ruby-lang.org/en/>
54
+ # p f.content_type # "text/html"
55
+ # p f.charset # "iso-8859-1"
56
+ # p f.content_encoding # []
57
+ # p f.last_modified # Thu Dec 05 02:45:02 UTC 2002
58
+ # }
59
+ #
60
+ # Additional header fields can be specified by an optional hash argument.
61
+ #
62
+ # open("http://www.ruby-lang.org/en/",
63
+ # "User-Agent" => "Ruby/#{RUBY_VERSION}",
64
+ # "From" => "foo@bar.invalid",
65
+ # "Referer" => "http://www.ruby-lang.org/") {|f|
66
+ # # ...
67
+ # }
68
+ #
69
+ # The environment variables such as http_proxy, https_proxy and ftp_proxy
70
+ # are in effect by default. :proxy => nil disables proxy.
71
+ #
72
+ # open("http://www.ruby-lang.org/en/raa.html", :proxy => nil) {|f|
73
+ # # ...
74
+ # }
75
+ #
76
+ # URI objects can be opened in a similar way.
77
+ #
78
+ # uri = URI.parse("http://www.ruby-lang.org/en/")
79
+ # uri.open {|f|
80
+ # # ...
81
+ # }
82
+ #
83
+ # URI objects can be read directly. The returned string is also extended by
84
+ # OpenURI::Meta.
85
+ #
86
+ # str = uri.read
87
+ # p str.base_uri
88
+ #
89
+ # Author:: Tanaka Akira <akr@m17n.org>
90
+
91
+ module OpenURI
92
+ Options = {
93
+ :proxy => true,
94
+ :progress_proc => true,
95
+ :content_length_proc => true,
96
+ :http_basic_authentication => true,
97
+ }
98
+
99
+ def OpenURI.check_options(options) # :nodoc:
100
+ options.each {|k, v|
101
+ next unless Symbol === k
102
+ unless Options.include? k
103
+ raise ArgumentError, "unrecognized option: #{k}"
104
+ end
105
+ }
106
+ end
107
+
108
+ def OpenURI.scan_open_optional_arguments(*rest) # :nodoc:
109
+ if !rest.empty? && (String === rest.first || Integer === rest.first)
110
+ mode = rest.shift
111
+ if !rest.empty? && Integer === rest.first
112
+ perm = rest.shift
113
+ end
114
+ end
115
+ return mode, perm, rest
116
+ end
117
+
118
+ def OpenURI.open_uri(name, *rest) # :nodoc:
119
+ uri = URI::Generic === name ? name : URI.parse(name)
120
+ mode, perm, rest = OpenURI.scan_open_optional_arguments(*rest)
121
+ options = rest.shift if !rest.empty? && Hash === rest.first
122
+ raise ArgumentError.new("extra arguments") if !rest.empty?
123
+ options ||= {}
124
+ OpenURI.check_options(options)
125
+
126
+ unless mode == nil ||
127
+ mode == 'r' || mode == 'rb' ||
128
+ mode == File::RDONLY
129
+ raise ArgumentError.new("invalid access mode #{mode} (#{uri.class} resource is read only.)")
130
+ end
131
+
132
+ io = open_loop(uri, options)
133
+ if block_given?
134
+ begin
135
+ yield io
136
+ ensure
137
+ io.close
138
+ end
139
+ else
140
+ io
141
+ end
142
+ end
143
+
144
+ def OpenURI.open_loop(uri, options) # :nodoc:
145
+ case opt_proxy = options.fetch(:proxy, true)
146
+ when true
147
+ find_proxy = lambda {|u| u.find_proxy}
148
+ when nil, false
149
+ find_proxy = lambda {|u| nil}
150
+ when String
151
+ opt_proxy = URI.parse(opt_proxy)
152
+ find_proxy = lambda {|u| opt_proxy}
153
+ when URI::Generic
154
+ find_proxy = lambda {|u| opt_proxy}
155
+ else
156
+ raise ArgumentError.new("Invalid proxy option: #{opt_proxy}")
157
+ end
158
+
159
+ uri_set = {}
160
+ buf = nil
161
+ while true
162
+ redirect = catch(:open_uri_redirect) {
163
+ buf = Buffer.new
164
+ uri.buffer_open(buf, find_proxy.call(uri), options)
165
+ nil
166
+ }
167
+ if redirect
168
+ if redirect.relative?
169
+ # Although it violates RFC2616, Location: field may have relative
170
+ # URI. It is converted to absolute URI using uri as a base URI.
171
+ redirect = uri + redirect
172
+ end
173
+ unless OpenURI.redirectable?(uri, redirect)
174
+ raise "redirection forbidden: #{uri} -> #{redirect}"
175
+ end
176
+ if options.include? :http_basic_authentication
177
+ # send authentication only for the URI directly specified.
178
+ options = options.dup
179
+ options.delete :http_basic_authentication
180
+ end
181
+ uri = redirect
182
+ raise "HTTP redirection loop: #{uri}" if uri_set.include? uri.to_s
183
+ uri_set[uri.to_s] = true
184
+ else
185
+ break
186
+ end
187
+ end
188
+ io = buf.io
189
+ io.base_uri = uri
190
+ io
191
+ end
192
+
193
+ def OpenURI.redirectable?(uri1, uri2) # :nodoc:
194
+ # This test is intended to forbid a redirection from http://... to
195
+ # file:///etc/passwd.
196
+ # However this is ad hoc. It should be extensible/configurable.
197
+ uri1.scheme.downcase == uri2.scheme.downcase ||
198
+ (/\A(?:http|ftp)\z/i =~ uri1.scheme && /\A(?:http|ftp)\z/i =~ uri2.scheme)
199
+ end
200
+
201
+ def OpenURI.open_http(buf, target, proxy, options) # :nodoc:
202
+ if proxy
203
+ raise "Non-HTTP proxy URI: #{proxy}" if proxy.class != URI::HTTP
204
+ end
205
+
206
+ if target.userinfo && "1.9.0" <= RUBY_VERSION
207
+ # don't raise for 1.8 because compatibility.
208
+ raise ArgumentError, "userinfo not supported. [RFC3986]"
209
+ end
210
+
211
+ require 'net/http'
212
+ klass = Net::HTTP
213
+ if URI::HTTP === target
214
+ # HTTP or HTTPS
215
+ if proxy
216
+ klass = Net::HTTP::Proxy(proxy.host, proxy.port)
217
+ end
218
+ target_host = target.host
219
+ target_port = target.port
220
+ request_uri = target.request_uri
221
+ else
222
+ # FTP over HTTP proxy
223
+ target_host = proxy.host
224
+ target_port = proxy.port
225
+ request_uri = target.to_s
226
+ end
227
+
228
+ http = klass.new(target_host, target_port)
229
+ if target.class == URI::HTTPS
230
+ require 'net/https'
231
+ http.use_ssl = true
232
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
233
+ store = OpenSSL::X509::Store.new
234
+ store.set_default_paths
235
+ http.cert_store = store
236
+ end
237
+
238
+ header = {}
239
+ options.each {|k, v| header[k] = v if String === k }
240
+
241
+ resp = nil
242
+ http.start {
243
+ req = Net::HTTP::Get.new(request_uri, header)
244
+ if options.include? :http_basic_authentication
245
+ user, pass = options[:http_basic_authentication]
246
+ req.basic_auth user, pass
247
+ end
248
+ http.request(req) {|response|
249
+ resp = response
250
+ if options[:content_length_proc] && Net::HTTPSuccess === resp
251
+ if resp.key?('Content-Length')
252
+ options[:content_length_proc].call(resp['Content-Length'].to_i)
253
+ else
254
+ options[:content_length_proc].call(nil)
255
+ end
256
+ end
257
+ resp.read_body {|str|
258
+ buf << str
259
+ if options[:progress_proc] && Net::HTTPSuccess === resp
260
+ options[:progress_proc].call(buf.size)
261
+ end
262
+ }
263
+ }
264
+ }
265
+ io = buf.io
266
+ io.rewind
267
+ io.status = [resp.code, resp.message]
268
+ resp.each {|name,value| buf.io.meta_add_field name, value }
269
+ case resp
270
+ when Net::HTTPSuccess
271
+ when Net::HTTPMovedPermanently, # 301
272
+ Net::HTTPFound, # 302
273
+ Net::HTTPSeeOther, # 303
274
+ Net::HTTPTemporaryRedirect # 307
275
+ throw :open_uri_redirect, URI.parse(resp['location'])
276
+ else
277
+ raise OpenURI::HTTPError.new(io.status.join(' '), io)
278
+ end
279
+ end
280
+
281
+ class HTTPError < StandardError
282
+ def initialize(message, io)
283
+ super(message)
284
+ @io = io
285
+ end
286
+ attr_reader :io
287
+ end
288
+
289
+ class Buffer # :nodoc:
290
+ def initialize
291
+ @io = StringIO.new
292
+ @size = 0
293
+ end
294
+ attr_reader :size
295
+
296
+ StringMax = 10240
297
+ def <<(str)
298
+ @io << str
299
+ @size += str.length
300
+ if StringIO === @io && StringMax < @size
301
+ require 'tempfile'
302
+ io = Tempfile.new('open-uri')
303
+ io.binmode
304
+ Meta.init io, @io if @io.respond_to? :meta
305
+ io << @io.string
306
+ @io = io
307
+ end
308
+ end
309
+
310
+ def io
311
+ Meta.init @io unless @io.respond_to? :meta
312
+ @io
313
+ end
314
+ end
315
+
316
+ # Mixin for holding meta-information.
317
+ module Meta
318
+ def Meta.init(obj, src=nil) # :nodoc:
319
+ obj.extend Meta
320
+ obj.instance_eval {
321
+ @base_uri = nil
322
+ @meta = {}
323
+ }
324
+ if src
325
+ obj.status = src.status
326
+ obj.base_uri = src.base_uri
327
+ src.meta.each {|name, value|
328
+ obj.meta_add_field(name, value)
329
+ }
330
+ end
331
+ end
332
+
333
+ # returns an Array which consists status code and message.
334
+ attr_accessor :status
335
+
336
+ # returns a URI which is base of relative URIs in the data.
337
+ # It may differ from the URI supplied by a user because redirection.
338
+ attr_accessor :base_uri
339
+
340
+ # returns a Hash which represents header fields.
341
+ # The Hash keys are downcased for canonicalization.
342
+ attr_reader :meta
343
+
344
+ def meta_add_field(name, value) # :nodoc:
345
+ @meta[name.downcase] = value
346
+ end
347
+
348
+ # returns a Time which represents Last-Modified field.
349
+ def last_modified
350
+ if v = @meta['last-modified']
351
+ Time.httpdate(v)
352
+ else
353
+ nil
354
+ end
355
+ end
356
+
357
+ RE_LWS = /[\r\n\t ]+/n
358
+ RE_TOKEN = %r{[^\x00- ()<>@,;:\\"/\[\]?={}\x7f]+}n
359
+ RE_QUOTED_STRING = %r{"(?:[\r\n\t !#-\[\]-~\x80-\xff]|\\[\x00-\x7f])*"}n
360
+ RE_PARAMETERS = %r{(?:;#{RE_LWS}?#{RE_TOKEN}#{RE_LWS}?=#{RE_LWS}?(?:#{RE_TOKEN}|#{RE_QUOTED_STRING})#{RE_LWS}?)*}n
361
+
362
+ def content_type_parse # :nodoc:
363
+ v = @meta['content-type']
364
+ # The last (?:;#{RE_LWS}?)? matches extra ";" which violates RFC2045.
365
+ if v && %r{\A#{RE_LWS}?(#{RE_TOKEN})#{RE_LWS}?/(#{RE_TOKEN})#{RE_LWS}?(#{RE_PARAMETERS})(?:;#{RE_LWS}?)?\z}no =~ v
366
+ type = $1.downcase
367
+ subtype = $2.downcase
368
+ parameters = []
369
+ $3.scan(/;#{RE_LWS}?(#{RE_TOKEN})#{RE_LWS}?=#{RE_LWS}?(?:(#{RE_TOKEN})|(#{RE_QUOTED_STRING}))/no) {|att, val, qval|
370
+ val = qval.gsub(/[\r\n\t !#-\[\]-~\x80-\xff]+|(\\[\x00-\x7f])/) { $1 ? $1[1,1] : $& } if qval
371
+ parameters << [att.downcase, val]
372
+ }
373
+ ["#{type}/#{subtype}", *parameters]
374
+ else
375
+ nil
376
+ end
377
+ end
378
+
379
+ # returns "type/subtype" which is MIME Content-Type.
380
+ # It is downcased for canonicalization.
381
+ # Content-Type parameters are stripped.
382
+ def content_type
383
+ type, *parameters = content_type_parse
384
+ type || 'application/octet-stream'
385
+ end
386
+
387
+ # returns a charset parameter in Content-Type field.
388
+ # It is downcased for canonicalization.
389
+ #
390
+ # If charset parameter is not given but a block is given,
391
+ # the block is called and its result is returned.
392
+ # It can be used to guess charset.
393
+ #
394
+ # If charset parameter and block is not given,
395
+ # nil is returned except text type in HTTP.
396
+ # In that case, "iso-8859-1" is returned as defined by RFC2616 3.7.1.
397
+ def charset
398
+ type, *parameters = content_type_parse
399
+ if pair = parameters.assoc('charset')
400
+ pair.last.downcase
401
+ elsif block_given?
402
+ yield
403
+ elsif type && %r{\Atext/} =~ type &&
404
+ @base_uri && /\Ahttp\z/i =~ @base_uri.scheme
405
+ "iso-8859-1" # RFC2616 3.7.1
406
+ else
407
+ nil
408
+ end
409
+ end
410
+
411
+ # returns a list of encodings in Content-Encoding field
412
+ # as an Array of String.
413
+ # The encodings are downcased for canonicalization.
414
+ def content_encoding
415
+ v = @meta['content-encoding']
416
+ if v && %r{\A#{RE_LWS}?#{RE_TOKEN}#{RE_LWS}?(?:,#{RE_LWS}?#{RE_TOKEN}#{RE_LWS}?)*}o =~ v
417
+ v.scan(RE_TOKEN).map {|content_coding| content_coding.downcase}
418
+ else
419
+ []
420
+ end
421
+ end
422
+ end
423
+
424
+ # Mixin for HTTP and FTP URIs.
425
+ module OpenRead
426
+ # OpenURI::OpenRead#open provides `open' for URI::HTTP and URI::FTP.
427
+ #
428
+ # OpenURI::OpenRead#open takes optional 3 arguments as:
429
+ # OpenURI::OpenRead#open([mode [, perm]] [, options]) [{|io| ... }]
430
+ #
431
+ # `mode', `perm' is same as Kernel#open.
432
+ #
433
+ # However, `mode' must be read mode because OpenURI::OpenRead#open doesn't
434
+ # support write mode (yet).
435
+ # Also `perm' is just ignored because it is meaningful only for file
436
+ # creation.
437
+ #
438
+ # `options' must be a hash.
439
+ #
440
+ # Each pairs which key is a string in the hash specify a extra header
441
+ # field for HTTP.
442
+ # I.e. it is ignored for FTP without HTTP proxy.
443
+ #
444
+ # The hash may include other options which key is a symbol:
445
+ #
446
+ # [:proxy]
447
+ # Synopsis:
448
+ # :proxy => "http://proxy.foo.com:8000/"
449
+ # :proxy => URI.parse("http://proxy.foo.com:8000/")
450
+ # :proxy => true
451
+ # :proxy => false
452
+ # :proxy => nil
453
+ #
454
+ # If :proxy option is specified, the value should be String, URI,
455
+ # boolean or nil.
456
+ # When String or URI is given, it is treated as proxy URI.
457
+ # When true is given or the option itself is not specified,
458
+ # environment variable `scheme_proxy' is examined.
459
+ # `scheme' is replaced by `http', `https' or `ftp'.
460
+ # When false or nil is given, the environment variables are ignored and
461
+ # connection will be made to a server directly.
462
+ #
463
+ # [:http_basic_authentication]
464
+ # Synopsis:
465
+ # :http_basic_authentication=>[user, password]
466
+ #
467
+ # If :http_basic_authentication is specified,
468
+ # the value should be an array which contains 2 strings:
469
+ # username and password.
470
+ # It is used for HTTP Basic authentication defined by RFC 2617.
471
+ #
472
+ # [:content_length_proc]
473
+ # Synopsis:
474
+ # :content_length_proc => lambda {|content_length| ... }
475
+ #
476
+ # If :content_length_proc option is specified, the option value procedure
477
+ # is called before actual transfer is started.
478
+ # It takes one argument which is expected content length in bytes.
479
+ #
480
+ # If two or more transfer is done by HTTP redirection, the procedure
481
+ # is called only one for a last transfer.
482
+ #
483
+ # When expected content length is unknown, the procedure is called with
484
+ # nil.
485
+ # It is happen when HTTP response has no Content-Length header.
486
+ #
487
+ # [:progress_proc]
488
+ # Synopsis:
489
+ # :progress_proc => lambda {|size| ...}
490
+ #
491
+ # If :progress_proc option is specified, the proc is called with one
492
+ # argument each time when `open' gets content fragment from network.
493
+ # The argument `size' `size' is a accumulated transfered size in bytes.
494
+ #
495
+ # If two or more transfer is done by HTTP redirection, the procedure
496
+ # is called only one for a last transfer.
497
+ #
498
+ # :progress_proc and :content_length_proc are intended to be used for
499
+ # progress bar.
500
+ # For example, it can be implemented as follows using Ruby/ProgressBar.
501
+ #
502
+ # pbar = nil
503
+ # open("http://...",
504
+ # :content_length_proc => lambda {|t|
505
+ # if t && 0 < t
506
+ # pbar = ProgressBar.new("...", t)
507
+ # pbar.file_transfer_mode
508
+ # end
509
+ # },
510
+ # :progress_proc => lambda {|s|
511
+ # pbar.set s if pbar
512
+ # }) {|f| ... }
513
+ #
514
+ # OpenURI::OpenRead#open returns an IO like object if block is not given.
515
+ # Otherwise it yields the IO object and return the value of the block.
516
+ # The IO object is extended with OpenURI::Meta.
517
+ def open(*rest, &block)
518
+ OpenURI.open_uri(self, *rest, &block)
519
+ end
520
+
521
+ # OpenURI::OpenRead#read([options]) reads a content referenced by self and
522
+ # returns the content as string.
523
+ # The string is extended with OpenURI::Meta.
524
+ # The argument `options' is same as OpenURI::OpenRead#open.
525
+ def read(options={})
526
+ self.open(options) {|f|
527
+ str = f.read
528
+ Meta.init str, f
529
+ str
530
+ }
531
+ end
532
+ end
533
+ end
534
+
535
+ module URI
536
+ class Generic
537
+ # returns a proxy URI.
538
+ # The proxy URI is obtained from environment variables such as http_proxy,
539
+ # ftp_proxy, no_proxy, etc.
540
+ # If there is no proper proxy, nil is returned.
541
+ #
542
+ # Note that capitalized variables (HTTP_PROXY, FTP_PROXY, NO_PROXY, etc.)
543
+ # are examined too.
544
+ #
545
+ # But http_proxy and HTTP_PROXY is treated specially under CGI environment.
546
+ # It's because HTTP_PROXY may be set by Proxy: header.
547
+ # So HTTP_PROXY is not used.
548
+ # http_proxy is not used too if the variable is case insensitive.
549
+ # CGI_HTTP_PROXY can be used instead.
550
+ def find_proxy
551
+ name = self.scheme.downcase + '_proxy'
552
+ proxy_uri = nil
553
+ if name == 'http_proxy' && ENV.include?('REQUEST_METHOD') # CGI?
554
+ # HTTP_PROXY conflicts with *_proxy for proxy settings and
555
+ # HTTP_* for header information in CGI.
556
+ # So it should be careful to use it.
557
+ pairs = ENV.reject {|k, v| /\Ahttp_proxy\z/i !~ k }
558
+ case pairs.length
559
+ when 0 # no proxy setting anyway.
560
+ proxy_uri = nil
561
+ when 1
562
+ k, v = pairs.shift
563
+ if k == 'http_proxy' && ENV[k.upcase] == nil
564
+ # http_proxy is safe to use because ENV is case sensitive.
565
+ proxy_uri = ENV[name]
566
+ else
567
+ proxy_uri = nil
568
+ end
569
+ else # http_proxy is safe to use because ENV is case sensitive.
570
+ proxy_uri = ENV.to_hash[name]
571
+ end
572
+ if !proxy_uri
573
+ # Use CGI_HTTP_PROXY. cf. libwww-perl.
574
+ proxy_uri = ENV["CGI_#{name.upcase}"]
575
+ end
576
+ elsif name == 'http_proxy'
577
+ unless proxy_uri = ENV[name]
578
+ if proxy_uri = ENV[name.upcase]
579
+ warn 'The environment variable HTTP_PROXY is discouraged. Use http_proxy.'
580
+ end
581
+ end
582
+ else
583
+ proxy_uri = ENV[name] || ENV[name.upcase]
584
+ end
585
+
586
+ if proxy_uri && self.host
587
+ require 'socket'
588
+ begin
589
+ addr = IPSocket.getaddress(self.host)
590
+ proxy_uri = nil if /\A127\.|\A::1\z/ =~ addr
591
+ rescue SocketError
592
+ end
593
+ end
594
+
595
+ if proxy_uri
596
+ proxy_uri = URI.parse(proxy_uri)
597
+ name = 'no_proxy'
598
+ if no_proxy = ENV[name] || ENV[name.upcase]
599
+ no_proxy.scan(/([^:,]*)(?::(\d+))?/) {|host, port|
600
+ if /(\A|\.)#{Regexp.quote host}\z/i =~ self.host &&
601
+ (!port || self.port == port.to_i)
602
+ proxy_uri = nil
603
+ break
604
+ end
605
+ }
606
+ end
607
+ proxy_uri
608
+ else
609
+ nil
610
+ end
611
+ end
612
+ end
613
+
614
+ class HTTP
615
+ def buffer_open(buf, proxy, options) # :nodoc:
616
+ OpenURI.open_http(buf, self, proxy, options)
617
+ end
618
+
619
+ include OpenURI::OpenRead
620
+ end
621
+
622
+ class FTP
623
+ def buffer_open(buf, proxy, options) # :nodoc:
624
+ if proxy
625
+ OpenURI.open_http(buf, self, proxy, options)
626
+ return
627
+ end
628
+ require 'net/ftp'
629
+
630
+ directories = self.path.split(%r{/}, -1)
631
+ directories.shift if directories[0] == '' # strip a field before leading slash
632
+ directories.each {|d|
633
+ d.gsub!(/%([0-9A-Fa-f][0-9A-Fa-f])/) { [$1].pack("H2") }
634
+ }
635
+ unless filename = directories.pop
636
+ raise ArgumentError, "no filename: #{self.inspect}"
637
+ end
638
+ directories.each {|d|
639
+ if /[\r\n]/ =~ d
640
+ raise ArgumentError, "invalid directory: #{d.inspect}"
641
+ end
642
+ }
643
+ if /[\r\n]/ =~ filename
644
+ raise ArgumentError, "invalid filename: #{filename.inspect}"
645
+ end
646
+ typecode = self.typecode
647
+ if typecode && /\A[aid]\z/ !~ typecode
648
+ raise ArgumentError, "invalid typecode: #{typecode.inspect}"
649
+ end
650
+
651
+ # The access sequence is defined by RFC 1738
652
+ ftp = Net::FTP.open(self.host)
653
+ # todo: extract user/passwd from .netrc.
654
+ user = 'anonymous'
655
+ passwd = nil
656
+ user, passwd = self.userinfo.split(/:/) if self.userinfo
657
+ ftp.login(user, passwd)
658
+ directories.each {|cwd|
659
+ ftp.voidcmd("CWD #{cwd}")
660
+ }
661
+ if typecode
662
+ # xxx: typecode D is not handled.
663
+ ftp.voidcmd("TYPE #{typecode.upcase}")
664
+ end
665
+ if options[:content_length_proc]
666
+ options[:content_length_proc].call(ftp.size(filename))
667
+ end
668
+ ftp.retrbinary("RETR #{filename}", 4096) { |str|
669
+ buf << str
670
+ options[:progress_proc].call(buf.size) if options[:progress_proc]
671
+ }
672
+ ftp.close
673
+ buf.io.rewind
674
+ end
675
+
676
+ include OpenURI::OpenRead
677
+ end
678
+ end