shoesgem 0.1424.0

Sign up to get free protection for your applications and to get access to all the features.
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,1274 @@
1
+ #!/usr/bin/env ruby
2
+ #--
3
+ # set.rb - defines the Set class
4
+ #++
5
+ # Copyright (c) 2002-2008 Akinori MUSHA <knu@iDaemons.org>
6
+ #
7
+ # Documentation by Akinori MUSHA and Gavin Sinclair.
8
+ #
9
+ # All rights reserved. You can redistribute and/or modify it under the same
10
+ # terms as Ruby.
11
+ #
12
+ # $Id: set.rb 18571 2008-08-13 08:03:30Z knu $
13
+ #
14
+ # == Overview
15
+ #
16
+ # This library provides the Set class, which deals with a collection
17
+ # of unordered values with no duplicates. It is a hybrid of Array's
18
+ # intuitive inter-operation facilities and Hash's fast lookup. If you
19
+ # need to keep values ordered, use the SortedSet class.
20
+ #
21
+ # The method +to_set+ is added to Enumerable for convenience.
22
+ #
23
+ # See the Set class for an example of usage.
24
+
25
+
26
+ #
27
+ # Set implements a collection of unordered values with no duplicates.
28
+ # This is a hybrid of Array's intuitive inter-operation facilities and
29
+ # Hash's fast lookup.
30
+ #
31
+ # The equality of each couple of elements is determined according to
32
+ # Object#eql? and Object#hash, since Set uses Hash as storage.
33
+ #
34
+ # Set is easy to use with Enumerable objects (implementing +each+).
35
+ # Most of the initializer methods and binary operators accept generic
36
+ # Enumerable objects besides sets and arrays. An Enumerable object
37
+ # can be converted to Set using the +to_set+ method.
38
+ #
39
+ # == Example
40
+ #
41
+ # require 'set'
42
+ # s1 = Set.new [1, 2] # -> #<Set: {1, 2}>
43
+ # s2 = [1, 2].to_set # -> #<Set: {1, 2}>
44
+ # s1 == s2 # -> true
45
+ # s1.add("foo") # -> #<Set: {1, 2, "foo"}>
46
+ # s1.merge([2, 6]) # -> #<Set: {6, 1, 2, "foo"}>
47
+ # s1.subset? s2 # -> false
48
+ # s2.subset? s1 # -> true
49
+ #
50
+ # == Contact
51
+ #
52
+ # - Akinori MUSHA <knu@iDaemons.org> (current maintainer)
53
+ #
54
+ class Set
55
+ include Enumerable
56
+
57
+ # Creates a new set containing the given objects.
58
+ def self.[](*ary)
59
+ new(ary)
60
+ end
61
+
62
+ # Creates a new set containing the elements of the given enumerable
63
+ # object.
64
+ #
65
+ # If a block is given, the elements of enum are preprocessed by the
66
+ # given block.
67
+ def initialize(enum = nil, &block) # :yields: o
68
+ @hash ||= Hash.new
69
+
70
+ enum.nil? and return
71
+
72
+ if block
73
+ enum.each { |o| add(block[o]) }
74
+ else
75
+ merge(enum)
76
+ end
77
+ end
78
+
79
+ # Copy internal hash.
80
+ def initialize_copy(orig)
81
+ @hash = orig.instance_eval{@hash}.dup
82
+ end
83
+
84
+ def freeze # :nodoc:
85
+ super
86
+ @hash.freeze
87
+ self
88
+ end
89
+
90
+ def taint # :nodoc:
91
+ super
92
+ @hash.taint
93
+ self
94
+ end
95
+
96
+ def untaint # :nodoc:
97
+ super
98
+ @hash.untaint
99
+ self
100
+ end
101
+
102
+ # Returns the number of elements.
103
+ def size
104
+ @hash.size
105
+ end
106
+ alias length size
107
+
108
+ # Returns true if the set contains no elements.
109
+ def empty?
110
+ @hash.empty?
111
+ end
112
+
113
+ # Removes all elements and returns self.
114
+ def clear
115
+ @hash.clear
116
+ self
117
+ end
118
+
119
+ # Replaces the contents of the set with the contents of the given
120
+ # enumerable object and returns self.
121
+ def replace(enum)
122
+ if enum.class == self.class
123
+ @hash.replace(enum.instance_eval { @hash })
124
+ else
125
+ clear
126
+ enum.each { |o| add(o) }
127
+ end
128
+
129
+ self
130
+ end
131
+
132
+ # Converts the set to an array. The order of elements is uncertain.
133
+ def to_a
134
+ @hash.keys
135
+ end
136
+
137
+ def flatten_merge(set, seen = Set.new)
138
+ set.each { |e|
139
+ if e.is_a?(Set)
140
+ if seen.include?(e_id = e.object_id)
141
+ raise ArgumentError, "tried to flatten recursive Set"
142
+ end
143
+
144
+ seen.add(e_id)
145
+ flatten_merge(e, seen)
146
+ seen.delete(e_id)
147
+ else
148
+ add(e)
149
+ end
150
+ }
151
+
152
+ self
153
+ end
154
+ protected :flatten_merge
155
+
156
+ # Returns a new set that is a copy of the set, flattening each
157
+ # containing set recursively.
158
+ def flatten
159
+ self.class.new.flatten_merge(self)
160
+ end
161
+
162
+ # Equivalent to Set#flatten, but replaces the receiver with the
163
+ # result in place. Returns nil if no modifications were made.
164
+ def flatten!
165
+ if detect { |e| e.is_a?(Set) }
166
+ replace(flatten())
167
+ else
168
+ nil
169
+ end
170
+ end
171
+
172
+ # Returns true if the set contains the given object.
173
+ def include?(o)
174
+ @hash.include?(o)
175
+ end
176
+ alias member? include?
177
+
178
+ # Returns true if the set is a superset of the given set.
179
+ def superset?(set)
180
+ set.is_a?(Set) or raise ArgumentError, "value must be a set"
181
+ return false if size < set.size
182
+ set.all? { |o| include?(o) }
183
+ end
184
+
185
+ # Returns true if the set is a proper superset of the given set.
186
+ def proper_superset?(set)
187
+ set.is_a?(Set) or raise ArgumentError, "value must be a set"
188
+ return false if size <= set.size
189
+ set.all? { |o| include?(o) }
190
+ end
191
+
192
+ # Returns true if the set is a subset of the given set.
193
+ def subset?(set)
194
+ set.is_a?(Set) or raise ArgumentError, "value must be a set"
195
+ return false if set.size < size
196
+ all? { |o| set.include?(o) }
197
+ end
198
+
199
+ # Returns true if the set is a proper subset of the given set.
200
+ def proper_subset?(set)
201
+ set.is_a?(Set) or raise ArgumentError, "value must be a set"
202
+ return false if set.size <= size
203
+ all? { |o| set.include?(o) }
204
+ end
205
+
206
+ # Calls the given block once for each element in the set, passing
207
+ # the element as parameter. Returns an enumerator if no block is
208
+ # given.
209
+ def each
210
+ block_given? or return enum_for(__method__)
211
+ @hash.each_key { |o| yield(o) }
212
+ self
213
+ end
214
+
215
+ # Adds the given object to the set and returns self. Use +merge+ to
216
+ # add many elements at once.
217
+ def add(o)
218
+ @hash[o] = true
219
+ self
220
+ end
221
+ alias << add
222
+
223
+ # Adds the given object to the set and returns self. If the
224
+ # object is already in the set, returns nil.
225
+ def add?(o)
226
+ if include?(o)
227
+ nil
228
+ else
229
+ add(o)
230
+ end
231
+ end
232
+
233
+ # Deletes the given object from the set and returns self. Use +subtract+ to
234
+ # delete many items at once.
235
+ def delete(o)
236
+ @hash.delete(o)
237
+ self
238
+ end
239
+
240
+ # Deletes the given object from the set and returns self. If the
241
+ # object is not in the set, returns nil.
242
+ def delete?(o)
243
+ if include?(o)
244
+ delete(o)
245
+ else
246
+ nil
247
+ end
248
+ end
249
+
250
+ # Deletes every element of the set for which block evaluates to
251
+ # true, and returns self.
252
+ def delete_if
253
+ block_given? or return enum_for(__method__)
254
+ to_a.each { |o| @hash.delete(o) if yield(o) }
255
+ self
256
+ end
257
+
258
+ # Replaces the elements with ones returned by collect().
259
+ def collect!
260
+ block_given? or return enum_for(__method__)
261
+ set = self.class.new
262
+ each { |o| set << yield(o) }
263
+ replace(set)
264
+ end
265
+ alias map! collect!
266
+
267
+ # Equivalent to Set#delete_if, but returns nil if no changes were
268
+ # made.
269
+ def reject!
270
+ block_given? or return enum_for(__method__)
271
+ n = size
272
+ delete_if { |o| yield(o) }
273
+ size == n ? nil : self
274
+ end
275
+
276
+ # Merges the elements of the given enumerable object to the set and
277
+ # returns self.
278
+ def merge(enum)
279
+ if enum.is_a?(Set)
280
+ @hash.update(enum.instance_eval { @hash })
281
+ else
282
+ enum.each { |o| add(o) }
283
+ end
284
+
285
+ self
286
+ end
287
+
288
+ # Deletes every element that appears in the given enumerable object
289
+ # and returns self.
290
+ def subtract(enum)
291
+ enum.each { |o| delete(o) }
292
+ self
293
+ end
294
+
295
+ # Returns a new set built by merging the set and the elements of the
296
+ # given enumerable object.
297
+ def |(enum)
298
+ dup.merge(enum)
299
+ end
300
+ alias + | ##
301
+ alias union | ##
302
+
303
+ # Returns a new set built by duplicating the set, removing every
304
+ # element that appears in the given enumerable object.
305
+ def -(enum)
306
+ dup.subtract(enum)
307
+ end
308
+ alias difference - ##
309
+
310
+ # Returns a new set containing elements common to the set and the
311
+ # given enumerable object.
312
+ def &(enum)
313
+ n = self.class.new
314
+ enum.each { |o| n.add(o) if include?(o) }
315
+ n
316
+ end
317
+ alias intersection & ##
318
+
319
+ # Returns a new set containing elements exclusive between the set
320
+ # and the given enumerable object. (set ^ enum) is equivalent to
321
+ # ((set | enum) - (set & enum)).
322
+ def ^(enum)
323
+ n = Set.new(enum)
324
+ each { |o| if n.include?(o) then n.delete(o) else n.add(o) end }
325
+ n
326
+ end
327
+
328
+ # Returns true if two sets are equal. The equality of each couple
329
+ # of elements is defined according to Object#eql?.
330
+ def ==(set)
331
+ equal?(set) and return true
332
+
333
+ set.is_a?(Set) && size == set.size or return false
334
+
335
+ hash = @hash.dup
336
+ set.all? { |o| hash.include?(o) }
337
+ end
338
+
339
+ def hash # :nodoc:
340
+ @hash.hash
341
+ end
342
+
343
+ def eql?(o) # :nodoc:
344
+ return false unless o.is_a?(Set)
345
+ @hash.eql?(o.instance_eval{@hash})
346
+ end
347
+
348
+ # Classifies the set by the return value of the given block and
349
+ # returns a hash of {value => set of elements} pairs. The block is
350
+ # called once for each element of the set, passing the element as
351
+ # parameter.
352
+ #
353
+ # e.g.:
354
+ #
355
+ # require 'set'
356
+ # files = Set.new(Dir.glob("*.rb"))
357
+ # hash = files.classify { |f| File.mtime(f).year }
358
+ # p hash # => {2000=>#<Set: {"a.rb", "b.rb"}>,
359
+ # # 2001=>#<Set: {"c.rb", "d.rb", "e.rb"}>,
360
+ # # 2002=>#<Set: {"f.rb"}>}
361
+ def classify # :yields: o
362
+ block_given? or return enum_for(__method__)
363
+
364
+ h = {}
365
+
366
+ each { |i|
367
+ x = yield(i)
368
+ (h[x] ||= self.class.new).add(i)
369
+ }
370
+
371
+ h
372
+ end
373
+
374
+ # Divides the set into a set of subsets according to the commonality
375
+ # defined by the given block.
376
+ #
377
+ # If the arity of the block is 2, elements o1 and o2 are in common
378
+ # if block.call(o1, o2) is true. Otherwise, elements o1 and o2 are
379
+ # in common if block.call(o1) == block.call(o2).
380
+ #
381
+ # e.g.:
382
+ #
383
+ # require 'set'
384
+ # numbers = Set[1, 3, 4, 6, 9, 10, 11]
385
+ # set = numbers.divide { |i,j| (i - j).abs == 1 }
386
+ # p set # => #<Set: {#<Set: {1}>,
387
+ # # #<Set: {11, 9, 10}>,
388
+ # # #<Set: {3, 4}>,
389
+ # # #<Set: {6}>}>
390
+ def divide(&func)
391
+ func or return enum_for(__method__)
392
+
393
+ if func.arity == 2
394
+ require 'tsort'
395
+
396
+ class << dig = {} # :nodoc:
397
+ include TSort
398
+
399
+ alias tsort_each_node each_key
400
+ def tsort_each_child(node, &block)
401
+ fetch(node).each(&block)
402
+ end
403
+ end
404
+
405
+ each { |u|
406
+ dig[u] = a = []
407
+ each{ |v| func.call(u, v) and a << v }
408
+ }
409
+
410
+ set = Set.new()
411
+ dig.each_strongly_connected_component { |css|
412
+ set.add(self.class.new(css))
413
+ }
414
+ set
415
+ else
416
+ Set.new(classify(&func).values)
417
+ end
418
+ end
419
+
420
+ InspectKey = :__inspect_key__ # :nodoc:
421
+
422
+ # Returns a string containing a human-readable representation of the
423
+ # set. ("#<Set: {element1, element2, ...}>")
424
+ def inspect
425
+ ids = (Thread.current[InspectKey] ||= [])
426
+
427
+ if ids.include?(object_id)
428
+ return sprintf('#<%s: {...}>', self.class.name)
429
+ end
430
+
431
+ begin
432
+ ids << object_id
433
+ return sprintf('#<%s: {%s}>', self.class, to_a.inspect[1..-2])
434
+ ensure
435
+ ids.pop
436
+ end
437
+ end
438
+
439
+ def pretty_print(pp) # :nodoc:
440
+ pp.text sprintf('#<%s: {', self.class.name)
441
+ pp.nest(1) {
442
+ pp.seplist(self) { |o|
443
+ pp.pp o
444
+ }
445
+ }
446
+ pp.text "}>"
447
+ end
448
+
449
+ def pretty_print_cycle(pp) # :nodoc:
450
+ pp.text sprintf('#<%s: {%s}>', self.class.name, empty? ? '' : '...')
451
+ end
452
+ end
453
+
454
+ # SortedSet implements a set which elements are sorted in order. See Set.
455
+ class SortedSet < Set
456
+ @@setup = false
457
+
458
+ class << self
459
+ def [](*ary) # :nodoc:
460
+ new(ary)
461
+ end
462
+
463
+ def setup # :nodoc:
464
+ @@setup and return
465
+
466
+ module_eval {
467
+ # a hack to shut up warning
468
+ alias old_init initialize
469
+ remove_method :old_init
470
+ }
471
+ begin
472
+ require 'rbtree'
473
+
474
+ module_eval %{
475
+ def initialize(*args, &block)
476
+ @hash = RBTree.new
477
+ super
478
+ end
479
+ }
480
+ rescue LoadError
481
+ module_eval %{
482
+ def initialize(*args, &block)
483
+ @keys = nil
484
+ super
485
+ end
486
+
487
+ def clear
488
+ @keys = nil
489
+ super
490
+ end
491
+
492
+ def replace(enum)
493
+ @keys = nil
494
+ super
495
+ end
496
+
497
+ def add(o)
498
+ @keys = nil
499
+ @hash[o] = true
500
+ self
501
+ end
502
+ alias << add
503
+
504
+ def delete(o)
505
+ @keys = nil
506
+ @hash.delete(o)
507
+ self
508
+ end
509
+
510
+ def delete_if
511
+ block_given? or return enum_for(__method__)
512
+ n = @hash.size
513
+ super
514
+ @keys = nil if @hash.size != n
515
+ self
516
+ end
517
+
518
+ def merge(enum)
519
+ @keys = nil
520
+ super
521
+ end
522
+
523
+ def each
524
+ block_given? or return enum_for(__method__)
525
+ to_a.each { |o| yield(o) }
526
+ self
527
+ end
528
+
529
+ def to_a
530
+ (@keys = @hash.keys).sort! unless @keys
531
+ @keys
532
+ end
533
+ }
534
+ end
535
+
536
+ @@setup = true
537
+ end
538
+ end
539
+
540
+ def initialize(*args, &block) # :nodoc:
541
+ SortedSet.setup
542
+ initialize(*args, &block)
543
+ end
544
+ end
545
+
546
+ module Enumerable
547
+ # Makes a set from the enumerable object with given arguments.
548
+ # Needs to +require "set"+ to use this method.
549
+ def to_set(klass = Set, *args, &block)
550
+ klass.new(self, *args, &block)
551
+ end
552
+ end
553
+
554
+ # =begin
555
+ # == RestricedSet class
556
+ # RestricedSet implements a set with restrictions defined by a given
557
+ # block.
558
+ #
559
+ # === Super class
560
+ # Set
561
+ #
562
+ # === Class Methods
563
+ # --- RestricedSet::new(enum = nil) { |o| ... }
564
+ # --- RestricedSet::new(enum = nil) { |rset, o| ... }
565
+ # Creates a new restricted set containing the elements of the given
566
+ # enumerable object. Restrictions are defined by the given block.
567
+ #
568
+ # If the block's arity is 2, it is called with the RestrictedSet
569
+ # itself and an object to see if the object is allowed to be put in
570
+ # the set.
571
+ #
572
+ # Otherwise, the block is called with an object to see if the object
573
+ # is allowed to be put in the set.
574
+ #
575
+ # === Instance Methods
576
+ # --- restriction_proc
577
+ # Returns the restriction procedure of the set.
578
+ #
579
+ # =end
580
+ #
581
+ # class RestricedSet < Set
582
+ # def initialize(*args, &block)
583
+ # @proc = block or raise ArgumentError, "missing a block"
584
+ #
585
+ # if @proc.arity == 2
586
+ # instance_eval %{
587
+ # def add(o)
588
+ # @hash[o] = true if @proc.call(self, o)
589
+ # self
590
+ # end
591
+ # alias << add
592
+ #
593
+ # def add?(o)
594
+ # if include?(o) || !@proc.call(self, o)
595
+ # nil
596
+ # else
597
+ # @hash[o] = true
598
+ # self
599
+ # end
600
+ # end
601
+ #
602
+ # def replace(enum)
603
+ # clear
604
+ # enum.each { |o| add(o) }
605
+ #
606
+ # self
607
+ # end
608
+ #
609
+ # def merge(enum)
610
+ # enum.each { |o| add(o) }
611
+ #
612
+ # self
613
+ # end
614
+ # }
615
+ # else
616
+ # instance_eval %{
617
+ # def add(o)
618
+ # if @proc.call(o)
619
+ # @hash[o] = true
620
+ # end
621
+ # self
622
+ # end
623
+ # alias << add
624
+ #
625
+ # def add?(o)
626
+ # if include?(o) || !@proc.call(o)
627
+ # nil
628
+ # else
629
+ # @hash[o] = true
630
+ # self
631
+ # end
632
+ # end
633
+ # }
634
+ # end
635
+ #
636
+ # super(*args)
637
+ # end
638
+ #
639
+ # def restriction_proc
640
+ # @proc
641
+ # end
642
+ # end
643
+
644
+ if $0 == __FILE__
645
+ eval DATA.read, nil, $0, __LINE__+4
646
+ end
647
+
648
+ __END__
649
+
650
+ require 'test/unit'
651
+
652
+ class TC_Set < Test::Unit::TestCase
653
+ def test_aref
654
+ assert_nothing_raised {
655
+ Set[]
656
+ Set[nil]
657
+ Set[1,2,3]
658
+ }
659
+
660
+ assert_equal(0, Set[].size)
661
+ assert_equal(1, Set[nil].size)
662
+ assert_equal(1, Set[[]].size)
663
+ assert_equal(1, Set[[nil]].size)
664
+
665
+ set = Set[2,4,6,4]
666
+ assert_equal(Set.new([2,4,6]), set)
667
+ end
668
+
669
+ def test_s_new
670
+ assert_nothing_raised {
671
+ Set.new()
672
+ Set.new(nil)
673
+ Set.new([])
674
+ Set.new([1,2])
675
+ Set.new('a'..'c')
676
+ }
677
+ assert_raises(NoMethodError) {
678
+ Set.new(false)
679
+ }
680
+ assert_raises(NoMethodError) {
681
+ Set.new(1)
682
+ }
683
+ assert_raises(ArgumentError) {
684
+ Set.new(1,2)
685
+ }
686
+
687
+ assert_equal(0, Set.new().size)
688
+ assert_equal(0, Set.new(nil).size)
689
+ assert_equal(0, Set.new([]).size)
690
+ assert_equal(1, Set.new([nil]).size)
691
+
692
+ ary = [2,4,6,4]
693
+ set = Set.new(ary)
694
+ ary.clear
695
+ assert_equal(false, set.empty?)
696
+ assert_equal(3, set.size)
697
+
698
+ ary = [1,2,3]
699
+
700
+ s = Set.new(ary) { |o| o * 2 }
701
+ assert_equal([2,4,6], s.sort)
702
+ end
703
+
704
+ def test_clone
705
+ set1 = Set.new
706
+ set2 = set1.clone
707
+ set1 << 'abc'
708
+ assert_equal(Set.new, set2)
709
+ end
710
+
711
+ def test_dup
712
+ set1 = Set[1,2]
713
+ set2 = set1.dup
714
+
715
+ assert_not_same(set1, set2)
716
+
717
+ assert_equal(set1, set2)
718
+
719
+ set1.add(3)
720
+
721
+ assert_not_equal(set1, set2)
722
+ end
723
+
724
+ def test_size
725
+ assert_equal(0, Set[].size)
726
+ assert_equal(2, Set[1,2].size)
727
+ assert_equal(2, Set[1,2,1].size)
728
+ end
729
+
730
+ def test_empty?
731
+ assert_equal(true, Set[].empty?)
732
+ assert_equal(false, Set[1, 2].empty?)
733
+ end
734
+
735
+ def test_clear
736
+ set = Set[1,2]
737
+ ret = set.clear
738
+
739
+ assert_same(set, ret)
740
+ assert_equal(true, set.empty?)
741
+ end
742
+
743
+ def test_replace
744
+ set = Set[1,2]
745
+ ret = set.replace('a'..'c')
746
+
747
+ assert_same(set, ret)
748
+ assert_equal(Set['a','b','c'], set)
749
+ end
750
+
751
+ def test_to_a
752
+ set = Set[1,2,3,2]
753
+ ary = set.to_a
754
+
755
+ assert_equal([1,2,3], ary.sort)
756
+ end
757
+
758
+ def test_flatten
759
+ # test1
760
+ set1 = Set[
761
+ 1,
762
+ Set[
763
+ 5,
764
+ Set[7,
765
+ Set[0]
766
+ ],
767
+ Set[6,2],
768
+ 1
769
+ ],
770
+ 3,
771
+ Set[3,4]
772
+ ]
773
+
774
+ set2 = set1.flatten
775
+ set3 = Set.new(0..7)
776
+
777
+ assert_not_same(set2, set1)
778
+ assert_equal(set3, set2)
779
+
780
+ # test2; destructive
781
+ orig_set1 = set1
782
+ set1.flatten!
783
+
784
+ assert_same(orig_set1, set1)
785
+ assert_equal(set3, set1)
786
+
787
+ # test3; multiple occurrences of a set in an set
788
+ set1 = Set[1, 2]
789
+ set2 = Set[set1, Set[set1, 4], 3]
790
+
791
+ assert_nothing_raised {
792
+ set2.flatten!
793
+ }
794
+
795
+ assert_equal(Set.new(1..4), set2)
796
+
797
+ # test4; recursion
798
+ set2 = Set[]
799
+ set1 = Set[1, set2]
800
+ set2.add(set1)
801
+
802
+ assert_raises(ArgumentError) {
803
+ set1.flatten!
804
+ }
805
+
806
+ # test5; miscellaneous
807
+ empty = Set[]
808
+ set = Set[Set[empty, "a"],Set[empty, "b"]]
809
+
810
+ assert_nothing_raised {
811
+ set.flatten
812
+ }
813
+
814
+ set1 = empty.merge(Set["no_more", set])
815
+
816
+ assert_nil(Set.new(0..31).flatten!)
817
+
818
+ x = Set[Set[],Set[1,2]].flatten!
819
+ y = Set[1,2]
820
+
821
+ assert_equal(x, y)
822
+ end
823
+
824
+ def test_include?
825
+ set = Set[1,2,3]
826
+
827
+ assert_equal(true, set.include?(1))
828
+ assert_equal(true, set.include?(2))
829
+ assert_equal(true, set.include?(3))
830
+ assert_equal(false, set.include?(0))
831
+ assert_equal(false, set.include?(nil))
832
+
833
+ set = Set["1",nil,"2",nil,"0","1",false]
834
+ assert_equal(true, set.include?(nil))
835
+ assert_equal(true, set.include?(false))
836
+ assert_equal(true, set.include?("1"))
837
+ assert_equal(false, set.include?(0))
838
+ assert_equal(false, set.include?(true))
839
+ end
840
+
841
+ def test_superset?
842
+ set = Set[1,2,3]
843
+
844
+ assert_raises(ArgumentError) {
845
+ set.superset?()
846
+ }
847
+
848
+ assert_raises(ArgumentError) {
849
+ set.superset?(2)
850
+ }
851
+
852
+ assert_raises(ArgumentError) {
853
+ set.superset?([2])
854
+ }
855
+
856
+ assert_equal(true, set.superset?(Set[]))
857
+ assert_equal(true, set.superset?(Set[1,2]))
858
+ assert_equal(true, set.superset?(Set[1,2,3]))
859
+ assert_equal(false, set.superset?(Set[1,2,3,4]))
860
+ assert_equal(false, set.superset?(Set[1,4]))
861
+
862
+ assert_equal(true, Set[].superset?(Set[]))
863
+ end
864
+
865
+ def test_proper_superset?
866
+ set = Set[1,2,3]
867
+
868
+ assert_raises(ArgumentError) {
869
+ set.proper_superset?()
870
+ }
871
+
872
+ assert_raises(ArgumentError) {
873
+ set.proper_superset?(2)
874
+ }
875
+
876
+ assert_raises(ArgumentError) {
877
+ set.proper_superset?([2])
878
+ }
879
+
880
+ assert_equal(true, set.proper_superset?(Set[]))
881
+ assert_equal(true, set.proper_superset?(Set[1,2]))
882
+ assert_equal(false, set.proper_superset?(Set[1,2,3]))
883
+ assert_equal(false, set.proper_superset?(Set[1,2,3,4]))
884
+ assert_equal(false, set.proper_superset?(Set[1,4]))
885
+
886
+ assert_equal(false, Set[].proper_superset?(Set[]))
887
+ end
888
+
889
+ def test_subset?
890
+ set = Set[1,2,3]
891
+
892
+ assert_raises(ArgumentError) {
893
+ set.subset?()
894
+ }
895
+
896
+ assert_raises(ArgumentError) {
897
+ set.subset?(2)
898
+ }
899
+
900
+ assert_raises(ArgumentError) {
901
+ set.subset?([2])
902
+ }
903
+
904
+ assert_equal(true, set.subset?(Set[1,2,3,4]))
905
+ assert_equal(true, set.subset?(Set[1,2,3]))
906
+ assert_equal(false, set.subset?(Set[1,2]))
907
+ assert_equal(false, set.subset?(Set[]))
908
+
909
+ assert_equal(true, Set[].subset?(Set[1]))
910
+ assert_equal(true, Set[].subset?(Set[]))
911
+ end
912
+
913
+ def test_proper_subset?
914
+ set = Set[1,2,3]
915
+
916
+ assert_raises(ArgumentError) {
917
+ set.proper_subset?()
918
+ }
919
+
920
+ assert_raises(ArgumentError) {
921
+ set.proper_subset?(2)
922
+ }
923
+
924
+ assert_raises(ArgumentError) {
925
+ set.proper_subset?([2])
926
+ }
927
+
928
+ assert_equal(true, set.proper_subset?(Set[1,2,3,4]))
929
+ assert_equal(false, set.proper_subset?(Set[1,2,3]))
930
+ assert_equal(false, set.proper_subset?(Set[1,2]))
931
+ assert_equal(false, set.proper_subset?(Set[]))
932
+
933
+ assert_equal(false, Set[].proper_subset?(Set[]))
934
+ end
935
+
936
+ def test_each
937
+ ary = [1,3,5,7,10,20]
938
+ set = Set.new(ary)
939
+
940
+ ret = set.each { |o| }
941
+ assert_same(set, ret)
942
+
943
+ e = set.each
944
+ assert_instance_of(Enumerator, e)
945
+
946
+ assert_nothing_raised {
947
+ set.each { |o|
948
+ ary.delete(o) or raise "unexpected element: #{o}"
949
+ }
950
+
951
+ ary.empty? or raise "forgotten elements: #{ary.join(', ')}"
952
+ }
953
+ end
954
+
955
+ def test_add
956
+ set = Set[1,2,3]
957
+
958
+ ret = set.add(2)
959
+ assert_same(set, ret)
960
+ assert_equal(Set[1,2,3], set)
961
+
962
+ ret = set.add?(2)
963
+ assert_nil(ret)
964
+ assert_equal(Set[1,2,3], set)
965
+
966
+ ret = set.add(4)
967
+ assert_same(set, ret)
968
+ assert_equal(Set[1,2,3,4], set)
969
+
970
+ ret = set.add?(5)
971
+ assert_same(set, ret)
972
+ assert_equal(Set[1,2,3,4,5], set)
973
+ end
974
+
975
+ def test_delete
976
+ set = Set[1,2,3]
977
+
978
+ ret = set.delete(4)
979
+ assert_same(set, ret)
980
+ assert_equal(Set[1,2,3], set)
981
+
982
+ ret = set.delete?(4)
983
+ assert_nil(ret)
984
+ assert_equal(Set[1,2,3], set)
985
+
986
+ ret = set.delete(2)
987
+ assert_equal(set, ret)
988
+ assert_equal(Set[1,3], set)
989
+
990
+ ret = set.delete?(1)
991
+ assert_equal(set, ret)
992
+ assert_equal(Set[3], set)
993
+ end
994
+
995
+ def test_delete_if
996
+ set = Set.new(1..10)
997
+ ret = set.delete_if { |i| i > 10 }
998
+ assert_same(set, ret)
999
+ assert_equal(Set.new(1..10), set)
1000
+
1001
+ set = Set.new(1..10)
1002
+ ret = set.delete_if { |i| i % 3 == 0 }
1003
+ assert_same(set, ret)
1004
+ assert_equal(Set[1,2,4,5,7,8,10], set)
1005
+ end
1006
+
1007
+ def test_collect!
1008
+ set = Set[1,2,3,'a','b','c',-1..1,2..4]
1009
+
1010
+ ret = set.collect! { |i|
1011
+ case i
1012
+ when Numeric
1013
+ i * 2
1014
+ when String
1015
+ i.upcase
1016
+ else
1017
+ nil
1018
+ end
1019
+ }
1020
+
1021
+ assert_same(set, ret)
1022
+ assert_equal(Set[2,4,6,'A','B','C',nil], set)
1023
+ end
1024
+
1025
+ def test_reject!
1026
+ set = Set.new(1..10)
1027
+
1028
+ ret = set.reject! { |i| i > 10 }
1029
+ assert_nil(ret)
1030
+ assert_equal(Set.new(1..10), set)
1031
+
1032
+ ret = set.reject! { |i| i % 3 == 0 }
1033
+ assert_same(set, ret)
1034
+ assert_equal(Set[1,2,4,5,7,8,10], set)
1035
+ end
1036
+
1037
+ def test_merge
1038
+ set = Set[1,2,3]
1039
+
1040
+ ret = set.merge([2,4,6])
1041
+ assert_same(set, ret)
1042
+ assert_equal(Set[1,2,3,4,6], set)
1043
+ end
1044
+
1045
+ def test_subtract
1046
+ set = Set[1,2,3]
1047
+
1048
+ ret = set.subtract([2,4,6])
1049
+ assert_same(set, ret)
1050
+ assert_equal(Set[1,3], set)
1051
+ end
1052
+
1053
+ def test_plus
1054
+ set = Set[1,2,3]
1055
+
1056
+ ret = set + [2,4,6]
1057
+ assert_not_same(set, ret)
1058
+ assert_equal(Set[1,2,3,4,6], ret)
1059
+ end
1060
+
1061
+ def test_minus
1062
+ set = Set[1,2,3]
1063
+
1064
+ ret = set - [2,4,6]
1065
+ assert_not_same(set, ret)
1066
+ assert_equal(Set[1,3], ret)
1067
+ end
1068
+
1069
+ def test_and
1070
+ set = Set[1,2,3,4]
1071
+
1072
+ ret = set & [2,4,6]
1073
+ assert_not_same(set, ret)
1074
+ assert_equal(Set[2,4], ret)
1075
+ end
1076
+
1077
+ def test_xor
1078
+ set = Set[1,2,3,4]
1079
+ ret = set ^ [2,4,5,5]
1080
+ assert_not_same(set, ret)
1081
+ assert_equal(Set[1,3,5], ret)
1082
+ end
1083
+
1084
+ def test_eq
1085
+ set1 = Set[2,3,1]
1086
+ set2 = Set[1,2,3]
1087
+
1088
+ assert_equal(set1, set1)
1089
+ assert_equal(set1, set2)
1090
+ assert_not_equal(Set[1], [1])
1091
+
1092
+ set1 = Class.new(Set)["a", "b"]
1093
+ set2 = Set["a", "b", set1]
1094
+ set1 = set1.add(set1.clone)
1095
+
1096
+ # assert_equal(set1, set2)
1097
+ # assert_equal(set2, set1)
1098
+ assert_equal(set2, set2.clone)
1099
+ assert_equal(set1.clone, set1)
1100
+
1101
+ assert_not_equal(Set[Exception.new,nil], Set[Exception.new,Exception.new], "[ruby-dev:26127]")
1102
+ end
1103
+
1104
+ # def test_hash
1105
+ # end
1106
+
1107
+ # def test_eql?
1108
+ # end
1109
+
1110
+ def test_classify
1111
+ set = Set.new(1..10)
1112
+ ret = set.classify { |i| i % 3 }
1113
+
1114
+ assert_equal(3, ret.size)
1115
+ assert_instance_of(Hash, ret)
1116
+ ret.each_value { |value| assert_instance_of(Set, value) }
1117
+ assert_equal(Set[3,6,9], ret[0])
1118
+ assert_equal(Set[1,4,7,10], ret[1])
1119
+ assert_equal(Set[2,5,8], ret[2])
1120
+ end
1121
+
1122
+ def test_divide
1123
+ set = Set.new(1..10)
1124
+ ret = set.divide { |i| i % 3 }
1125
+
1126
+ assert_equal(3, ret.size)
1127
+ n = 0
1128
+ ret.each { |s| n += s.size }
1129
+ assert_equal(set.size, n)
1130
+ assert_equal(set, ret.flatten)
1131
+
1132
+ set = Set[7,10,5,11,1,3,4,9,0]
1133
+ ret = set.divide { |a,b| (a - b).abs == 1 }
1134
+
1135
+ assert_equal(4, ret.size)
1136
+ n = 0
1137
+ ret.each { |s| n += s.size }
1138
+ assert_equal(set.size, n)
1139
+ assert_equal(set, ret.flatten)
1140
+ ret.each { |s|
1141
+ if s.include?(0)
1142
+ assert_equal(Set[0,1], s)
1143
+ elsif s.include?(3)
1144
+ assert_equal(Set[3,4,5], s)
1145
+ elsif s.include?(7)
1146
+ assert_equal(Set[7], s)
1147
+ elsif s.include?(9)
1148
+ assert_equal(Set[9,10,11], s)
1149
+ else
1150
+ raise "unexpected group: #{s.inspect}"
1151
+ end
1152
+ }
1153
+ end
1154
+
1155
+ def test_inspect
1156
+ set1 = Set[1]
1157
+
1158
+ assert_equal('#<Set: {1}>', set1.inspect)
1159
+
1160
+ set2 = Set[Set[0], 1, 2, set1]
1161
+ assert_equal(false, set2.inspect.include?('#<Set: {...}>'))
1162
+
1163
+ set1.add(set2)
1164
+ assert_equal(true, set1.inspect.include?('#<Set: {...}>'))
1165
+ end
1166
+
1167
+ # def test_pretty_print
1168
+ # end
1169
+
1170
+ # def test_pretty_print_cycle
1171
+ # end
1172
+ end
1173
+
1174
+ class TC_SortedSet < Test::Unit::TestCase
1175
+ def test_sortedset
1176
+ s = SortedSet[4,5,3,1,2]
1177
+
1178
+ assert_equal([1,2,3,4,5], s.to_a)
1179
+
1180
+ prev = nil
1181
+ s.each { |o| assert(prev < o) if prev; prev = o }
1182
+ assert_not_nil(prev)
1183
+
1184
+ s.map! { |o| -2 * o }
1185
+
1186
+ assert_equal([-10,-8,-6,-4,-2], s.to_a)
1187
+
1188
+ prev = nil
1189
+ ret = s.each { |o| assert(prev < o) if prev; prev = o }
1190
+ assert_not_nil(prev)
1191
+ assert_same(s, ret)
1192
+
1193
+ s = SortedSet.new([2,1,3]) { |o| o * -2 }
1194
+ assert_equal([-6,-4,-2], s.to_a)
1195
+
1196
+ s = SortedSet.new(['one', 'two', 'three', 'four'])
1197
+ a = []
1198
+ ret = s.delete_if { |o| a << o; o.start_with?('t') }
1199
+ assert_same(s, ret)
1200
+ assert_equal(['four', 'one'], s.to_a)
1201
+ assert_equal(['four', 'one', 'three', 'two'], a)
1202
+
1203
+ s = SortedSet.new(['one', 'two', 'three', 'four'])
1204
+ a = []
1205
+ ret = s.reject! { |o| a << o; o.start_with?('t') }
1206
+ assert_same(s, ret)
1207
+ assert_equal(['four', 'one'], s.to_a)
1208
+ assert_equal(['four', 'one', 'three', 'two'], a)
1209
+
1210
+ s = SortedSet.new(['one', 'two', 'three', 'four'])
1211
+ a = []
1212
+ ret = s.reject! { |o| a << o; false }
1213
+ assert_same(nil, ret)
1214
+ assert_equal(['four', 'one', 'three', 'two'], s.to_a)
1215
+ assert_equal(['four', 'one', 'three', 'two'], a)
1216
+ end
1217
+ end
1218
+
1219
+ class TC_Enumerable < Test::Unit::TestCase
1220
+ def test_to_set
1221
+ ary = [2,5,4,3,2,1,3]
1222
+
1223
+ set = ary.to_set
1224
+ assert_instance_of(Set, set)
1225
+ assert_equal([1,2,3,4,5], set.sort)
1226
+
1227
+ set = ary.to_set { |o| o * -2 }
1228
+ assert_instance_of(Set, set)
1229
+ assert_equal([-10,-8,-6,-4,-2], set.sort)
1230
+
1231
+ set = ary.to_set(SortedSet)
1232
+ assert_instance_of(SortedSet, set)
1233
+ assert_equal([1,2,3,4,5], set.to_a)
1234
+
1235
+ set = ary.to_set(SortedSet) { |o| o * -2 }
1236
+ assert_instance_of(SortedSet, set)
1237
+ assert_equal([-10,-8,-6,-4,-2], set.sort)
1238
+ end
1239
+ end
1240
+
1241
+ # class TC_RestricedSet < Test::Unit::TestCase
1242
+ # def test_s_new
1243
+ # assert_raises(ArgumentError) { RestricedSet.new }
1244
+ #
1245
+ # s = RestricedSet.new([-1,2,3]) { |o| o > 0 }
1246
+ # assert_equal([2,3], s.sort)
1247
+ # end
1248
+ #
1249
+ # def test_restriction_proc
1250
+ # s = RestricedSet.new([-1,2,3]) { |o| o > 0 }
1251
+ #
1252
+ # f = s.restriction_proc
1253
+ # assert_instance_of(Proc, f)
1254
+ # assert(f[1])
1255
+ # assert(!f[0])
1256
+ # end
1257
+ #
1258
+ # def test_replace
1259
+ # s = RestricedSet.new(-3..3) { |o| o > 0 }
1260
+ # assert_equal([1,2,3], s.sort)
1261
+ #
1262
+ # s.replace([-2,0,3,4,5])
1263
+ # assert_equal([3,4,5], s.sort)
1264
+ # end
1265
+ #
1266
+ # def test_merge
1267
+ # s = RestricedSet.new { |o| o > 0 }
1268
+ # s.merge(-5..5)
1269
+ # assert_equal([1,2,3,4,5], s.sort)
1270
+ #
1271
+ # s.merge([10,-10,-8,8])
1272
+ # assert_equal([1,2,3,4,5,8,10], s.sort)
1273
+ # end
1274
+ # end