shoesgem 0.1424.0

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 (808) hide show
  1. data/LICENSE +30 -0
  2. data/README.rdoc +31 -0
  3. data/lib/shoes.rb +4 -0
  4. data/shoes/CHANGELOG.txt +21 -0
  5. data/shoes/COPYING.txt +30 -0
  6. data/shoes/README.txt +117 -0
  7. data/shoes/VERSION.txt +1 -0
  8. data/shoes/fonts/Coolvetica.ttf +0 -0
  9. data/shoes/fonts/Lacuna.ttf +0 -0
  10. data/shoes/freetype6.dll +0 -0
  11. data/shoes/lib/shoes/cache.rb +54 -0
  12. data/shoes/lib/shoes/data.rb +39 -0
  13. data/shoes/lib/shoes/help.rb +421 -0
  14. data/shoes/lib/shoes/image.rb +25 -0
  15. data/shoes/lib/shoes/inspect.rb +128 -0
  16. data/shoes/lib/shoes/log.rb +48 -0
  17. data/shoes/lib/shoes/minitar.rb +986 -0
  18. data/shoes/lib/shoes/override.rb +38 -0
  19. data/shoes/lib/shoes/pack.rb +503 -0
  20. data/shoes/lib/shoes/search.rb +46 -0
  21. data/shoes/lib/shoes/setup.rb +329 -0
  22. data/shoes/lib/shoes/shy.rb +131 -0
  23. data/shoes/lib/shoes/shybuilder.rb +44 -0
  24. data/shoes/lib/shoes.rb +522 -0
  25. data/shoes/libcairo-2.dll +0 -0
  26. data/shoes/libeay32.dll +0 -0
  27. data/shoes/libexpat-1.dll +0 -0
  28. data/shoes/libfontconfig-1.dll +0 -0
  29. data/shoes/libgio-2.0-0.dll +0 -0
  30. data/shoes/libglib-2.0-0.dll +0 -0
  31. data/shoes/libgmodule-2.0-0.dll +0 -0
  32. data/shoes/libgobject-2.0-0.dll +0 -0
  33. data/shoes/libgthread-2.0-0.dll +0 -0
  34. data/shoes/libiconv2.dll +0 -0
  35. data/shoes/libjpeg-8.dll +0 -0
  36. data/shoes/libpango-1.0-0.dll +0 -0
  37. data/shoes/libpangocairo-1.0-0.dll +0 -0
  38. data/shoes/libpangoft2-1.0-0.dll +0 -0
  39. data/shoes/libpangowin32-1.0-0.dll +0 -0
  40. data/shoes/libpng14-14.dll +0 -0
  41. data/shoes/libportaudio-2.dll +0 -0
  42. data/shoes/libshoes.dll +0 -0
  43. data/shoes/libssl32.dll +0 -0
  44. data/shoes/libungif4.dll +0 -0
  45. data/shoes/msvcrt-ruby191.dll +0 -0
  46. data/shoes/readline5.dll +0 -0
  47. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/fast_xs.so +0 -0
  48. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/blankslate.rb +63 -0
  49. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/builder.rb +216 -0
  50. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/elements.rb +510 -0
  51. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/htmlinfo.rb +691 -0
  52. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/inspect.rb +103 -0
  53. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/modules.rb +40 -0
  54. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/parse.rb +38 -0
  55. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/tag.rb +202 -0
  56. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/tags.rb +164 -0
  57. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/traverse.rb +838 -0
  58. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/xchar.rb +94 -0
  59. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot.rb +26 -0
  60. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot_scan.so +0 -0
  61. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/add/core.rb +135 -0
  62. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/add/rails.rb +58 -0
  63. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/common.rb +354 -0
  64. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/ext/generator.so +0 -0
  65. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/ext/parser.so +0 -0
  66. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/ext.rb +13 -0
  67. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/version.rb +9 -0
  68. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json.rb +8 -0
  69. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/constants.rb +49 -0
  70. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/database.rb +721 -0
  71. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/driver/dl/api.rb +152 -0
  72. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/driver/dl/driver.rb +307 -0
  73. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/driver/native/driver.rb +219 -0
  74. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/errors.rb +68 -0
  75. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/pragmas.rb +271 -0
  76. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/resultset.rb +180 -0
  77. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/statement.rb +231 -0
  78. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/translator.rb +109 -0
  79. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/value.rb +57 -0
  80. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/version.rb +16 -0
  81. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3.rb +1 -0
  82. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3_api.so +0 -0
  83. data/shoes/ruby/gems/1.9.1/specifications/hpricot-0.8.1.gemspec +32 -0
  84. data/shoes/ruby/gems/1.9.1/specifications/json-shoes-1.1.3.gemspec +34 -0
  85. data/shoes/ruby/gems/1.9.1/specifications/sqlite3-ruby-1.2.5-x86-mswin32.gemspec +46 -0
  86. data/shoes/ruby/lib/English.rb +155 -0
  87. data/shoes/ruby/lib/Win32API.rb +28 -0
  88. data/shoes/ruby/lib/abbrev.rb +103 -0
  89. data/shoes/ruby/lib/base64.rb +91 -0
  90. data/shoes/ruby/lib/benchmark.rb +573 -0
  91. data/shoes/ruby/lib/bigdecimal/jacobian.rb +85 -0
  92. data/shoes/ruby/lib/bigdecimal/ludcmp.rb +86 -0
  93. data/shoes/ruby/lib/bigdecimal/math.rb +237 -0
  94. data/shoes/ruby/lib/bigdecimal/newton.rb +77 -0
  95. data/shoes/ruby/lib/bigdecimal/util.rb +53 -0
  96. data/shoes/ruby/lib/cgi/cookie.rb +144 -0
  97. data/shoes/ruby/lib/cgi/core.rb +786 -0
  98. data/shoes/ruby/lib/cgi/html.rb +1021 -0
  99. data/shoes/ruby/lib/cgi/session/pstore.rb +111 -0
  100. data/shoes/ruby/lib/cgi/session.rb +537 -0
  101. data/shoes/ruby/lib/cgi/util.rb +181 -0
  102. data/shoes/ruby/lib/cgi.rb +274 -0
  103. data/shoes/ruby/lib/cmath.rb +233 -0
  104. data/shoes/ruby/lib/complex.rb +24 -0
  105. data/shoes/ruby/lib/csv.rb +2320 -0
  106. data/shoes/ruby/lib/date/format.rb +1313 -0
  107. data/shoes/ruby/lib/date.rb +1834 -0
  108. data/shoes/ruby/lib/debug.rb +907 -0
  109. data/shoes/ruby/lib/delegate.rb +311 -0
  110. data/shoes/ruby/lib/digest/hmac.rb +274 -0
  111. data/shoes/ruby/lib/digest/sha2.rb +74 -0
  112. data/shoes/ruby/lib/digest.rb +50 -0
  113. data/shoes/ruby/lib/dl/callback.rb +69 -0
  114. data/shoes/ruby/lib/dl/cparser.rb +109 -0
  115. data/shoes/ruby/lib/dl/func.rb +153 -0
  116. data/shoes/ruby/lib/dl/import.rb +215 -0
  117. data/shoes/ruby/lib/dl/pack.rb +173 -0
  118. data/shoes/ruby/lib/dl/stack.rb +146 -0
  119. data/shoes/ruby/lib/dl/struct.rb +213 -0
  120. data/shoes/ruby/lib/dl/types.rb +40 -0
  121. data/shoes/ruby/lib/dl/value.rb +112 -0
  122. data/shoes/ruby/lib/drb/acl.rb +146 -0
  123. data/shoes/ruby/lib/drb/drb.rb +1778 -0
  124. data/shoes/ruby/lib/drb/eq.rb +16 -0
  125. data/shoes/ruby/lib/drb/extserv.rb +71 -0
  126. data/shoes/ruby/lib/drb/extservm.rb +85 -0
  127. data/shoes/ruby/lib/drb/gw.rb +122 -0
  128. data/shoes/ruby/lib/drb/invokemethod.rb +34 -0
  129. data/shoes/ruby/lib/drb/observer.rb +22 -0
  130. data/shoes/ruby/lib/drb/ssl.rb +190 -0
  131. data/shoes/ruby/lib/drb/timeridconv.rb +91 -0
  132. data/shoes/ruby/lib/drb/unix.rb +108 -0
  133. data/shoes/ruby/lib/drb.rb +2 -0
  134. data/shoes/ruby/lib/e2mmap.rb +172 -0
  135. data/shoes/ruby/lib/erb.rb +902 -0
  136. data/shoes/ruby/lib/fileutils.rb +1592 -0
  137. data/shoes/ruby/lib/find.rb +81 -0
  138. data/shoes/ruby/lib/forwardable.rb +270 -0
  139. data/shoes/ruby/lib/ftsearch/analysis/analyzer.rb +16 -0
  140. data/shoes/ruby/lib/ftsearch/analysis/simple_identifier_analyzer.rb +23 -0
  141. data/shoes/ruby/lib/ftsearch/analysis/whitespace_analyzer.rb +22 -0
  142. data/shoes/ruby/lib/ftsearch/document_map_reader.rb +106 -0
  143. data/shoes/ruby/lib/ftsearch/document_map_writer.rb +46 -0
  144. data/shoes/ruby/lib/ftsearch/field_infos.rb +46 -0
  145. data/shoes/ruby/lib/ftsearch/fragment_writer.rb +114 -0
  146. data/shoes/ruby/lib/ftsearch/fulltext_reader.rb +52 -0
  147. data/shoes/ruby/lib/ftsearch/fulltext_writer.rb +75 -0
  148. data/shoes/ruby/lib/ftsearch/suffix_array_reader.rb +275 -0
  149. data/shoes/ruby/lib/ftsearch/suffix_array_writer.rb +99 -0
  150. data/shoes/ruby/lib/ftsearch/util.rb +21 -0
  151. data/shoes/ruby/lib/getoptlong.rb +610 -0
  152. data/shoes/ruby/lib/gserver.rb +253 -0
  153. data/shoes/ruby/lib/i386-mingw32/bigdecimal.so +0 -0
  154. data/shoes/ruby/lib/i386-mingw32/binject.so +0 -0
  155. data/shoes/ruby/lib/i386-mingw32/bloops.so +0 -0
  156. data/shoes/ruby/lib/i386-mingw32/continuation.so +0 -0
  157. data/shoes/ruby/lib/i386-mingw32/coverage.so +0 -0
  158. data/shoes/ruby/lib/i386-mingw32/curses.so +0 -0
  159. data/shoes/ruby/lib/i386-mingw32/digest/bubblebabble.so +0 -0
  160. data/shoes/ruby/lib/i386-mingw32/digest/md5.so +0 -0
  161. data/shoes/ruby/lib/i386-mingw32/digest/rmd160.so +0 -0
  162. data/shoes/ruby/lib/i386-mingw32/digest/sha1.so +0 -0
  163. data/shoes/ruby/lib/i386-mingw32/digest/sha2.so +0 -0
  164. data/shoes/ruby/lib/i386-mingw32/digest.so +0 -0
  165. data/shoes/ruby/lib/i386-mingw32/dl.so +0 -0
  166. data/shoes/ruby/lib/i386-mingw32/enc/big5.so +0 -0
  167. data/shoes/ruby/lib/i386-mingw32/enc/cp949.so +0 -0
  168. data/shoes/ruby/lib/i386-mingw32/enc/emacs_mule.so +0 -0
  169. data/shoes/ruby/lib/i386-mingw32/enc/encdb.so +0 -0
  170. data/shoes/ruby/lib/i386-mingw32/enc/euc_jp.so +0 -0
  171. data/shoes/ruby/lib/i386-mingw32/enc/euc_kr.so +0 -0
  172. data/shoes/ruby/lib/i386-mingw32/enc/euc_tw.so +0 -0
  173. data/shoes/ruby/lib/i386-mingw32/enc/gb18030.so +0 -0
  174. data/shoes/ruby/lib/i386-mingw32/enc/gb2312.so +0 -0
  175. data/shoes/ruby/lib/i386-mingw32/enc/gbk.so +0 -0
  176. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_1.so +0 -0
  177. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_10.so +0 -0
  178. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_11.so +0 -0
  179. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_13.so +0 -0
  180. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_14.so +0 -0
  181. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_15.so +0 -0
  182. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_16.so +0 -0
  183. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_2.so +0 -0
  184. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_3.so +0 -0
  185. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_4.so +0 -0
  186. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_5.so +0 -0
  187. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_6.so +0 -0
  188. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_7.so +0 -0
  189. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_8.so +0 -0
  190. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_9.so +0 -0
  191. data/shoes/ruby/lib/i386-mingw32/enc/koi8_r.so +0 -0
  192. data/shoes/ruby/lib/i386-mingw32/enc/koi8_u.so +0 -0
  193. data/shoes/ruby/lib/i386-mingw32/enc/shift_jis.so +0 -0
  194. data/shoes/ruby/lib/i386-mingw32/enc/trans/big5.so +0 -0
  195. data/shoes/ruby/lib/i386-mingw32/enc/trans/chinese.so +0 -0
  196. data/shoes/ruby/lib/i386-mingw32/enc/trans/escape.so +0 -0
  197. data/shoes/ruby/lib/i386-mingw32/enc/trans/gb18030.so +0 -0
  198. data/shoes/ruby/lib/i386-mingw32/enc/trans/gbk.so +0 -0
  199. data/shoes/ruby/lib/i386-mingw32/enc/trans/iso2022.so +0 -0
  200. data/shoes/ruby/lib/i386-mingw32/enc/trans/japanese.so +0 -0
  201. data/shoes/ruby/lib/i386-mingw32/enc/trans/japanese_euc.so +0 -0
  202. data/shoes/ruby/lib/i386-mingw32/enc/trans/japanese_sjis.so +0 -0
  203. data/shoes/ruby/lib/i386-mingw32/enc/trans/korean.so +0 -0
  204. data/shoes/ruby/lib/i386-mingw32/enc/trans/single_byte.so +0 -0
  205. data/shoes/ruby/lib/i386-mingw32/enc/trans/transdb.so +0 -0
  206. data/shoes/ruby/lib/i386-mingw32/enc/trans/utf_16_32.so +0 -0
  207. data/shoes/ruby/lib/i386-mingw32/enc/utf_16be.so +0 -0
  208. data/shoes/ruby/lib/i386-mingw32/enc/utf_16le.so +0 -0
  209. data/shoes/ruby/lib/i386-mingw32/enc/utf_32be.so +0 -0
  210. data/shoes/ruby/lib/i386-mingw32/enc/utf_32le.so +0 -0
  211. data/shoes/ruby/lib/i386-mingw32/enc/windows_1251.so +0 -0
  212. data/shoes/ruby/lib/i386-mingw32/etc.so +0 -0
  213. data/shoes/ruby/lib/i386-mingw32/fcntl.so +0 -0
  214. data/shoes/ruby/lib/i386-mingw32/fiber.so +0 -0
  215. data/shoes/ruby/lib/i386-mingw32/ftsearchrt.so +0 -0
  216. data/shoes/ruby/lib/i386-mingw32/gdbm.so +0 -0
  217. data/shoes/ruby/lib/i386-mingw32/iconv.so +0 -0
  218. data/shoes/ruby/lib/i386-mingw32/io/wait.so +0 -0
  219. data/shoes/ruby/lib/i386-mingw32/json/ext/generator.so +0 -0
  220. data/shoes/ruby/lib/i386-mingw32/json/ext/parser.so +0 -0
  221. data/shoes/ruby/lib/i386-mingw32/mathn/complex.so +0 -0
  222. data/shoes/ruby/lib/i386-mingw32/mathn/rational.so +0 -0
  223. data/shoes/ruby/lib/i386-mingw32/nkf.so +0 -0
  224. data/shoes/ruby/lib/i386-mingw32/openssl.so +0 -0
  225. data/shoes/ruby/lib/i386-mingw32/racc/cparse.so +0 -0
  226. data/shoes/ruby/lib/i386-mingw32/rbconfig.rb +196 -0
  227. data/shoes/ruby/lib/i386-mingw32/readline.so +0 -0
  228. data/shoes/ruby/lib/i386-mingw32/ripper.so +0 -0
  229. data/shoes/ruby/lib/i386-mingw32/sdbm.so +0 -0
  230. data/shoes/ruby/lib/i386-mingw32/socket.so +0 -0
  231. data/shoes/ruby/lib/i386-mingw32/stringio.so +0 -0
  232. data/shoes/ruby/lib/i386-mingw32/strscan.so +0 -0
  233. data/shoes/ruby/lib/i386-mingw32/syck.so +0 -0
  234. data/shoes/ruby/lib/i386-mingw32/win32ole.so +0 -0
  235. data/shoes/ruby/lib/i386-mingw32/zlib.so +0 -0
  236. data/shoes/ruby/lib/io/nonblock.rb +23 -0
  237. data/shoes/ruby/lib/ipaddr.rb +813 -0
  238. data/shoes/ruby/lib/irb/cmd/chws.rb +32 -0
  239. data/shoes/ruby/lib/irb/cmd/fork.rb +38 -0
  240. data/shoes/ruby/lib/irb/cmd/help.rb +36 -0
  241. data/shoes/ruby/lib/irb/cmd/load.rb +66 -0
  242. data/shoes/ruby/lib/irb/cmd/nop.rb +38 -0
  243. data/shoes/ruby/lib/irb/cmd/pushws.rb +38 -0
  244. data/shoes/ruby/lib/irb/cmd/subirb.rb +42 -0
  245. data/shoes/ruby/lib/irb/completion.rb +207 -0
  246. data/shoes/ruby/lib/irb/context.rb +255 -0
  247. data/shoes/ruby/lib/irb/ext/change-ws.rb +61 -0
  248. data/shoes/ruby/lib/irb/ext/history.rb +109 -0
  249. data/shoes/ruby/lib/irb/ext/loader.rb +119 -0
  250. data/shoes/ruby/lib/irb/ext/math-mode.rb +36 -0
  251. data/shoes/ruby/lib/irb/ext/multi-irb.rb +240 -0
  252. data/shoes/ruby/lib/irb/ext/save-history.rb +100 -0
  253. data/shoes/ruby/lib/irb/ext/tracer.rb +60 -0
  254. data/shoes/ruby/lib/irb/ext/use-loader.rb +64 -0
  255. data/shoes/ruby/lib/irb/ext/workspaces.rb +55 -0
  256. data/shoes/ruby/lib/irb/extend-command.rb +272 -0
  257. data/shoes/ruby/lib/irb/frame.rb +66 -0
  258. data/shoes/ruby/lib/irb/help.rb +35 -0
  259. data/shoes/ruby/lib/irb/init.rb +288 -0
  260. data/shoes/ruby/lib/irb/input-method.rb +142 -0
  261. data/shoes/ruby/lib/irb/lc/error.rb +29 -0
  262. data/shoes/ruby/lib/irb/lc/help-message +38 -0
  263. data/shoes/ruby/lib/irb/lc/ja/encoding_aliases.rb +8 -0
  264. data/shoes/ruby/lib/irb/lc/ja/error.rb +27 -0
  265. data/shoes/ruby/lib/irb/lc/ja/help-message +39 -0
  266. data/shoes/ruby/lib/irb/locale.rb +195 -0
  267. data/shoes/ruby/lib/irb/magic-file.rb +36 -0
  268. data/shoes/ruby/lib/irb/notifier.rb +144 -0
  269. data/shoes/ruby/lib/irb/output-method.rb +69 -0
  270. data/shoes/ruby/lib/irb/ruby-lex.rb +1188 -0
  271. data/shoes/ruby/lib/irb/ruby-token.rb +270 -0
  272. data/shoes/ruby/lib/irb/slex.rb +282 -0
  273. data/shoes/ruby/lib/irb/src_encoding.rb +4 -0
  274. data/shoes/ruby/lib/irb/version.rb +15 -0
  275. data/shoes/ruby/lib/irb/workspace.rb +108 -0
  276. data/shoes/ruby/lib/irb/ws-for-case-2.rb +14 -0
  277. data/shoes/ruby/lib/irb/xmp.rb +97 -0
  278. data/shoes/ruby/lib/irb.rb +354 -0
  279. data/shoes/ruby/lib/json/add/core.rb +135 -0
  280. data/shoes/ruby/lib/json/add/rails.rb +58 -0
  281. data/shoes/ruby/lib/json/common.rb +354 -0
  282. data/shoes/ruby/lib/json/editor.rb +1371 -0
  283. data/shoes/ruby/lib/json/ext.rb +15 -0
  284. data/shoes/ruby/lib/json/version.rb +9 -0
  285. data/shoes/ruby/lib/json.rb +297 -0
  286. data/shoes/ruby/lib/kconv.rb +282 -0
  287. data/shoes/ruby/lib/logger.rb +732 -0
  288. data/shoes/ruby/lib/mathn.rb +206 -0
  289. data/shoes/ruby/lib/matrix.rb +1381 -0
  290. data/shoes/ruby/lib/minitest/autorun.rb +9 -0
  291. data/shoes/ruby/lib/minitest/mock.rb +37 -0
  292. data/shoes/ruby/lib/minitest/spec.rb +89 -0
  293. data/shoes/ruby/lib/minitest/unit.rb +497 -0
  294. data/shoes/ruby/lib/mkmf.rb +1958 -0
  295. data/shoes/ruby/lib/monitor.rb +265 -0
  296. data/shoes/ruby/lib/mutex_m.rb +91 -0
  297. data/shoes/ruby/lib/net/ftp.rb +981 -0
  298. data/shoes/ruby/lib/net/http.rb +2399 -0
  299. data/shoes/ruby/lib/net/https.rb +136 -0
  300. data/shoes/ruby/lib/net/imap.rb +3500 -0
  301. data/shoes/ruby/lib/net/pop.rb +1000 -0
  302. data/shoes/ruby/lib/net/protocol.rb +382 -0
  303. data/shoes/ruby/lib/net/smtp.rb +1014 -0
  304. data/shoes/ruby/lib/net/telnet.rb +759 -0
  305. data/shoes/ruby/lib/observer.rb +193 -0
  306. data/shoes/ruby/lib/open-uri.rb +832 -0
  307. data/shoes/ruby/lib/open3.rb +98 -0
  308. data/shoes/ruby/lib/openssl/bn.rb +35 -0
  309. data/shoes/ruby/lib/openssl/buffering.rb +242 -0
  310. data/shoes/ruby/lib/openssl/cipher.rb +65 -0
  311. data/shoes/ruby/lib/openssl/digest.rb +61 -0
  312. data/shoes/ruby/lib/openssl/ssl.rb +178 -0
  313. data/shoes/ruby/lib/openssl/x509.rb +155 -0
  314. data/shoes/ruby/lib/openssl.rb +24 -0
  315. data/shoes/ruby/lib/optparse/date.rb +17 -0
  316. data/shoes/ruby/lib/optparse/shellwords.rb +6 -0
  317. data/shoes/ruby/lib/optparse/time.rb +10 -0
  318. data/shoes/ruby/lib/optparse/uri.rb +6 -0
  319. data/shoes/ruby/lib/optparse/version.rb +70 -0
  320. data/shoes/ruby/lib/optparse.rb +1810 -0
  321. data/shoes/ruby/lib/ostruct.rb +145 -0
  322. data/shoes/ruby/lib/pathname.rb +1099 -0
  323. data/shoes/ruby/lib/pp.rb +532 -0
  324. data/shoes/ruby/lib/prettyprint.rb +896 -0
  325. data/shoes/ruby/lib/prime.rb +471 -0
  326. data/shoes/ruby/lib/profile.rb +10 -0
  327. data/shoes/ruby/lib/profiler.rb +59 -0
  328. data/shoes/ruby/lib/pstore.rb +543 -0
  329. data/shoes/ruby/lib/racc/parser.rb +441 -0
  330. data/shoes/ruby/lib/rake/classic_namespace.rb +8 -0
  331. data/shoes/ruby/lib/rake/clean.rb +33 -0
  332. data/shoes/ruby/lib/rake/gempackagetask.rb +97 -0
  333. data/shoes/ruby/lib/rake/loaders/makefile.rb +35 -0
  334. data/shoes/ruby/lib/rake/packagetask.rb +185 -0
  335. data/shoes/ruby/lib/rake/rake_test_loader.rb +5 -0
  336. data/shoes/ruby/lib/rake/rdoctask.rb +147 -0
  337. data/shoes/ruby/lib/rake/runtest.rb +23 -0
  338. data/shoes/ruby/lib/rake/tasklib.rb +23 -0
  339. data/shoes/ruby/lib/rake/testtask.rb +161 -0
  340. data/shoes/ruby/lib/rake/win32.rb +34 -0
  341. data/shoes/ruby/lib/rake.rb +2465 -0
  342. data/shoes/ruby/lib/rational.rb +19 -0
  343. data/shoes/ruby/lib/rbconfig/datadir.rb +24 -0
  344. data/shoes/ruby/lib/rdoc/code_objects.rb +1061 -0
  345. data/shoes/ruby/lib/rdoc/diagram.rb +340 -0
  346. data/shoes/ruby/lib/rdoc/dot.rb +249 -0
  347. data/shoes/ruby/lib/rdoc/generator/chm/chm.rb +100 -0
  348. data/shoes/ruby/lib/rdoc/generator/chm.rb +113 -0
  349. data/shoes/ruby/lib/rdoc/generator/html/common.rb +24 -0
  350. data/shoes/ruby/lib/rdoc/generator/html/frameless.rb +92 -0
  351. data/shoes/ruby/lib/rdoc/generator/html/hefss.rb +150 -0
  352. data/shoes/ruby/lib/rdoc/generator/html/html.rb +769 -0
  353. data/shoes/ruby/lib/rdoc/generator/html/kilmer.rb +151 -0
  354. data/shoes/ruby/lib/rdoc/generator/html/kilmerfactory.rb +427 -0
  355. data/shoes/ruby/lib/rdoc/generator/html/one_page_html.rb +122 -0
  356. data/shoes/ruby/lib/rdoc/generator/html.rb +445 -0
  357. data/shoes/ruby/lib/rdoc/generator/ri.rb +226 -0
  358. data/shoes/ruby/lib/rdoc/generator/texinfo/class.texinfo.erb +44 -0
  359. data/shoes/ruby/lib/rdoc/generator/texinfo/file.texinfo.erb +6 -0
  360. data/shoes/ruby/lib/rdoc/generator/texinfo/method.texinfo.erb +6 -0
  361. data/shoes/ruby/lib/rdoc/generator/texinfo/texinfo.erb +28 -0
  362. data/shoes/ruby/lib/rdoc/generator/texinfo.rb +81 -0
  363. data/shoes/ruby/lib/rdoc/generator/xml/rdf.rb +113 -0
  364. data/shoes/ruby/lib/rdoc/generator/xml/xml.rb +123 -0
  365. data/shoes/ruby/lib/rdoc/generator/xml.rb +117 -0
  366. data/shoes/ruby/lib/rdoc/generator.rb +1082 -0
  367. data/shoes/ruby/lib/rdoc/known_classes.rb +68 -0
  368. data/shoes/ruby/lib/rdoc/markup/attribute_manager.rb +265 -0
  369. data/shoes/ruby/lib/rdoc/markup/formatter.rb +14 -0
  370. data/shoes/ruby/lib/rdoc/markup/fragments.rb +337 -0
  371. data/shoes/ruby/lib/rdoc/markup/inline.rb +101 -0
  372. data/shoes/ruby/lib/rdoc/markup/lines.rb +152 -0
  373. data/shoes/ruby/lib/rdoc/markup/preprocess.rb +75 -0
  374. data/shoes/ruby/lib/rdoc/markup/to_flow.rb +185 -0
  375. data/shoes/ruby/lib/rdoc/markup/to_html.rb +403 -0
  376. data/shoes/ruby/lib/rdoc/markup/to_html_crossref.rb +148 -0
  377. data/shoes/ruby/lib/rdoc/markup/to_latex.rb +328 -0
  378. data/shoes/ruby/lib/rdoc/markup/to_test.rb +50 -0
  379. data/shoes/ruby/lib/rdoc/markup/to_texinfo.rb +69 -0
  380. data/shoes/ruby/lib/rdoc/markup.rb +378 -0
  381. data/shoes/ruby/lib/rdoc/options.rb +638 -0
  382. data/shoes/ruby/lib/rdoc/parser/c.rb +661 -0
  383. data/shoes/ruby/lib/rdoc/parser/f95.rb +1835 -0
  384. data/shoes/ruby/lib/rdoc/parser/perl.rb +165 -0
  385. data/shoes/ruby/lib/rdoc/parser/ruby.rb +2829 -0
  386. data/shoes/ruby/lib/rdoc/parser/simple.rb +38 -0
  387. data/shoes/ruby/lib/rdoc/parser.rb +142 -0
  388. data/shoes/ruby/lib/rdoc/rdoc.rb +293 -0
  389. data/shoes/ruby/lib/rdoc/ri/cache.rb +187 -0
  390. data/shoes/ruby/lib/rdoc/ri/descriptions.rb +156 -0
  391. data/shoes/ruby/lib/rdoc/ri/display.rb +392 -0
  392. data/shoes/ruby/lib/rdoc/ri/driver.rb +669 -0
  393. data/shoes/ruby/lib/rdoc/ri/formatter.rb +616 -0
  394. data/shoes/ruby/lib/rdoc/ri/paths.rb +99 -0
  395. data/shoes/ruby/lib/rdoc/ri/reader.rb +106 -0
  396. data/shoes/ruby/lib/rdoc/ri/util.rb +79 -0
  397. data/shoes/ruby/lib/rdoc/ri/writer.rb +68 -0
  398. data/shoes/ruby/lib/rdoc/ri.rb +8 -0
  399. data/shoes/ruby/lib/rdoc/stats.rb +115 -0
  400. data/shoes/ruby/lib/rdoc/template.rb +64 -0
  401. data/shoes/ruby/lib/rdoc/tokenstream.rb +33 -0
  402. data/shoes/ruby/lib/rdoc.rb +395 -0
  403. data/shoes/ruby/lib/resolv-replace.rb +63 -0
  404. data/shoes/ruby/lib/resolv.rb +2262 -0
  405. data/shoes/ruby/lib/rexml/attlistdecl.rb +62 -0
  406. data/shoes/ruby/lib/rexml/attribute.rb +188 -0
  407. data/shoes/ruby/lib/rexml/cdata.rb +67 -0
  408. data/shoes/ruby/lib/rexml/child.rb +96 -0
  409. data/shoes/ruby/lib/rexml/comment.rb +80 -0
  410. data/shoes/ruby/lib/rexml/doctype.rb +270 -0
  411. data/shoes/ruby/lib/rexml/document.rb +231 -0
  412. data/shoes/ruby/lib/rexml/dtd/attlistdecl.rb +10 -0
  413. data/shoes/ruby/lib/rexml/dtd/dtd.rb +51 -0
  414. data/shoes/ruby/lib/rexml/dtd/elementdecl.rb +17 -0
  415. data/shoes/ruby/lib/rexml/dtd/entitydecl.rb +56 -0
  416. data/shoes/ruby/lib/rexml/dtd/notationdecl.rb +39 -0
  417. data/shoes/ruby/lib/rexml/element.rb +1246 -0
  418. data/shoes/ruby/lib/rexml/encoding.rb +71 -0
  419. data/shoes/ruby/lib/rexml/encodings/CP-1252.rb +103 -0
  420. data/shoes/ruby/lib/rexml/encodings/EUC-JP.rb +35 -0
  421. data/shoes/ruby/lib/rexml/encodings/ICONV.rb +22 -0
  422. data/shoes/ruby/lib/rexml/encodings/ISO-8859-1.rb +7 -0
  423. data/shoes/ruby/lib/rexml/encodings/ISO-8859-15.rb +72 -0
  424. data/shoes/ruby/lib/rexml/encodings/SHIFT-JIS.rb +37 -0
  425. data/shoes/ruby/lib/rexml/encodings/SHIFT_JIS.rb +1 -0
  426. data/shoes/ruby/lib/rexml/encodings/UNILE.rb +34 -0
  427. data/shoes/ruby/lib/rexml/encodings/US-ASCII.rb +30 -0
  428. data/shoes/ruby/lib/rexml/encodings/UTF-16.rb +35 -0
  429. data/shoes/ruby/lib/rexml/encodings/UTF-8.rb +18 -0
  430. data/shoes/ruby/lib/rexml/entity.rb +166 -0
  431. data/shoes/ruby/lib/rexml/formatters/default.rb +109 -0
  432. data/shoes/ruby/lib/rexml/formatters/pretty.rb +139 -0
  433. data/shoes/ruby/lib/rexml/formatters/transitive.rb +58 -0
  434. data/shoes/ruby/lib/rexml/functions.rb +388 -0
  435. data/shoes/ruby/lib/rexml/instruction.rb +70 -0
  436. data/shoes/ruby/lib/rexml/light/node.rb +196 -0
  437. data/shoes/ruby/lib/rexml/namespace.rb +47 -0
  438. data/shoes/ruby/lib/rexml/node.rb +75 -0
  439. data/shoes/ruby/lib/rexml/output.rb +24 -0
  440. data/shoes/ruby/lib/rexml/parent.rb +166 -0
  441. data/shoes/ruby/lib/rexml/parseexception.rb +51 -0
  442. data/shoes/ruby/lib/rexml/parsers/baseparser.rb +530 -0
  443. data/shoes/ruby/lib/rexml/parsers/lightparser.rb +58 -0
  444. data/shoes/ruby/lib/rexml/parsers/pullparser.rb +196 -0
  445. data/shoes/ruby/lib/rexml/parsers/sax2parser.rb +247 -0
  446. data/shoes/ruby/lib/rexml/parsers/streamparser.rb +46 -0
  447. data/shoes/ruby/lib/rexml/parsers/treeparser.rb +100 -0
  448. data/shoes/ruby/lib/rexml/parsers/ultralightparser.rb +56 -0
  449. data/shoes/ruby/lib/rexml/parsers/xpathparser.rb +698 -0
  450. data/shoes/ruby/lib/rexml/quickpath.rb +263 -0
  451. data/shoes/ruby/lib/rexml/rexml.rb +31 -0
  452. data/shoes/ruby/lib/rexml/sax2listener.rb +97 -0
  453. data/shoes/ruby/lib/rexml/source.rb +258 -0
  454. data/shoes/ruby/lib/rexml/streamlistener.rb +92 -0
  455. data/shoes/ruby/lib/rexml/syncenumerator.rb +32 -0
  456. data/shoes/ruby/lib/rexml/text.rb +404 -0
  457. data/shoes/ruby/lib/rexml/undefinednamespaceexception.rb +8 -0
  458. data/shoes/ruby/lib/rexml/validation/relaxng.rb +559 -0
  459. data/shoes/ruby/lib/rexml/validation/validation.rb +155 -0
  460. data/shoes/ruby/lib/rexml/validation/validationexception.rb +9 -0
  461. data/shoes/ruby/lib/rexml/xmldecl.rb +119 -0
  462. data/shoes/ruby/lib/rexml/xmltokens.rb +18 -0
  463. data/shoes/ruby/lib/rexml/xpath.rb +77 -0
  464. data/shoes/ruby/lib/rexml/xpath_parser.rb +792 -0
  465. data/shoes/ruby/lib/rinda/rinda.rb +283 -0
  466. data/shoes/ruby/lib/rinda/ring.rb +271 -0
  467. data/shoes/ruby/lib/rinda/tuplespace.rb +642 -0
  468. data/shoes/ruby/lib/ripper/core.rb +70 -0
  469. data/shoes/ruby/lib/ripper/filter.rb +70 -0
  470. data/shoes/ruby/lib/ripper/lexer.rb +179 -0
  471. data/shoes/ruby/lib/ripper/sexp.rb +99 -0
  472. data/shoes/ruby/lib/ripper.rb +4 -0
  473. data/shoes/ruby/lib/rss/0.9.rb +427 -0
  474. data/shoes/ruby/lib/rss/1.0.rb +452 -0
  475. data/shoes/ruby/lib/rss/2.0.rb +111 -0
  476. data/shoes/ruby/lib/rss/atom.rb +748 -0
  477. data/shoes/ruby/lib/rss/content/1.0.rb +10 -0
  478. data/shoes/ruby/lib/rss/content/2.0.rb +12 -0
  479. data/shoes/ruby/lib/rss/content.rb +31 -0
  480. data/shoes/ruby/lib/rss/converter.rb +170 -0
  481. data/shoes/ruby/lib/rss/dublincore/1.0.rb +13 -0
  482. data/shoes/ruby/lib/rss/dublincore/2.0.rb +13 -0
  483. data/shoes/ruby/lib/rss/dublincore/atom.rb +17 -0
  484. data/shoes/ruby/lib/rss/dublincore.rb +161 -0
  485. data/shoes/ruby/lib/rss/image.rb +193 -0
  486. data/shoes/ruby/lib/rss/itunes.rb +410 -0
  487. data/shoes/ruby/lib/rss/maker/0.9.rb +467 -0
  488. data/shoes/ruby/lib/rss/maker/1.0.rb +434 -0
  489. data/shoes/ruby/lib/rss/maker/2.0.rb +223 -0
  490. data/shoes/ruby/lib/rss/maker/atom.rb +172 -0
  491. data/shoes/ruby/lib/rss/maker/base.rb +880 -0
  492. data/shoes/ruby/lib/rss/maker/content.rb +21 -0
  493. data/shoes/ruby/lib/rss/maker/dublincore.rb +124 -0
  494. data/shoes/ruby/lib/rss/maker/entry.rb +163 -0
  495. data/shoes/ruby/lib/rss/maker/feed.rb +430 -0
  496. data/shoes/ruby/lib/rss/maker/image.rb +111 -0
  497. data/shoes/ruby/lib/rss/maker/itunes.rb +242 -0
  498. data/shoes/ruby/lib/rss/maker/slash.rb +33 -0
  499. data/shoes/ruby/lib/rss/maker/syndication.rb +18 -0
  500. data/shoes/ruby/lib/rss/maker/taxonomy.rb +118 -0
  501. data/shoes/ruby/lib/rss/maker/trackback.rb +61 -0
  502. data/shoes/ruby/lib/rss/maker.rb +44 -0
  503. data/shoes/ruby/lib/rss/parser.rb +568 -0
  504. data/shoes/ruby/lib/rss/rexmlparser.rb +54 -0
  505. data/shoes/ruby/lib/rss/rss.rb +1313 -0
  506. data/shoes/ruby/lib/rss/slash.rb +49 -0
  507. data/shoes/ruby/lib/rss/syndication.rb +67 -0
  508. data/shoes/ruby/lib/rss/taxonomy.rb +145 -0
  509. data/shoes/ruby/lib/rss/trackback.rb +288 -0
  510. data/shoes/ruby/lib/rss/utils.rb +111 -0
  511. data/shoes/ruby/lib/rss/xml-stylesheet.rb +105 -0
  512. data/shoes/ruby/lib/rss/xml.rb +71 -0
  513. data/shoes/ruby/lib/rss/xmlparser.rb +93 -0
  514. data/shoes/ruby/lib/rss/xmlscanner.rb +121 -0
  515. data/shoes/ruby/lib/rss.rb +19 -0
  516. data/shoes/ruby/lib/rubygems/builder.rb +88 -0
  517. data/shoes/ruby/lib/rubygems/command.rb +406 -0
  518. data/shoes/ruby/lib/rubygems/command_manager.rb +146 -0
  519. data/shoes/ruby/lib/rubygems/commands/build_command.rb +53 -0
  520. data/shoes/ruby/lib/rubygems/commands/cert_command.rb +86 -0
  521. data/shoes/ruby/lib/rubygems/commands/check_command.rb +75 -0
  522. data/shoes/ruby/lib/rubygems/commands/cleanup_command.rb +91 -0
  523. data/shoes/ruby/lib/rubygems/commands/contents_command.rb +74 -0
  524. data/shoes/ruby/lib/rubygems/commands/dependency_command.rb +188 -0
  525. data/shoes/ruby/lib/rubygems/commands/environment_command.rb +128 -0
  526. data/shoes/ruby/lib/rubygems/commands/fetch_command.rb +62 -0
  527. data/shoes/ruby/lib/rubygems/commands/generate_index_command.rb +57 -0
  528. data/shoes/ruby/lib/rubygems/commands/help_command.rb +172 -0
  529. data/shoes/ruby/lib/rubygems/commands/install_command.rb +148 -0
  530. data/shoes/ruby/lib/rubygems/commands/list_command.rb +35 -0
  531. data/shoes/ruby/lib/rubygems/commands/lock_command.rb +110 -0
  532. data/shoes/ruby/lib/rubygems/commands/mirror_command.rb +111 -0
  533. data/shoes/ruby/lib/rubygems/commands/outdated_command.rb +33 -0
  534. data/shoes/ruby/lib/rubygems/commands/pristine_command.rb +93 -0
  535. data/shoes/ruby/lib/rubygems/commands/query_command.rb +233 -0
  536. data/shoes/ruby/lib/rubygems/commands/rdoc_command.rb +82 -0
  537. data/shoes/ruby/lib/rubygems/commands/search_command.rb +37 -0
  538. data/shoes/ruby/lib/rubygems/commands/server_command.rb +48 -0
  539. data/shoes/ruby/lib/rubygems/commands/sources_command.rb +152 -0
  540. data/shoes/ruby/lib/rubygems/commands/specification_command.rb +77 -0
  541. data/shoes/ruby/lib/rubygems/commands/stale_command.rb +27 -0
  542. data/shoes/ruby/lib/rubygems/commands/uninstall_command.rb +73 -0
  543. data/shoes/ruby/lib/rubygems/commands/unpack_command.rb +95 -0
  544. data/shoes/ruby/lib/rubygems/commands/update_command.rb +181 -0
  545. data/shoes/ruby/lib/rubygems/commands/which_command.rb +87 -0
  546. data/shoes/ruby/lib/rubygems/config_file.rb +266 -0
  547. data/shoes/ruby/lib/rubygems/custom_require.rb +46 -0
  548. data/shoes/ruby/lib/rubygems/defaults.rb +89 -0
  549. data/shoes/ruby/lib/rubygems/dependency.rb +119 -0
  550. data/shoes/ruby/lib/rubygems/dependency_installer.rb +258 -0
  551. data/shoes/ruby/lib/rubygems/dependency_list.rb +165 -0
  552. data/shoes/ruby/lib/rubygems/digest/digest_adapter.rb +40 -0
  553. data/shoes/ruby/lib/rubygems/digest/md5.rb +23 -0
  554. data/shoes/ruby/lib/rubygems/digest/sha1.rb +17 -0
  555. data/shoes/ruby/lib/rubygems/digest/sha2.rb +17 -0
  556. data/shoes/ruby/lib/rubygems/doc_manager.rb +214 -0
  557. data/shoes/ruby/lib/rubygems/exceptions.rb +84 -0
  558. data/shoes/ruby/lib/rubygems/ext/builder.rb +56 -0
  559. data/shoes/ruby/lib/rubygems/ext/configure_builder.rb +24 -0
  560. data/shoes/ruby/lib/rubygems/ext/ext_conf_builder.rb +23 -0
  561. data/shoes/ruby/lib/rubygems/ext/rake_builder.rb +27 -0
  562. data/shoes/ruby/lib/rubygems/ext.rb +18 -0
  563. data/shoes/ruby/lib/rubygems/format.rb +87 -0
  564. data/shoes/ruby/lib/rubygems/gem_openssl.rb +83 -0
  565. data/shoes/ruby/lib/rubygems/gem_path_searcher.rb +100 -0
  566. data/shoes/ruby/lib/rubygems/gem_runner.rb +58 -0
  567. data/shoes/ruby/lib/rubygems/indexer/abstract_index_builder.rb +88 -0
  568. data/shoes/ruby/lib/rubygems/indexer/latest_index_builder.rb +35 -0
  569. data/shoes/ruby/lib/rubygems/indexer/marshal_index_builder.rb +17 -0
  570. data/shoes/ruby/lib/rubygems/indexer/master_index_builder.rb +54 -0
  571. data/shoes/ruby/lib/rubygems/indexer/quick_index_builder.rb +50 -0
  572. data/shoes/ruby/lib/rubygems/indexer.rb +370 -0
  573. data/shoes/ruby/lib/rubygems/install_update_options.rb +113 -0
  574. data/shoes/ruby/lib/rubygems/installer.rb +578 -0
  575. data/shoes/ruby/lib/rubygems/local_remote_options.rb +134 -0
  576. data/shoes/ruby/lib/rubygems/old_format.rb +148 -0
  577. data/shoes/ruby/lib/rubygems/package/f_sync_dir.rb +24 -0
  578. data/shoes/ruby/lib/rubygems/package/tar_header.rb +245 -0
  579. data/shoes/ruby/lib/rubygems/package/tar_input.rb +219 -0
  580. data/shoes/ruby/lib/rubygems/package/tar_output.rb +143 -0
  581. data/shoes/ruby/lib/rubygems/package/tar_reader/entry.rb +99 -0
  582. data/shoes/ruby/lib/rubygems/package/tar_reader.rb +86 -0
  583. data/shoes/ruby/lib/rubygems/package/tar_writer.rb +180 -0
  584. data/shoes/ruby/lib/rubygems/package.rb +95 -0
  585. data/shoes/ruby/lib/rubygems/platform.rb +178 -0
  586. data/shoes/ruby/lib/rubygems/remote_fetcher.rb +344 -0
  587. data/shoes/ruby/lib/rubygems/require_paths_builder.rb +15 -0
  588. data/shoes/ruby/lib/rubygems/requirement.rb +163 -0
  589. data/shoes/ruby/lib/rubygems/rubygems_version.rb +6 -0
  590. data/shoes/ruby/lib/rubygems/security.rb +786 -0
  591. data/shoes/ruby/lib/rubygems/server.rb +629 -0
  592. data/shoes/ruby/lib/rubygems/source_index.rb +559 -0
  593. data/shoes/ruby/lib/rubygems/source_info_cache.rb +393 -0
  594. data/shoes/ruby/lib/rubygems/source_info_cache_entry.rb +56 -0
  595. data/shoes/ruby/lib/rubygems/spec_fetcher.rb +249 -0
  596. data/shoes/ruby/lib/rubygems/specification.rb +1262 -0
  597. data/shoes/ruby/lib/rubygems/test_utilities.rb +131 -0
  598. data/shoes/ruby/lib/rubygems/timer.rb +25 -0
  599. data/shoes/ruby/lib/rubygems/uninstaller.rb +242 -0
  600. data/shoes/ruby/lib/rubygems/user_interaction.rb +360 -0
  601. data/shoes/ruby/lib/rubygems/validator.rb +208 -0
  602. data/shoes/ruby/lib/rubygems/version.rb +167 -0
  603. data/shoes/ruby/lib/rubygems/version_option.rb +48 -0
  604. data/shoes/ruby/lib/rubygems.rb +888 -0
  605. data/shoes/ruby/lib/scanf.rb +703 -0
  606. data/shoes/ruby/lib/securerandom.rb +182 -0
  607. data/shoes/ruby/lib/set.rb +1274 -0
  608. data/shoes/ruby/lib/shell/builtin-command.rb +160 -0
  609. data/shoes/ruby/lib/shell/command-processor.rb +593 -0
  610. data/shoes/ruby/lib/shell/error.rb +25 -0
  611. data/shoes/ruby/lib/shell/filter.rb +109 -0
  612. data/shoes/ruby/lib/shell/process-controller.rb +319 -0
  613. data/shoes/ruby/lib/shell/system-command.rb +159 -0
  614. data/shoes/ruby/lib/shell/version.rb +15 -0
  615. data/shoes/ruby/lib/shell.rb +300 -0
  616. data/shoes/ruby/lib/shellwords.rb +156 -0
  617. data/shoes/ruby/lib/singleton.rb +313 -0
  618. data/shoes/ruby/lib/sync.rb +307 -0
  619. data/shoes/ruby/lib/tempfile.rb +218 -0
  620. data/shoes/ruby/lib/test/unit/assertions.rb +122 -0
  621. data/shoes/ruby/lib/test/unit/testcase.rb +12 -0
  622. data/shoes/ruby/lib/test/unit.rb +66 -0
  623. data/shoes/ruby/lib/thread.rb +367 -0
  624. data/shoes/ruby/lib/thwait.rb +168 -0
  625. data/shoes/ruby/lib/time.rb +869 -0
  626. data/shoes/ruby/lib/timeout.rb +108 -0
  627. data/shoes/ruby/lib/tmpdir.rb +138 -0
  628. data/shoes/ruby/lib/tracer.rb +166 -0
  629. data/shoes/ruby/lib/tsort.rb +290 -0
  630. data/shoes/ruby/lib/ubygems.rb +10 -0
  631. data/shoes/ruby/lib/un.rb +304 -0
  632. data/shoes/ruby/lib/uri/common.rb +727 -0
  633. data/shoes/ruby/lib/uri/ftp.rb +198 -0
  634. data/shoes/ruby/lib/uri/generic.rb +1128 -0
  635. data/shoes/ruby/lib/uri/http.rb +100 -0
  636. data/shoes/ruby/lib/uri/https.rb +20 -0
  637. data/shoes/ruby/lib/uri/ldap.rb +190 -0
  638. data/shoes/ruby/lib/uri/ldaps.rb +12 -0
  639. data/shoes/ruby/lib/uri/mailto.rb +266 -0
  640. data/shoes/ruby/lib/uri.rb +29 -0
  641. data/shoes/ruby/lib/weakref.rb +80 -0
  642. data/shoes/ruby/lib/webrick/accesslog.rb +75 -0
  643. data/shoes/ruby/lib/webrick/cgi.rb +260 -0
  644. data/shoes/ruby/lib/webrick/compat.rb +15 -0
  645. data/shoes/ruby/lib/webrick/config.rb +100 -0
  646. data/shoes/ruby/lib/webrick/cookie.rb +110 -0
  647. data/shoes/ruby/lib/webrick/htmlutils.rb +25 -0
  648. data/shoes/ruby/lib/webrick/httpauth/authenticator.rb +79 -0
  649. data/shoes/ruby/lib/webrick/httpauth/basicauth.rb +65 -0
  650. data/shoes/ruby/lib/webrick/httpauth/digestauth.rb +344 -0
  651. data/shoes/ruby/lib/webrick/httpauth/htdigest.rb +91 -0
  652. data/shoes/ruby/lib/webrick/httpauth/htgroup.rb +61 -0
  653. data/shoes/ruby/lib/webrick/httpauth/htpasswd.rb +83 -0
  654. data/shoes/ruby/lib/webrick/httpauth/userdb.rb +29 -0
  655. data/shoes/ruby/lib/webrick/httpauth.rb +45 -0
  656. data/shoes/ruby/lib/webrick/httpproxy.rb +288 -0
  657. data/shoes/ruby/lib/webrick/httprequest.rb +402 -0
  658. data/shoes/ruby/lib/webrick/httpresponse.rb +326 -0
  659. data/shoes/ruby/lib/webrick/https.rb +63 -0
  660. data/shoes/ruby/lib/webrick/httpserver.rb +217 -0
  661. data/shoes/ruby/lib/webrick/httpservlet/abstract.rb +70 -0
  662. data/shoes/ruby/lib/webrick/httpservlet/cgi_runner.rb +47 -0
  663. data/shoes/ruby/lib/webrick/httpservlet/cgihandler.rb +110 -0
  664. data/shoes/ruby/lib/webrick/httpservlet/erbhandler.rb +54 -0
  665. data/shoes/ruby/lib/webrick/httpservlet/filehandler.rb +435 -0
  666. data/shoes/ruby/lib/webrick/httpservlet/prochandler.rb +33 -0
  667. data/shoes/ruby/lib/webrick/httpservlet.rb +22 -0
  668. data/shoes/ruby/lib/webrick/httpstatus.rb +132 -0
  669. data/shoes/ruby/lib/webrick/httputils.rb +392 -0
  670. data/shoes/ruby/lib/webrick/httpversion.rb +49 -0
  671. data/shoes/ruby/lib/webrick/log.rb +88 -0
  672. data/shoes/ruby/lib/webrick/server.rb +210 -0
  673. data/shoes/ruby/lib/webrick/ssl.rb +126 -0
  674. data/shoes/ruby/lib/webrick/utils.rb +175 -0
  675. data/shoes/ruby/lib/webrick/version.rb +13 -0
  676. data/shoes/ruby/lib/webrick.rb +29 -0
  677. data/shoes/ruby/lib/win32/registry.rb +832 -0
  678. data/shoes/ruby/lib/win32/resolv.rb +370 -0
  679. data/shoes/ruby/lib/win32/sspi.rb +330 -0
  680. data/shoes/ruby/lib/win32ole/property.rb +16 -0
  681. data/shoes/ruby/lib/xmlrpc/base64.rb +81 -0
  682. data/shoes/ruby/lib/xmlrpc/client.rb +625 -0
  683. data/shoes/ruby/lib/xmlrpc/config.rb +40 -0
  684. data/shoes/ruby/lib/xmlrpc/create.rb +290 -0
  685. data/shoes/ruby/lib/xmlrpc/datetime.rb +142 -0
  686. data/shoes/ruby/lib/xmlrpc/httpserver.rb +178 -0
  687. data/shoes/ruby/lib/xmlrpc/marshal.rb +76 -0
  688. data/shoes/ruby/lib/xmlrpc/parser.rb +813 -0
  689. data/shoes/ruby/lib/xmlrpc/server.rb +778 -0
  690. data/shoes/ruby/lib/xmlrpc/utils.rb +165 -0
  691. data/shoes/ruby/lib/yaml/baseemitter.rb +242 -0
  692. data/shoes/ruby/lib/yaml/basenode.rb +216 -0
  693. data/shoes/ruby/lib/yaml/constants.rb +45 -0
  694. data/shoes/ruby/lib/yaml/dbm.rb +111 -0
  695. data/shoes/ruby/lib/yaml/encoding.rb +33 -0
  696. data/shoes/ruby/lib/yaml/error.rb +34 -0
  697. data/shoes/ruby/lib/yaml/loader.rb +14 -0
  698. data/shoes/ruby/lib/yaml/rubytypes.rb +446 -0
  699. data/shoes/ruby/lib/yaml/store.rb +43 -0
  700. data/shoes/ruby/lib/yaml/stream.rb +40 -0
  701. data/shoes/ruby/lib/yaml/stringio.rb +83 -0
  702. data/shoes/ruby/lib/yaml/syck.rb +19 -0
  703. data/shoes/ruby/lib/yaml/tag.rb +91 -0
  704. data/shoes/ruby/lib/yaml/types.rb +192 -0
  705. data/shoes/ruby/lib/yaml/yamlnode.rb +54 -0
  706. data/shoes/ruby/lib/yaml/ypath.rb +52 -0
  707. data/shoes/ruby/lib/yaml.rb +440 -0
  708. data/shoes/samples/class-book.rb +43 -0
  709. data/shoes/samples/class-book.yaml +387 -0
  710. data/shoes/samples/expert-definr.rb +23 -0
  711. data/shoes/samples/expert-funnies.rb +51 -0
  712. data/shoes/samples/expert-irb.rb +112 -0
  713. data/shoes/samples/expert-minesweeper.rb +267 -0
  714. data/shoes/samples/expert-othello.rb +319 -0
  715. data/shoes/samples/expert-pong.rb +62 -0
  716. data/shoes/samples/expert-tankspank.rb +385 -0
  717. data/shoes/samples/good-arc.rb +37 -0
  718. data/shoes/samples/good-clock.rb +51 -0
  719. data/shoes/samples/good-follow.rb +26 -0
  720. data/shoes/samples/good-reminder.rb +174 -0
  721. data/shoes/samples/good-vjot.rb +56 -0
  722. data/shoes/samples/simple-accordion.rb +75 -0
  723. data/shoes/samples/simple-anim-shapes.rb +17 -0
  724. data/shoes/samples/simple-anim-text.rb +13 -0
  725. data/shoes/samples/simple-arc.rb +23 -0
  726. data/shoes/samples/simple-bounce.rb +24 -0
  727. data/shoes/samples/simple-calc.rb +70 -0
  728. data/shoes/samples/simple-control-sizes.rb +24 -0
  729. data/shoes/samples/simple-curve.rb +26 -0
  730. data/shoes/samples/simple-dialogs.rb +29 -0
  731. data/shoes/samples/simple-downloader.rb +27 -0
  732. data/shoes/samples/simple-draw.rb +13 -0
  733. data/shoes/samples/simple-editor.rb +28 -0
  734. data/shoes/samples/simple-form.rb +28 -0
  735. data/shoes/samples/simple-form.shy +0 -0
  736. data/shoes/samples/simple-mask.rb +21 -0
  737. data/shoes/samples/simple-menu.rb +31 -0
  738. data/shoes/samples/simple-menu1.rb +35 -0
  739. data/shoes/samples/simple-rubygems.rb +29 -0
  740. data/shoes/samples/simple-slide.rb +45 -0
  741. data/shoes/samples/simple-sphere.rb +28 -0
  742. data/shoes/samples/simple-timer.rb +13 -0
  743. data/shoes/samples/simple-video.rb +13 -0
  744. data/shoes/shoes +21 -0
  745. data/shoes/shoes.exe +0 -0
  746. data/shoes/shoes.exe.manifest +17 -0
  747. data/shoes/sqlite3.dll +0 -0
  748. data/shoes/static/Shoes.icns +0 -0
  749. data/shoes/static/Thumbs.db +0 -0
  750. data/shoes/static/app-icon.png +0 -0
  751. data/shoes/static/avatar.png +0 -0
  752. data/shoes/static/code_highlighter.js +188 -0
  753. data/shoes/static/code_highlighter_ruby.js +26 -0
  754. data/shoes/static/icon-debug.png +0 -0
  755. data/shoes/static/icon-error.png +0 -0
  756. data/shoes/static/icon-info.png +0 -0
  757. data/shoes/static/icon-warn.png +0 -0
  758. data/shoes/static/listbox_button1.png +0 -0
  759. data/shoes/static/listbox_button2.png +0 -0
  760. data/shoes/static/man-app.png +0 -0
  761. data/shoes/static/man-builds.png +0 -0
  762. data/shoes/static/man-editor-notepad.png +0 -0
  763. data/shoes/static/man-editor-osx.png +0 -0
  764. data/shoes/static/man-ele-background.png +0 -0
  765. data/shoes/static/man-ele-border.png +0 -0
  766. data/shoes/static/man-ele-button.png +0 -0
  767. data/shoes/static/man-ele-check.png +0 -0
  768. data/shoes/static/man-ele-editbox.png +0 -0
  769. data/shoes/static/man-ele-editline.png +0 -0
  770. data/shoes/static/man-ele-image.png +0 -0
  771. data/shoes/static/man-ele-listbox.png +0 -0
  772. data/shoes/static/man-ele-progress.png +0 -0
  773. data/shoes/static/man-ele-radio.png +0 -0
  774. data/shoes/static/man-ele-shape.png +0 -0
  775. data/shoes/static/man-ele-textblock.png +0 -0
  776. data/shoes/static/man-ele-video.png +0 -0
  777. data/shoes/static/man-intro-dmg.png +0 -0
  778. data/shoes/static/man-intro-exe.png +0 -0
  779. data/shoes/static/man-look-tiger.png +0 -0
  780. data/shoes/static/man-look-ubuntu.png +0 -0
  781. data/shoes/static/man-look-vista.png +0 -0
  782. data/shoes/static/man-run-osx.png +0 -0
  783. data/shoes/static/man-run-vista.png +0 -0
  784. data/shoes/static/man-run-xp.png +0 -0
  785. data/shoes/static/man-shot1.png +0 -0
  786. data/shoes/static/manual-en.txt +2783 -0
  787. data/shoes/static/manual-ja.txt +2780 -0
  788. data/shoes/static/manual.css +167 -0
  789. data/shoes/static/menu-corner1.png +0 -0
  790. data/shoes/static/menu-corner2.png +0 -0
  791. data/shoes/static/menu-gray.png +0 -0
  792. data/shoes/static/menu-left.png +0 -0
  793. data/shoes/static/menu-right.png +0 -0
  794. data/shoes/static/menu-top.png +0 -0
  795. data/shoes/static/shoes-dmg.jpg +0 -0
  796. data/shoes/static/shoes-icon-blue.png +0 -0
  797. data/shoes/static/shoes-icon.png +0 -0
  798. data/shoes/static/shoes-manual-apps.gif +0 -0
  799. data/shoes/static/stripe.png +0 -0
  800. data/shoes/static/stubs/blank.exe +0 -0
  801. data/shoes/static/stubs/blank.hfz +0 -0
  802. data/shoes/static/stubs/blank.run +375 -0
  803. data/shoes/static/stubs/cocoa-install +0 -0
  804. data/shoes/static/stubs/sh-install +48 -0
  805. data/shoes/static/tutor-back.png +0 -0
  806. data/shoes/zlib.dll +0 -0
  807. data/shoes/zlib1.dll +0 -0
  808. metadata +887 -0
@@ -0,0 +1,813 @@
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 19504 2008-09-23 21:39:21Z ryan $
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_reader :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
+
581
+ class TC_IPAddr < Test::Unit::TestCase
582
+ def test_s_new
583
+ assert_nothing_raised {
584
+ IPAddr.new("3FFE:505:ffff::/48")
585
+ IPAddr.new("0:0:0:1::")
586
+ IPAddr.new("2001:200:300::/48")
587
+ }
588
+
589
+ a = IPAddr.new
590
+ assert_equal("::", a.to_s)
591
+ assert_equal("0000:0000:0000:0000:0000:0000:0000:0000", a.to_string)
592
+ assert_equal(Socket::AF_INET6, a.family)
593
+
594
+ a = IPAddr.new("0123:4567:89ab:cdef:0ABC:DEF0:1234:5678")
595
+ assert_equal("123:4567:89ab:cdef:abc:def0:1234:5678", a.to_s)
596
+ assert_equal("0123:4567:89ab:cdef:0abc:def0:1234:5678", a.to_string)
597
+ assert_equal(Socket::AF_INET6, a.family)
598
+
599
+ a = IPAddr.new("3ffe:505:2::/48")
600
+ assert_equal("3ffe:505:2::", a.to_s)
601
+ assert_equal("3ffe:0505:0002:0000:0000:0000:0000:0000", a.to_string)
602
+ assert_equal(Socket::AF_INET6, a.family)
603
+ assert_equal(false, a.ipv4?)
604
+ assert_equal(true, a.ipv6?)
605
+ assert_equal("#<IPAddr: IPv6:3ffe:0505:0002:0000:0000:0000:0000:0000/ffff:ffff:ffff:0000:0000:0000:0000:0000>", a.inspect)
606
+
607
+ a = IPAddr.new("3ffe:505:2::/ffff:ffff:ffff::")
608
+ assert_equal("3ffe:505:2::", a.to_s)
609
+ assert_equal("3ffe:0505:0002:0000:0000:0000:0000:0000", a.to_string)
610
+ assert_equal(Socket::AF_INET6, a.family)
611
+
612
+ a = IPAddr.new("0.0.0.0")
613
+ assert_equal("0.0.0.0", a.to_s)
614
+ assert_equal("0.0.0.0", a.to_string)
615
+ assert_equal(Socket::AF_INET, a.family)
616
+
617
+ a = IPAddr.new("192.168.1.2")
618
+ assert_equal("192.168.1.2", a.to_s)
619
+ assert_equal("192.168.1.2", a.to_string)
620
+ assert_equal(Socket::AF_INET, a.family)
621
+ assert_equal(true, a.ipv4?)
622
+ assert_equal(false, a.ipv6?)
623
+
624
+ a = IPAddr.new("192.168.1.2/24")
625
+ assert_equal("192.168.1.0", a.to_s)
626
+ assert_equal("192.168.1.0", a.to_string)
627
+ assert_equal(Socket::AF_INET, a.family)
628
+ assert_equal("#<IPAddr: IPv4:192.168.1.0/255.255.255.0>", a.inspect)
629
+
630
+ a = IPAddr.new("192.168.1.2/255.255.255.0")
631
+ assert_equal("192.168.1.0", a.to_s)
632
+ assert_equal("192.168.1.0", a.to_string)
633
+ assert_equal(Socket::AF_INET, a.family)
634
+
635
+ assert_equal("0:0:0:1::", IPAddr.new("0:0:0:1::").to_s)
636
+ assert_equal("2001:200:300::", IPAddr.new("2001:200:300::/48").to_s)
637
+
638
+ assert_equal("2001:200:300::", IPAddr.new("[2001:200:300::]/48").to_s)
639
+
640
+ [
641
+ ["fe80::1%fxp0"],
642
+ ["::1/255.255.255.0"],
643
+ ["::1:192.168.1.2/120"],
644
+ [IPAddr.new("::1").to_i],
645
+ ["::ffff:192.168.1.2/120", Socket::AF_INET],
646
+ ["[192.168.1.2]/120"],
647
+ ].each { |args|
648
+ assert_raises(ArgumentError) {
649
+ IPAddr.new(*args)
650
+ }
651
+ }
652
+ end
653
+
654
+ def test_s_new_ntoh
655
+ addr = ''
656
+ IPAddr.new("1234:5678:9abc:def0:1234:5678:9abc:def0").hton.each_byte { |c|
657
+ addr += sprintf("%02x", c)
658
+ }
659
+ assert_equal("123456789abcdef0123456789abcdef0", addr)
660
+ addr = ''
661
+ IPAddr.new("123.45.67.89").hton.each_byte { |c|
662
+ addr += sprintf("%02x", c)
663
+ }
664
+ assert_equal(sprintf("%02x%02x%02x%02x", 123, 45, 67, 89), addr)
665
+ a = IPAddr.new("3ffe:505:2::")
666
+ assert_equal("3ffe:505:2::", IPAddr.new_ntoh(a.hton).to_s)
667
+ a = IPAddr.new("192.168.2.1")
668
+ assert_equal("192.168.2.1", IPAddr.new_ntoh(a.hton).to_s)
669
+ end
670
+
671
+ def test_ipv4_compat
672
+ a = IPAddr.new("::192.168.1.2")
673
+ assert_equal("::192.168.1.2", a.to_s)
674
+ assert_equal("0000:0000:0000:0000:0000:0000:c0a8:0102", a.to_string)
675
+ assert_equal(Socket::AF_INET6, a.family)
676
+ assert_equal(true, a.ipv4_compat?)
677
+ b = a.native
678
+ assert_equal("192.168.1.2", b.to_s)
679
+ assert_equal(Socket::AF_INET, b.family)
680
+ assert_equal(false, b.ipv4_compat?)
681
+
682
+ a = IPAddr.new("192.168.1.2")
683
+ b = a.ipv4_compat
684
+ assert_equal("::192.168.1.2", b.to_s)
685
+ assert_equal(Socket::AF_INET6, b.family)
686
+ end
687
+
688
+ def test_ipv4_mapped
689
+ a = IPAddr.new("::ffff:192.168.1.2")
690
+ assert_equal("::ffff:192.168.1.2", a.to_s)
691
+ assert_equal("0000:0000:0000:0000:0000:ffff:c0a8:0102", a.to_string)
692
+ assert_equal(Socket::AF_INET6, a.family)
693
+ assert_equal(true, a.ipv4_mapped?)
694
+ b = a.native
695
+ assert_equal("192.168.1.2", b.to_s)
696
+ assert_equal(Socket::AF_INET, b.family)
697
+ assert_equal(false, b.ipv4_mapped?)
698
+
699
+ a = IPAddr.new("192.168.1.2")
700
+ b = a.ipv4_mapped
701
+ assert_equal("::ffff:192.168.1.2", b.to_s)
702
+ assert_equal(Socket::AF_INET6, b.family)
703
+ end
704
+
705
+ def test_reverse
706
+ 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)
707
+ assert_equal("1.2.168.192.in-addr.arpa", IPAddr.new("192.168.2.1").reverse)
708
+ end
709
+
710
+ def test_ip6_arpa
711
+ 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)
712
+ assert_raises(ArgumentError) {
713
+ IPAddr.new("192.168.2.1").ip6_arpa
714
+ }
715
+ end
716
+
717
+ def test_ip6_int
718
+ 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)
719
+ assert_raises(ArgumentError) {
720
+ IPAddr.new("192.168.2.1").ip6_int
721
+ }
722
+ end
723
+
724
+ def test_to_s
725
+ assert_equal("3ffe:0505:0002:0000:0000:0000:0000:0001", IPAddr.new("3ffe:505:2::1").to_string)
726
+ assert_equal("3ffe:505:2::1", IPAddr.new("3ffe:505:2::1").to_s)
727
+ end
728
+ end
729
+
730
+ class TC_Operator < Test::Unit::TestCase
731
+
732
+ IN6MASK32 = "ffff:ffff::"
733
+ IN6MASK128 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"
734
+
735
+ def setup
736
+ @in6_addr_any = IPAddr.new()
737
+ @a = IPAddr.new("3ffe:505:2::/48")
738
+ @b = IPAddr.new("0:0:0:1::")
739
+ @c = IPAddr.new(IN6MASK32)
740
+ end
741
+ alias set_up setup
742
+
743
+ def test_or
744
+ assert_equal("3ffe:505:2:1::", (@a | @b).to_s)
745
+ a = @a
746
+ a |= @b
747
+ assert_equal("3ffe:505:2:1::", a.to_s)
748
+ assert_equal("3ffe:505:2::", @a.to_s)
749
+ assert_equal("3ffe:505:2:1::",
750
+ (@a | 0x00000000000000010000000000000000).to_s)
751
+ end
752
+
753
+ def test_and
754
+ assert_equal("3ffe:505::", (@a & @c).to_s)
755
+ a = @a
756
+ a &= @c
757
+ assert_equal("3ffe:505::", a.to_s)
758
+ assert_equal("3ffe:505:2::", @a.to_s)
759
+ assert_equal("3ffe:505::", (@a & 0xffffffff000000000000000000000000).to_s)
760
+ end
761
+
762
+ def test_shift_right
763
+ assert_equal("0:3ffe:505:2::", (@a >> 16).to_s)
764
+ a = @a
765
+ a >>= 16
766
+ assert_equal("0:3ffe:505:2::", a.to_s)
767
+ assert_equal("3ffe:505:2::", @a.to_s)
768
+ end
769
+
770
+ def test_shift_left
771
+ assert_equal("505:2::", (@a << 16).to_s)
772
+ a = @a
773
+ a <<= 16
774
+ assert_equal("505:2::", a.to_s)
775
+ assert_equal("3ffe:505:2::", @a.to_s)
776
+ end
777
+
778
+ def test_carrot
779
+ a = ~@in6_addr_any
780
+ assert_equal(IN6MASK128, a.to_s)
781
+ assert_equal("::", @in6_addr_any.to_s)
782
+ end
783
+
784
+ def test_equal
785
+ assert_equal(true, @a == IPAddr.new("3ffe:505:2::"))
786
+ assert_equal(false, @a == IPAddr.new("3ffe:505:3::"))
787
+ assert_equal(true, @a != IPAddr.new("3ffe:505:3::"))
788
+ assert_equal(false, @a != IPAddr.new("3ffe:505:2::"))
789
+ end
790
+
791
+ def test_mask
792
+ a = @a.mask(32)
793
+ assert_equal("3ffe:505::", a.to_s)
794
+ assert_equal("3ffe:505:2::", @a.to_s)
795
+ end
796
+
797
+ def test_include?
798
+ assert_equal(true, @a.include?(IPAddr.new("3ffe:505:2::")))
799
+ assert_equal(true, @a.include?(IPAddr.new("3ffe:505:2::1")))
800
+ assert_equal(false, @a.include?(IPAddr.new("3ffe:505:3::")))
801
+ net1 = IPAddr.new("192.168.2.0/24")
802
+ assert_equal(true, net1.include?(IPAddr.new("192.168.2.0")))
803
+ assert_equal(true, net1.include?(IPAddr.new("192.168.2.255")))
804
+ assert_equal(false, net1.include?(IPAddr.new("192.168.3.0")))
805
+ # test with integer parameter
806
+ int = (192 << 24) + (168 << 16) + (2 << 8) + 13
807
+
808
+ assert_equal(true, net1.include?(int))
809
+ assert_equal(false, net1.include?(int+255))
810
+
811
+ end
812
+
813
+ end