ruby_on_ruby 0.0.1

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