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,127 @@
1
+ #
2
+ # getopts.rb -
3
+ # $Release Version: $
4
+ # $Revision: 11708 $
5
+ # $Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
6
+ # by Yasuo OHBA(SHL Japan Inc. Technology Dept.)
7
+ #
8
+ # --
9
+ # this is obsolete; use getoptlong
10
+ #
11
+ # 2000-03-21
12
+ # modified by Minero Aoki <aamine@dp.u-netsurf.ne.jp>
13
+ #
14
+ # 2002-03-05
15
+ # rewritten by Akinori MUSHA <knu@ruby-lang.org>
16
+ #
17
+
18
+ warn "Warning:#{caller[0].sub(/:in `.*'\z/, '')}: getopts is deprecated after Ruby 1.8.1; use optparse instead" if caller[0] and $VERBOSE
19
+
20
+ $RCS_ID=%q$Header$
21
+
22
+ # getopts is obsolete. Use GetoptLong.
23
+
24
+ def getopts(single_options, *options)
25
+ boolopts = {}
26
+ valopts = {}
27
+
28
+ #
29
+ # set defaults
30
+ #
31
+ single_options.scan(/.:?/) do |opt|
32
+ if opt.size == 1
33
+ boolopts[opt] = false
34
+ else
35
+ valopts[opt[0, 1]] = nil
36
+ end
37
+ end if single_options
38
+
39
+ options.each do |arg|
40
+ opt, val = arg.split(':', 2)
41
+
42
+ if val
43
+ valopts[opt] = val.empty? ? nil : val
44
+ else
45
+ boolopts[opt] = false
46
+ end
47
+ end
48
+
49
+ #
50
+ # scan
51
+ #
52
+ c = 0
53
+ argv = ARGV
54
+
55
+ while arg = argv.shift
56
+ case arg
57
+ when /\A--(.*)/
58
+ if $1.empty? # xinit -- -bpp 24
59
+ break
60
+ end
61
+
62
+ opt, val = $1.split('=', 2)
63
+
64
+ if opt.size == 1
65
+ argv.unshift arg
66
+ return nil
67
+ elsif valopts.key? opt # imclean --src +trash
68
+ valopts[opt] = val || argv.shift or return nil
69
+ elsif boolopts.key? opt # ruby --verbose
70
+ boolopts[opt] = true
71
+ else
72
+ argv.unshift arg
73
+ return nil
74
+ end
75
+
76
+ c += 1
77
+ when /\A-(.+)/
78
+ opts = $1
79
+
80
+ until opts.empty?
81
+ opt = opts.slice!(0, 1)
82
+
83
+ if valopts.key? opt
84
+ val = opts
85
+
86
+ if val.empty? # ruby -e 'p $:'
87
+ valopts[opt] = argv.shift or return nil
88
+ else # cc -ohello ...
89
+ valopts[opt] = val
90
+ end
91
+
92
+ c += 1
93
+ break
94
+ elsif boolopts.key? opt
95
+ boolopts[opt] = true # ruby -h
96
+ c += 1
97
+ else
98
+ argv.unshift arg
99
+ return nil
100
+ end
101
+ end
102
+ else
103
+ argv.unshift arg
104
+ break
105
+ end
106
+ end
107
+
108
+ #
109
+ # set
110
+ #
111
+ $OPT = {}
112
+
113
+ boolopts.each do |opt, val|
114
+ $OPT[opt] = val
115
+
116
+ sopt = opt.gsub(/[^A-Za-z0-9_]/, '_')
117
+ eval "$OPT_#{sopt} = val"
118
+ end
119
+ valopts.each do |opt, val|
120
+ $OPT[opt] = val
121
+
122
+ sopt = opt.gsub(/[^A-Za-z0-9_]/, '_')
123
+ eval "$OPT_#{sopt} = val"
124
+ end
125
+
126
+ c
127
+ end
@@ -0,0 +1,253 @@
1
+ #
2
+ # Copyright (C) 2001 John W. Small All Rights Reserved
3
+ #
4
+ # Author:: John W. Small
5
+ # Documentation:: Gavin Sinclair
6
+ # Licence:: Freeware.
7
+ #
8
+ # See the class GServer for documentation.
9
+ #
10
+
11
+ require "socket"
12
+ require "thread"
13
+
14
+ #
15
+ # GServer implements a generic server, featuring thread pool management,
16
+ # simple logging, and multi-server management. See HttpServer in
17
+ # <tt>xmlrpc/httpserver.rb</tt> in the Ruby standard library for an example of
18
+ # GServer in action.
19
+ #
20
+ # Any kind of application-level server can be implemented using this class.
21
+ # It accepts multiple simultaneous connections from clients, up to an optional
22
+ # maximum number. Several _services_ (i.e. one service per TCP port) can be
23
+ # run simultaneously, and stopped at any time through the class method
24
+ # <tt>GServer.stop(port)</tt>. All the threading issues are handled, saving
25
+ # you the effort. All events are optionally logged, but you can provide your
26
+ # own event handlers if you wish.
27
+ #
28
+ # === Example
29
+ #
30
+ # Using GServer is simple. Below we implement a simple time server, run it,
31
+ # query it, and shut it down. Try this code in +irb+:
32
+ #
33
+ # require 'gserver'
34
+ #
35
+ # #
36
+ # # A server that returns the time in seconds since 1970.
37
+ # #
38
+ # class TimeServer < GServer
39
+ # def initialize(port=10001, *args)
40
+ # super(port, *args)
41
+ # end
42
+ # def serve(io)
43
+ # io.puts(Time.now.to_i)
44
+ # end
45
+ # end
46
+ #
47
+ # # Run the server with logging enabled (it's a separate thread).
48
+ # server = TimeServer.new
49
+ # server.audit = true # Turn logging on.
50
+ # server.start
51
+ #
52
+ # # *** Now point your browser to http://localhost:10001 to see it working ***
53
+ #
54
+ # # See if it's still running.
55
+ # GServer.in_service?(10001) # -> true
56
+ # server.stopped? # -> false
57
+ #
58
+ # # Shut the server down gracefully.
59
+ # server.shutdown
60
+ #
61
+ # # Alternatively, stop it immediately.
62
+ # GServer.stop(10001)
63
+ # # or, of course, "server.stop".
64
+ #
65
+ # All the business of accepting connections and exception handling is taken
66
+ # care of. All we have to do is implement the method that actually serves the
67
+ # client.
68
+ #
69
+ # === Advanced
70
+ #
71
+ # As the example above shows, the way to use GServer is to subclass it to
72
+ # create a specific server, overriding the +serve+ method. You can override
73
+ # other methods as well if you wish, perhaps to collect statistics, or emit
74
+ # more detailed logging.
75
+ #
76
+ # connecting
77
+ # disconnecting
78
+ # starting
79
+ # stopping
80
+ #
81
+ # The above methods are only called if auditing is enabled.
82
+ #
83
+ # You can also override +log+ and +error+ if, for example, you wish to use a
84
+ # more sophisticated logging system.
85
+ #
86
+ class GServer
87
+
88
+ DEFAULT_HOST = "127.0.0.1"
89
+
90
+ def serve(io)
91
+ end
92
+
93
+ @@services = {} # Hash of opened ports, i.e. services
94
+ @@servicesMutex = Mutex.new
95
+
96
+ def GServer.stop(port, host = DEFAULT_HOST)
97
+ @@servicesMutex.synchronize {
98
+ @@services[host][port].stop
99
+ }
100
+ end
101
+
102
+ def GServer.in_service?(port, host = DEFAULT_HOST)
103
+ @@services.has_key?(host) and
104
+ @@services[host].has_key?(port)
105
+ end
106
+
107
+ def stop
108
+ @connectionsMutex.synchronize {
109
+ if @tcpServerThread
110
+ @tcpServerThread.raise "stop"
111
+ end
112
+ }
113
+ end
114
+
115
+ def stopped?
116
+ @tcpServerThread == nil
117
+ end
118
+
119
+ def shutdown
120
+ @shutdown = true
121
+ end
122
+
123
+ def connections
124
+ @connections.size
125
+ end
126
+
127
+ def join
128
+ @tcpServerThread.join if @tcpServerThread
129
+ end
130
+
131
+ attr_reader :port, :host, :maxConnections
132
+ attr_accessor :stdlog, :audit, :debug
133
+
134
+ def connecting(client)
135
+ addr = client.peeraddr
136
+ log("#{self.class.to_s} #{@host}:#{@port} client:#{addr[1]} " +
137
+ "#{addr[2]}<#{addr[3]}> connect")
138
+ true
139
+ end
140
+
141
+ def disconnecting(clientPort)
142
+ log("#{self.class.to_s} #{@host}:#{@port} " +
143
+ "client:#{clientPort} disconnect")
144
+ end
145
+
146
+ protected :connecting, :disconnecting
147
+
148
+ def starting()
149
+ log("#{self.class.to_s} #{@host}:#{@port} start")
150
+ end
151
+
152
+ def stopping()
153
+ log("#{self.class.to_s} #{@host}:#{@port} stop")
154
+ end
155
+
156
+ protected :starting, :stopping
157
+
158
+ def error(detail)
159
+ log(detail.backtrace.join("\n"))
160
+ end
161
+
162
+ def log(msg)
163
+ if @stdlog
164
+ @stdlog.puts("[#{Time.new.ctime}] %s" % msg)
165
+ @stdlog.flush
166
+ end
167
+ end
168
+
169
+ protected :error, :log
170
+
171
+ def initialize(port, host = DEFAULT_HOST, maxConnections = 4,
172
+ stdlog = $stderr, audit = false, debug = false)
173
+ @tcpServerThread = nil
174
+ @port = port
175
+ @host = host
176
+ @maxConnections = maxConnections
177
+ @connections = []
178
+ @connectionsMutex = Mutex.new
179
+ @connectionsCV = ConditionVariable.new
180
+ @stdlog = stdlog
181
+ @audit = audit
182
+ @debug = debug
183
+ end
184
+
185
+ def start(maxConnections = -1)
186
+ raise "running" if !stopped?
187
+ @shutdown = false
188
+ @maxConnections = maxConnections if maxConnections > 0
189
+ @@servicesMutex.synchronize {
190
+ if GServer.in_service?(@port,@host)
191
+ raise "Port already in use: #{host}:#{@port}!"
192
+ end
193
+ @tcpServer = TCPServer.new(@host,@port)
194
+ @port = @tcpServer.addr[1]
195
+ @@services[@host] = {} unless @@services.has_key?(@host)
196
+ @@services[@host][@port] = self;
197
+ }
198
+ @tcpServerThread = Thread.new {
199
+ begin
200
+ starting if @audit
201
+ while !@shutdown
202
+ @connectionsMutex.synchronize {
203
+ while @connections.size >= @maxConnections
204
+ @connectionsCV.wait(@connectionsMutex)
205
+ end
206
+ }
207
+ client = @tcpServer.accept
208
+ @connections << Thread.new(client) { |myClient|
209
+ begin
210
+ myPort = myClient.peeraddr[1]
211
+ serve(myClient) if !@audit or connecting(myClient)
212
+ rescue => detail
213
+ error(detail) if @debug
214
+ ensure
215
+ begin
216
+ myClient.close
217
+ rescue
218
+ end
219
+ @connectionsMutex.synchronize {
220
+ @connections.delete(Thread.current)
221
+ @connectionsCV.signal
222
+ }
223
+ disconnecting(myPort) if @audit
224
+ end
225
+ }
226
+ end
227
+ rescue => detail
228
+ error(detail) if @debug
229
+ ensure
230
+ begin
231
+ @tcpServer.close
232
+ rescue
233
+ end
234
+ if @shutdown
235
+ @connectionsMutex.synchronize {
236
+ while @connections.size > 0
237
+ @connectionsCV.wait(@connectionsMutex)
238
+ end
239
+ }
240
+ else
241
+ @connections.each { |c| c.raise "stop" }
242
+ end
243
+ @tcpServerThread = nil
244
+ @@servicesMutex.synchronize {
245
+ @@services[@host].delete(@port)
246
+ }
247
+ stopping if @audit
248
+ end
249
+ }
250
+ self
251
+ end
252
+
253
+ end
@@ -0,0 +1,33 @@
1
+ # importenv.rb -- imports environment variables as global variables, Perlish ;(
2
+ #
3
+ # Usage:
4
+ #
5
+ # require 'importenv'
6
+ # p $USER
7
+ # $USER = "matz"
8
+ # p ENV["USER"]
9
+
10
+ warn "Warning:#{caller[0].sub(/:in `.*'\z/, '')}: importenv is deprecated after Ruby 1.8.1 (no replacement)"
11
+
12
+ for k,v in ENV
13
+ next unless /^[a-zA-Z][_a-zA-Z0-9]*/ =~ k
14
+ eval <<EOS
15
+ $#{k} = v
16
+ trace_var "$#{k}", proc{|v|
17
+ ENV[%q!#{k}!] = v
18
+ $#{k} = v
19
+ if v == nil
20
+ untrace_var "$#{k}"
21
+ end
22
+ }
23
+ EOS
24
+ end
25
+
26
+ if __FILE__ == $0
27
+ p $TERM
28
+ $TERM = nil
29
+ p $TERM
30
+ p ENV["TERM"]
31
+ $TERM = "foo"
32
+ p ENV["TERM"]
33
+ end
@@ -0,0 +1,814 @@
1
+ #
2
+ # ipaddr.rb - A class to manipulate an IP address
3
+ #
4
+ # Copyright (c) 2002 Hajimu UMEMOTO <ume@mahoroba.org>.
5
+ # Copyright (c) 2007 Akinori MUSHA <knu@iDaemons.org>.
6
+ # All rights reserved.
7
+ #
8
+ # You can redistribute and/or modify it under the same terms as Ruby.
9
+ #
10
+ # $Id: ipaddr.rb 15822 2008-03-21 12:16:15Z knu $
11
+ #
12
+ # Contact:
13
+ # - Akinori MUSHA <knu@iDaemons.org> (current maintainer)
14
+ #
15
+ # TODO:
16
+ # - scope_id support
17
+ #
18
+ require 'socket'
19
+
20
+ unless Socket.const_defined? "AF_INET6"
21
+ class Socket
22
+ AF_INET6 = Object.new
23
+ end
24
+
25
+ class << IPSocket
26
+ def valid_v4?(addr)
27
+ if /\A(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\Z/ =~ addr
28
+ return $~.captures.all? {|i| i.to_i < 256}
29
+ end
30
+ return false
31
+ end
32
+
33
+ def valid_v6?(addr)
34
+ # IPv6 (normal)
35
+ return true if /\A[\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*\Z/ =~ addr
36
+ return true if /\A[\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*::([\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*)?\Z/ =~ addr
37
+ return true if /\A::([\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*)?\Z/ =~ addr
38
+ # IPv6 (IPv4 compat)
39
+ return true if /\A[\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*:/ =~ addr && valid_v4?($')
40
+ return true if /\A[\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*::([\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*:)?/ =~ addr && valid_v4?($')
41
+ return true if /\A::([\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*:)?/ =~ addr && valid_v4?($')
42
+
43
+ false
44
+ end
45
+
46
+ def valid?(addr)
47
+ valid_v4?(addr) || valid_v6?(addr)
48
+ end
49
+
50
+ alias getaddress_orig getaddress
51
+ def getaddress(s)
52
+ if valid?(s)
53
+ s
54
+ elsif /\A[-A-Za-z\d.]+\Z/ =~ s
55
+ getaddress_orig(s)
56
+ else
57
+ raise ArgumentError, "invalid address"
58
+ end
59
+ end
60
+ end
61
+ end
62
+
63
+ # IPAddr provides a set of methods to manipulate an IP address. Both IPv4 and
64
+ # IPv6 are supported.
65
+ #
66
+ # == Example
67
+ #
68
+ # require 'ipaddr'
69
+ #
70
+ # ipaddr1 = IPAddr.new "3ffe:505:2::1"
71
+ #
72
+ # p ipaddr1 #=> #<IPAddr: IPv6:3ffe:0505:0002:0000:0000:0000:0000:0001/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff>
73
+ #
74
+ # p ipaddr1.to_s #=> "3ffe:505:2::1"
75
+ #
76
+ # ipaddr2 = ipaddr1.mask(48) #=> #<IPAddr: IPv6:3ffe:0505:0002:0000:0000:0000:0000:0000/ffff:ffff:ffff:0000:0000:0000:0000:0000>
77
+ #
78
+ # p ipaddr2.to_s #=> "3ffe:505:2::"
79
+ #
80
+ # ipaddr3 = IPAddr.new "192.168.2.0/24"
81
+ #
82
+ # p ipaddr3 #=> #<IPAddr: IPv4:192.168.2.0/255.255.255.0>
83
+
84
+ class IPAddr
85
+
86
+ IN4MASK = 0xffffffff
87
+ IN6MASK = 0xffffffffffffffffffffffffffffffff
88
+ IN6FORMAT = (["%.4x"] * 8).join(':')
89
+
90
+ # Returns the address family of this IP address.
91
+ attr :family
92
+
93
+ # Creates a new ipaddr containing the given network byte ordered
94
+ # string form of an IP address.
95
+ def IPAddr::new_ntoh(addr)
96
+ return IPAddr.new(IPAddr::ntop(addr))
97
+ end
98
+
99
+ # Convert a network byte ordered string form of an IP address into
100
+ # human readable form.
101
+ def IPAddr::ntop(addr)
102
+ case addr.size
103
+ when 4
104
+ s = addr.unpack('C4').join('.')
105
+ when 16
106
+ s = IN6FORMAT % addr.unpack('n8')
107
+ else
108
+ raise ArgumentError, "unsupported address family"
109
+ end
110
+ return s
111
+ end
112
+
113
+ # Returns a new ipaddr built by bitwise AND.
114
+ def &(other)
115
+ return self.clone.set(@addr & coerce_other(other).to_i)
116
+ end
117
+
118
+ # Returns a new ipaddr built by bitwise OR.
119
+ def |(other)
120
+ return self.clone.set(@addr | coerce_other(other).to_i)
121
+ end
122
+
123
+ # Returns a new ipaddr built by bitwise right-shift.
124
+ def >>(num)
125
+ return self.clone.set(@addr >> num)
126
+ end
127
+
128
+ # Returns a new ipaddr built by bitwise left shift.
129
+ def <<(num)
130
+ return self.clone.set(addr_mask(@addr << num))
131
+ end
132
+
133
+ # Returns a new ipaddr built by bitwise negation.
134
+ def ~
135
+ return self.clone.set(addr_mask(~@addr))
136
+ end
137
+
138
+ # Returns true if two ipaddrs are equal.
139
+ def ==(other)
140
+ other = coerce_other(other)
141
+ return @family == other.family && @addr == other.to_i
142
+ end
143
+
144
+ # Returns a new ipaddr built by masking IP address with the given
145
+ # prefixlen/netmask. (e.g. 8, 64, "255.255.255.0", etc.)
146
+ def mask(prefixlen)
147
+ return self.clone.mask!(prefixlen)
148
+ end
149
+
150
+ # Returns true if the given ipaddr is in the range.
151
+ #
152
+ # e.g.:
153
+ # require 'ipaddr'
154
+ # net1 = IPAddr.new("192.168.2.0/24")
155
+ # net2 = IPAddr.new("192.168.2.100")
156
+ # net3 = IPAddr.new("192.168.3.0")
157
+ # p net1.include?(net2) #=> true
158
+ # p net1.include?(net3) #=> false
159
+ def include?(other)
160
+ other = coerce_other(other)
161
+ if ipv4_mapped?
162
+ if (@mask_addr >> 32) != 0xffffffffffffffffffffffff
163
+ return false
164
+ end
165
+ mask_addr = (@mask_addr & IN4MASK)
166
+ addr = (@addr & IN4MASK)
167
+ family = Socket::AF_INET
168
+ else
169
+ mask_addr = @mask_addr
170
+ addr = @addr
171
+ family = @family
172
+ end
173
+ if other.ipv4_mapped?
174
+ other_addr = (other.to_i & IN4MASK)
175
+ other_family = Socket::AF_INET
176
+ else
177
+ other_addr = other.to_i
178
+ other_family = other.family
179
+ end
180
+
181
+ if family != other_family
182
+ return false
183
+ end
184
+ return ((addr & mask_addr) == (other_addr & mask_addr))
185
+ end
186
+ alias === include?
187
+
188
+ # Returns the integer representation of the ipaddr.
189
+ def to_i
190
+ return @addr
191
+ end
192
+
193
+ # Returns a string containing the IP address representation.
194
+ def to_s
195
+ str = to_string
196
+ return str if ipv4?
197
+
198
+ str.gsub!(/\b0{1,3}([\da-f]+)\b/i, '\1')
199
+ loop do
200
+ break if str.sub!(/\A0:0:0:0:0:0:0:0\Z/, '::')
201
+ break if str.sub!(/\b0:0:0:0:0:0:0\b/, ':')
202
+ break if str.sub!(/\b0:0:0:0:0:0\b/, ':')
203
+ break if str.sub!(/\b0:0:0:0:0\b/, ':')
204
+ break if str.sub!(/\b0:0:0:0\b/, ':')
205
+ break if str.sub!(/\b0:0:0\b/, ':')
206
+ break if str.sub!(/\b0:0\b/, ':')
207
+ break
208
+ end
209
+ str.sub!(/:{3,}/, '::')
210
+
211
+ if /\A::(ffff:)?([\da-f]{1,4}):([\da-f]{1,4})\Z/i =~ str
212
+ str = sprintf('::%s%d.%d.%d.%d', $1, $2.hex / 256, $2.hex % 256, $3.hex / 256, $3.hex % 256)
213
+ end
214
+
215
+ str
216
+ end
217
+
218
+ # Returns a string containing the IP address representation in
219
+ # canonical form.
220
+ def to_string
221
+ return _to_string(@addr)
222
+ end
223
+
224
+ # Returns a network byte ordered string form of the IP address.
225
+ def hton
226
+ case @family
227
+ when Socket::AF_INET
228
+ return [@addr].pack('N')
229
+ when Socket::AF_INET6
230
+ return (0..7).map { |i|
231
+ (@addr >> (112 - 16 * i)) & 0xffff
232
+ }.pack('n8')
233
+ else
234
+ raise "unsupported address family"
235
+ end
236
+ end
237
+
238
+ # Returns true if the ipaddr is an IPv4 address.
239
+ def ipv4?
240
+ return @family == Socket::AF_INET
241
+ end
242
+
243
+ # Returns true if the ipaddr is an IPv6 address.
244
+ def ipv6?
245
+ return @family == Socket::AF_INET6
246
+ end
247
+
248
+ # Returns true if the ipaddr is an IPv4-mapped IPv6 address.
249
+ def ipv4_mapped?
250
+ return ipv6? && (@addr >> 32) == 0xffff
251
+ end
252
+
253
+ # Returns true if the ipaddr is an IPv4-compatible IPv6 address.
254
+ def ipv4_compat?
255
+ if !ipv6? || (@addr >> 32) != 0
256
+ return false
257
+ end
258
+ a = (@addr & IN4MASK)
259
+ return a != 0 && a != 1
260
+ end
261
+
262
+ # Returns a new ipaddr built by converting the native IPv4 address
263
+ # into an IPv4-mapped IPv6 address.
264
+ def ipv4_mapped
265
+ if !ipv4?
266
+ raise ArgumentError, "not an IPv4 address"
267
+ end
268
+ return self.clone.set(@addr | 0xffff00000000, Socket::AF_INET6)
269
+ end
270
+
271
+ # Returns a new ipaddr built by converting the native IPv4 address
272
+ # into an IPv4-compatible IPv6 address.
273
+ def ipv4_compat
274
+ if !ipv4?
275
+ raise ArgumentError, "not an IPv4 address"
276
+ end
277
+ return self.clone.set(@addr, Socket::AF_INET6)
278
+ end
279
+
280
+ # Returns a new ipaddr built by converting the IPv6 address into a
281
+ # native IPv4 address. If the IP address is not an IPv4-mapped or
282
+ # IPv4-compatible IPv6 address, returns self.
283
+ def native
284
+ if !ipv4_mapped? && !ipv4_compat?
285
+ return self
286
+ end
287
+ return self.clone.set(@addr & IN4MASK, Socket::AF_INET)
288
+ end
289
+
290
+ # Returns a string for DNS reverse lookup. It returns a string in
291
+ # RFC3172 form for an IPv6 address.
292
+ def reverse
293
+ case @family
294
+ when Socket::AF_INET
295
+ return _reverse + ".in-addr.arpa"
296
+ when Socket::AF_INET6
297
+ return ip6_arpa
298
+ else
299
+ raise "unsupported address family"
300
+ end
301
+ end
302
+
303
+ # Returns a string for DNS reverse lookup compatible with RFC3172.
304
+ def ip6_arpa
305
+ if !ipv6?
306
+ raise ArgumentError, "not an IPv6 address"
307
+ end
308
+ return _reverse + ".ip6.arpa"
309
+ end
310
+
311
+ # Returns a string for DNS reverse lookup compatible with RFC1886.
312
+ def ip6_int
313
+ if !ipv6?
314
+ raise ArgumentError, "not an IPv6 address"
315
+ end
316
+ return _reverse + ".ip6.int"
317
+ end
318
+
319
+ # Returns the successor to the ipaddr.
320
+ def succ
321
+ return self.clone.set(@addr + 1, @family)
322
+ end
323
+
324
+ # Compares the ipaddr with another.
325
+ def <=>(other)
326
+ other = coerce_other(other)
327
+
328
+ return nil if other.family != @family
329
+
330
+ return @addr <=> other.to_i
331
+ end
332
+ include Comparable
333
+
334
+ # Creates a Range object for the network address.
335
+ def to_range
336
+ begin_addr = (@addr & @mask_addr)
337
+
338
+ case @family
339
+ when Socket::AF_INET
340
+ end_addr = (@addr | (IN4MASK ^ @mask_addr))
341
+ when Socket::AF_INET6
342
+ end_addr = (@addr | (IN6MASK ^ @mask_addr))
343
+ else
344
+ raise "unsupported address family"
345
+ end
346
+
347
+ return clone.set(begin_addr, @family)..clone.set(end_addr, @family)
348
+ end
349
+
350
+ # Returns a string containing a human-readable representation of the
351
+ # ipaddr. ("#<IPAddr: family:address/mask>")
352
+ def inspect
353
+ case @family
354
+ when Socket::AF_INET
355
+ af = "IPv4"
356
+ when Socket::AF_INET6
357
+ af = "IPv6"
358
+ else
359
+ raise "unsupported address family"
360
+ end
361
+ return sprintf("#<%s: %s:%s/%s>", self.class.name,
362
+ af, _to_string(@addr), _to_string(@mask_addr))
363
+ end
364
+
365
+ protected
366
+
367
+ def set(addr, *family)
368
+ case family[0] ? family[0] : @family
369
+ when Socket::AF_INET
370
+ if addr < 0 || addr > IN4MASK
371
+ raise ArgumentError, "invalid address"
372
+ end
373
+ when Socket::AF_INET6
374
+ if addr < 0 || addr > IN6MASK
375
+ raise ArgumentError, "invalid address"
376
+ end
377
+ else
378
+ raise ArgumentError, "unsupported address family"
379
+ end
380
+ @addr = addr
381
+ if family[0]
382
+ @family = family[0]
383
+ end
384
+ return self
385
+ end
386
+
387
+ def mask!(mask)
388
+ if mask.kind_of?(String)
389
+ if mask =~ /^\d+$/
390
+ prefixlen = mask.to_i
391
+ else
392
+ m = IPAddr.new(mask)
393
+ if m.family != @family
394
+ raise ArgumentError, "address family is not same"
395
+ end
396
+ @mask_addr = m.to_i
397
+ @addr &= @mask_addr
398
+ return self
399
+ end
400
+ else
401
+ prefixlen = mask
402
+ end
403
+ case @family
404
+ when Socket::AF_INET
405
+ if prefixlen < 0 || prefixlen > 32
406
+ raise ArgumentError, "invalid length"
407
+ end
408
+ masklen = 32 - prefixlen
409
+ @mask_addr = ((IN4MASK >> masklen) << masklen)
410
+ when Socket::AF_INET6
411
+ if prefixlen < 0 || prefixlen > 128
412
+ raise ArgumentError, "invalid length"
413
+ end
414
+ masklen = 128 - prefixlen
415
+ @mask_addr = ((IN6MASK >> masklen) << masklen)
416
+ else
417
+ raise "unsupported address family"
418
+ end
419
+ @addr = ((@addr >> masklen) << masklen)
420
+ return self
421
+ end
422
+
423
+ private
424
+
425
+ # Creates a new ipaddr object either from a human readable IP
426
+ # address representation in string, or from a packed in_addr value
427
+ # followed by an address family.
428
+ #
429
+ # In the former case, the following are the valid formats that will
430
+ # be recognized: "address", "address/prefixlen" and "address/mask",
431
+ # where IPv6 address may be enclosed in square brackets (`[' and
432
+ # `]'). If a prefixlen or a mask is specified, it returns a masked
433
+ # IP address. Although the address family is determined
434
+ # automatically from a specified string, you can specify one
435
+ # explicitly by the optional second argument.
436
+ #
437
+ # Otherwise an IP addess is generated from a packed in_addr value
438
+ # and an address family.
439
+ #
440
+ # The IPAddr class defines many methods and operators, and some of
441
+ # those, such as &, |, include? and ==, accept a string, or a packed
442
+ # in_addr value instead of an IPAddr object.
443
+ def initialize(addr = '::', family = Socket::AF_UNSPEC)
444
+ if !addr.kind_of?(String)
445
+ case family
446
+ when Socket::AF_INET, Socket::AF_INET6
447
+ set(addr.to_i, family)
448
+ @mask_addr = (family == Socket::AF_INET) ? IN4MASK : IN6MASK
449
+ return
450
+ when Socket::AF_UNSPEC
451
+ raise ArgumentError, "address family must be specified"
452
+ else
453
+ raise ArgumentError, "unsupported address family: #{family}"
454
+ end
455
+ end
456
+ prefix, prefixlen = addr.split('/')
457
+ if prefix =~ /^\[(.*)\]$/i
458
+ prefix = $1
459
+ family = Socket::AF_INET6
460
+ end
461
+ # It seems AI_NUMERICHOST doesn't do the job.
462
+ #Socket.getaddrinfo(left, nil, Socket::AF_INET6, Socket::SOCK_STREAM, nil,
463
+ # Socket::AI_NUMERICHOST)
464
+ begin
465
+ IPSocket.getaddress(prefix) # test if address is vaild
466
+ rescue
467
+ raise ArgumentError, "invalid address"
468
+ end
469
+ @addr = @family = nil
470
+ if family == Socket::AF_UNSPEC || family == Socket::AF_INET
471
+ @addr = in_addr(prefix)
472
+ if @addr
473
+ @family = Socket::AF_INET
474
+ end
475
+ end
476
+ if !@addr && (family == Socket::AF_UNSPEC || family == Socket::AF_INET6)
477
+ @addr = in6_addr(prefix)
478
+ @family = Socket::AF_INET6
479
+ end
480
+ if family != Socket::AF_UNSPEC && @family != family
481
+ raise ArgumentError, "address family mismatch"
482
+ end
483
+ if prefixlen
484
+ mask!(prefixlen)
485
+ else
486
+ @mask_addr = (family == Socket::AF_INET) ? IN4MASK : IN6MASK
487
+ end
488
+ end
489
+
490
+ def coerce_other(other)
491
+ case other
492
+ when IPAddr
493
+ other
494
+ when String
495
+ self.class.new(other)
496
+ else
497
+ self.class.new(other, @family)
498
+ end
499
+ end
500
+
501
+ def in_addr(addr)
502
+ if addr =~ /^\d+\.\d+\.\d+\.\d+$/
503
+ return addr.split('.').inject(0) { |i, s|
504
+ i << 8 | s.to_i
505
+ }
506
+ end
507
+ return nil
508
+ end
509
+
510
+ def in6_addr(left)
511
+ case left
512
+ when /^::ffff:(\d+\.\d+\.\d+\.\d+)$/i
513
+ return in_addr($1) + 0xffff00000000
514
+ when /^::(\d+\.\d+\.\d+\.\d+)$/i
515
+ return in_addr($1)
516
+ when /[^0-9a-f:]/i
517
+ raise ArgumentError, "invalid address"
518
+ when /^(.*)::(.*)$/
519
+ left, right = $1, $2
520
+ else
521
+ right = ''
522
+ end
523
+ l = left.split(':')
524
+ r = right.split(':')
525
+ rest = 8 - l.size - r.size
526
+ if rest < 0
527
+ return nil
528
+ end
529
+ return (l + Array.new(rest, '0') + r).inject(0) { |i, s|
530
+ i << 16 | s.hex
531
+ }
532
+ end
533
+
534
+ def addr_mask(addr)
535
+ case @family
536
+ when Socket::AF_INET
537
+ return addr & IN4MASK
538
+ when Socket::AF_INET6
539
+ return addr & IN6MASK
540
+ else
541
+ raise "unsupported address family"
542
+ end
543
+ end
544
+
545
+ def _reverse
546
+ case @family
547
+ when Socket::AF_INET
548
+ return (0..3).map { |i|
549
+ (@addr >> (8 * i)) & 0xff
550
+ }.join('.')
551
+ when Socket::AF_INET6
552
+ return ("%.32x" % @addr).reverse!.gsub!(/.(?!$)/, '\&.')
553
+ else
554
+ raise "unsupported address family"
555
+ end
556
+ end
557
+
558
+ def _to_string(addr)
559
+ case @family
560
+ when Socket::AF_INET
561
+ return (0..3).map { |i|
562
+ (addr >> (24 - 8 * i)) & 0xff
563
+ }.join('.')
564
+ when Socket::AF_INET6
565
+ return (("%.32x" % addr).gsub!(/.{4}(?!$)/, '\&:'))
566
+ else
567
+ raise "unsupported address family"
568
+ end
569
+ end
570
+
571
+ end
572
+
573
+ if $0 == __FILE__
574
+ eval DATA.read, nil, $0, __LINE__+4
575
+ end
576
+
577
+ __END__
578
+
579
+ require 'test/unit'
580
+ require 'test/unit/ui/console/testrunner'
581
+
582
+ class TC_IPAddr < Test::Unit::TestCase
583
+ def test_s_new
584
+ assert_nothing_raised {
585
+ IPAddr.new("3FFE:505:ffff::/48")
586
+ IPAddr.new("0:0:0:1::")
587
+ IPAddr.new("2001:200:300::/48")
588
+ }
589
+
590
+ a = IPAddr.new
591
+ assert_equal("::", a.to_s)
592
+ assert_equal("0000:0000:0000:0000:0000:0000:0000:0000", a.to_string)
593
+ assert_equal(Socket::AF_INET6, a.family)
594
+
595
+ a = IPAddr.new("0123:4567:89ab:cdef:0ABC:DEF0:1234:5678")
596
+ assert_equal("123:4567:89ab:cdef:abc:def0:1234:5678", a.to_s)
597
+ assert_equal("0123:4567:89ab:cdef:0abc:def0:1234:5678", a.to_string)
598
+ assert_equal(Socket::AF_INET6, a.family)
599
+
600
+ a = IPAddr.new("3ffe:505:2::/48")
601
+ assert_equal("3ffe:505:2::", a.to_s)
602
+ assert_equal("3ffe:0505:0002:0000:0000:0000:0000:0000", a.to_string)
603
+ assert_equal(Socket::AF_INET6, a.family)
604
+ assert_equal(false, a.ipv4?)
605
+ assert_equal(true, a.ipv6?)
606
+ assert_equal("#<IPAddr: IPv6:3ffe:0505:0002:0000:0000:0000:0000:0000/ffff:ffff:ffff:0000:0000:0000:0000:0000>", a.inspect)
607
+
608
+ a = IPAddr.new("3ffe:505:2::/ffff:ffff:ffff::")
609
+ assert_equal("3ffe:505:2::", a.to_s)
610
+ assert_equal("3ffe:0505:0002:0000:0000:0000:0000:0000", a.to_string)
611
+ assert_equal(Socket::AF_INET6, a.family)
612
+
613
+ a = IPAddr.new("0.0.0.0")
614
+ assert_equal("0.0.0.0", a.to_s)
615
+ assert_equal("0.0.0.0", a.to_string)
616
+ assert_equal(Socket::AF_INET, a.family)
617
+
618
+ a = IPAddr.new("192.168.1.2")
619
+ assert_equal("192.168.1.2", a.to_s)
620
+ assert_equal("192.168.1.2", a.to_string)
621
+ assert_equal(Socket::AF_INET, a.family)
622
+ assert_equal(true, a.ipv4?)
623
+ assert_equal(false, a.ipv6?)
624
+
625
+ a = IPAddr.new("192.168.1.2/24")
626
+ assert_equal("192.168.1.0", a.to_s)
627
+ assert_equal("192.168.1.0", a.to_string)
628
+ assert_equal(Socket::AF_INET, a.family)
629
+ assert_equal("#<IPAddr: IPv4:192.168.1.0/255.255.255.0>", a.inspect)
630
+
631
+ a = IPAddr.new("192.168.1.2/255.255.255.0")
632
+ assert_equal("192.168.1.0", a.to_s)
633
+ assert_equal("192.168.1.0", a.to_string)
634
+ assert_equal(Socket::AF_INET, a.family)
635
+
636
+ assert_equal("0:0:0:1::", IPAddr.new("0:0:0:1::").to_s)
637
+ assert_equal("2001:200:300::", IPAddr.new("2001:200:300::/48").to_s)
638
+
639
+ assert_equal("2001:200:300::", IPAddr.new("[2001:200:300::]/48").to_s)
640
+
641
+ [
642
+ ["fe80::1%fxp0"],
643
+ ["::1/255.255.255.0"],
644
+ ["::1:192.168.1.2/120"],
645
+ [IPAddr.new("::1").to_i],
646
+ ["::ffff:192.168.1.2/120", Socket::AF_INET],
647
+ ["[192.168.1.2]/120"],
648
+ ].each { |args|
649
+ assert_raises(ArgumentError) {
650
+ IPAddr.new(*args)
651
+ }
652
+ }
653
+ end
654
+
655
+ def test_s_new_ntoh
656
+ addr = ''
657
+ IPAddr.new("1234:5678:9abc:def0:1234:5678:9abc:def0").hton.each_byte { |c|
658
+ addr += sprintf("%02x", c)
659
+ }
660
+ assert_equal("123456789abcdef0123456789abcdef0", addr)
661
+ addr = ''
662
+ IPAddr.new("123.45.67.89").hton.each_byte { |c|
663
+ addr += sprintf("%02x", c)
664
+ }
665
+ assert_equal(sprintf("%02x%02x%02x%02x", 123, 45, 67, 89), addr)
666
+ a = IPAddr.new("3ffe:505:2::")
667
+ assert_equal("3ffe:505:2::", IPAddr.new_ntoh(a.hton).to_s)
668
+ a = IPAddr.new("192.168.2.1")
669
+ assert_equal("192.168.2.1", IPAddr.new_ntoh(a.hton).to_s)
670
+ end
671
+
672
+ def test_ipv4_compat
673
+ a = IPAddr.new("::192.168.1.2")
674
+ assert_equal("::192.168.1.2", a.to_s)
675
+ assert_equal("0000:0000:0000:0000:0000:0000:c0a8:0102", a.to_string)
676
+ assert_equal(Socket::AF_INET6, a.family)
677
+ assert_equal(true, a.ipv4_compat?)
678
+ b = a.native
679
+ assert_equal("192.168.1.2", b.to_s)
680
+ assert_equal(Socket::AF_INET, b.family)
681
+ assert_equal(false, b.ipv4_compat?)
682
+
683
+ a = IPAddr.new("192.168.1.2")
684
+ b = a.ipv4_compat
685
+ assert_equal("::192.168.1.2", b.to_s)
686
+ assert_equal(Socket::AF_INET6, b.family)
687
+ end
688
+
689
+ def test_ipv4_mapped
690
+ a = IPAddr.new("::ffff:192.168.1.2")
691
+ assert_equal("::ffff:192.168.1.2", a.to_s)
692
+ assert_equal("0000:0000:0000:0000:0000:ffff:c0a8:0102", a.to_string)
693
+ assert_equal(Socket::AF_INET6, a.family)
694
+ assert_equal(true, a.ipv4_mapped?)
695
+ b = a.native
696
+ assert_equal("192.168.1.2", b.to_s)
697
+ assert_equal(Socket::AF_INET, b.family)
698
+ assert_equal(false, b.ipv4_mapped?)
699
+
700
+ a = IPAddr.new("192.168.1.2")
701
+ b = a.ipv4_mapped
702
+ assert_equal("::ffff:192.168.1.2", b.to_s)
703
+ assert_equal(Socket::AF_INET6, b.family)
704
+ end
705
+
706
+ def test_reverse
707
+ assert_equal("f.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.5.0.5.0.e.f.f.3.ip6.arpa", IPAddr.new("3ffe:505:2::f").reverse)
708
+ assert_equal("1.2.168.192.in-addr.arpa", IPAddr.new("192.168.2.1").reverse)
709
+ end
710
+
711
+ def test_ip6_arpa
712
+ assert_equal("f.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.5.0.5.0.e.f.f.3.ip6.arpa", IPAddr.new("3ffe:505:2::f").ip6_arpa)
713
+ assert_raises(ArgumentError) {
714
+ IPAddr.new("192.168.2.1").ip6_arpa
715
+ }
716
+ end
717
+
718
+ def test_ip6_int
719
+ assert_equal("f.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.5.0.5.0.e.f.f.3.ip6.int", IPAddr.new("3ffe:505:2::f").ip6_int)
720
+ assert_raises(ArgumentError) {
721
+ IPAddr.new("192.168.2.1").ip6_int
722
+ }
723
+ end
724
+
725
+ def test_to_s
726
+ assert_equal("3ffe:0505:0002:0000:0000:0000:0000:0001", IPAddr.new("3ffe:505:2::1").to_string)
727
+ assert_equal("3ffe:505:2::1", IPAddr.new("3ffe:505:2::1").to_s)
728
+ end
729
+ end
730
+
731
+ class TC_Operator < Test::Unit::TestCase
732
+
733
+ IN6MASK32 = "ffff:ffff::"
734
+ IN6MASK128 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"
735
+
736
+ def setup
737
+ @in6_addr_any = IPAddr.new()
738
+ @a = IPAddr.new("3ffe:505:2::/48")
739
+ @b = IPAddr.new("0:0:0:1::")
740
+ @c = IPAddr.new(IN6MASK32)
741
+ end
742
+ alias set_up setup
743
+
744
+ def test_or
745
+ assert_equal("3ffe:505:2:1::", (@a | @b).to_s)
746
+ a = @a
747
+ a |= @b
748
+ assert_equal("3ffe:505:2:1::", a.to_s)
749
+ assert_equal("3ffe:505:2::", @a.to_s)
750
+ assert_equal("3ffe:505:2:1::",
751
+ (@a | 0x00000000000000010000000000000000).to_s)
752
+ end
753
+
754
+ def test_and
755
+ assert_equal("3ffe:505::", (@a & @c).to_s)
756
+ a = @a
757
+ a &= @c
758
+ assert_equal("3ffe:505::", a.to_s)
759
+ assert_equal("3ffe:505:2::", @a.to_s)
760
+ assert_equal("3ffe:505::", (@a & 0xffffffff000000000000000000000000).to_s)
761
+ end
762
+
763
+ def test_shift_right
764
+ assert_equal("0:3ffe:505:2::", (@a >> 16).to_s)
765
+ a = @a
766
+ a >>= 16
767
+ assert_equal("0:3ffe:505:2::", a.to_s)
768
+ assert_equal("3ffe:505:2::", @a.to_s)
769
+ end
770
+
771
+ def test_shift_left
772
+ assert_equal("505:2::", (@a << 16).to_s)
773
+ a = @a
774
+ a <<= 16
775
+ assert_equal("505:2::", a.to_s)
776
+ assert_equal("3ffe:505:2::", @a.to_s)
777
+ end
778
+
779
+ def test_carrot
780
+ a = ~@in6_addr_any
781
+ assert_equal(IN6MASK128, a.to_s)
782
+ assert_equal("::", @in6_addr_any.to_s)
783
+ end
784
+
785
+ def test_equal
786
+ assert_equal(true, @a == IPAddr.new("3ffe:505:2::"))
787
+ assert_equal(false, @a == IPAddr.new("3ffe:505:3::"))
788
+ assert_equal(true, @a != IPAddr.new("3ffe:505:3::"))
789
+ assert_equal(false, @a != IPAddr.new("3ffe:505:2::"))
790
+ end
791
+
792
+ def test_mask
793
+ a = @a.mask(32)
794
+ assert_equal("3ffe:505::", a.to_s)
795
+ assert_equal("3ffe:505:2::", @a.to_s)
796
+ end
797
+
798
+ def test_include?
799
+ assert_equal(true, @a.include?(IPAddr.new("3ffe:505:2::")))
800
+ assert_equal(true, @a.include?(IPAddr.new("3ffe:505:2::1")))
801
+ assert_equal(false, @a.include?(IPAddr.new("3ffe:505:3::")))
802
+ net1 = IPAddr.new("192.168.2.0/24")
803
+ assert_equal(true, net1.include?(IPAddr.new("192.168.2.0")))
804
+ assert_equal(true, net1.include?(IPAddr.new("192.168.2.255")))
805
+ assert_equal(false, net1.include?(IPAddr.new("192.168.3.0")))
806
+ # test with integer parameter
807
+ int = (192 << 24) + (168 << 16) + (2 << 8) + 13
808
+
809
+ assert_equal(true, net1.include?(int))
810
+ assert_equal(false, net1.include?(int+255))
811
+
812
+ end
813
+
814
+ end