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,832 @@
1
+ require 'uri'
2
+ require 'stringio'
3
+ require 'time'
4
+
5
+ module Kernel
6
+ private
7
+ alias open_uri_original_open open # :nodoc:
8
+ class << self
9
+ alias open_uri_original_open open # :nodoc:
10
+ end
11
+
12
+ # makes possible to open various resources including URIs.
13
+ # If the first argument respond to `open' method,
14
+ # the method is called with the rest arguments.
15
+ #
16
+ # If the first argument is a string which begins with xxx://,
17
+ # it is parsed by URI.parse. If the parsed object respond to `open' method,
18
+ # the method is called with the rest arguments.
19
+ #
20
+ # Otherwise original open is called.
21
+ #
22
+ # Since open-uri.rb provides URI::HTTP#open, URI::HTTPS#open and
23
+ # URI::FTP#open,
24
+ # Kernel[#.]open can accepts such URIs and strings which begins with
25
+ # http://, https:// and ftp://.
26
+ # In these case, the opened file object is extended by OpenURI::Meta.
27
+ def open(name, *rest, &block) # :doc:
28
+ if name.respond_to?(:open)
29
+ name.open(*rest, &block)
30
+ elsif name.respond_to?(:to_str) &&
31
+ %r{\A[A-Za-z][A-Za-z0-9+\-\.]*://} =~ name &&
32
+ (uri = URI.parse(name)).respond_to?(:open)
33
+ uri.open(*rest, &block)
34
+ else
35
+ open_uri_original_open(name, *rest, &block)
36
+ end
37
+ end
38
+ module_function :open
39
+ end
40
+
41
+ # OpenURI is an easy-to-use wrapper for net/http, net/https and net/ftp.
42
+ #
43
+ #== Example
44
+ #
45
+ # It is possible to open http/https/ftp URL as usual like opening a file:
46
+ #
47
+ # open("http://www.ruby-lang.org/") {|f|
48
+ # f.each_line {|line| p line}
49
+ # }
50
+ #
51
+ # The opened file has several methods for meta information as follows since
52
+ # it is extended by OpenURI::Meta.
53
+ #
54
+ # open("http://www.ruby-lang.org/en") {|f|
55
+ # f.each_line {|line| p line}
56
+ # p f.base_uri # <URI::HTTP:0x40e6ef2 URL:http://www.ruby-lang.org/en/>
57
+ # p f.content_type # "text/html"
58
+ # p f.charset # "iso-8859-1"
59
+ # p f.content_encoding # []
60
+ # p f.last_modified # Thu Dec 05 02:45:02 UTC 2002
61
+ # }
62
+ #
63
+ # Additional header fields can be specified by an optional hash argument.
64
+ #
65
+ # open("http://www.ruby-lang.org/en/",
66
+ # "User-Agent" => "Ruby/#{RUBY_VERSION}",
67
+ # "From" => "foo@bar.invalid",
68
+ # "Referer" => "http://www.ruby-lang.org/") {|f|
69
+ # # ...
70
+ # }
71
+ #
72
+ # The environment variables such as http_proxy, https_proxy and ftp_proxy
73
+ # are in effect by default. :proxy => nil disables proxy.
74
+ #
75
+ # open("http://www.ruby-lang.org/en/raa.html", :proxy => nil) {|f|
76
+ # # ...
77
+ # }
78
+ #
79
+ # URI objects can be opened in a similar way.
80
+ #
81
+ # uri = URI.parse("http://www.ruby-lang.org/en/")
82
+ # uri.open {|f|
83
+ # # ...
84
+ # }
85
+ #
86
+ # URI objects can be read directly. The returned string is also extended by
87
+ # OpenURI::Meta.
88
+ #
89
+ # str = uri.read
90
+ # p str.base_uri
91
+ #
92
+ # Author:: Tanaka Akira <akr@m17n.org>
93
+
94
+ module OpenURI
95
+ Options = {
96
+ :proxy => true,
97
+ :proxy_http_basic_authentication => true,
98
+ :progress_proc => true,
99
+ :content_length_proc => true,
100
+ :http_basic_authentication => true,
101
+ :read_timeout => true,
102
+ :ssl_ca_cert => nil,
103
+ :ssl_verify_mode => nil,
104
+ :ftp_active_mode => false,
105
+ :redirect => true,
106
+ }
107
+
108
+ def OpenURI.check_options(options) # :nodoc:
109
+ options.each {|k, v|
110
+ next unless Symbol === k
111
+ unless Options.include? k
112
+ raise ArgumentError, "unrecognized option: #{k}"
113
+ end
114
+ }
115
+ end
116
+
117
+ def OpenURI.scan_open_optional_arguments(*rest) # :nodoc:
118
+ if !rest.empty? && (String === rest.first || Integer === rest.first)
119
+ mode = rest.shift
120
+ if !rest.empty? && Integer === rest.first
121
+ perm = rest.shift
122
+ end
123
+ end
124
+ return mode, perm, rest
125
+ end
126
+
127
+ def OpenURI.open_uri(name, *rest) # :nodoc:
128
+ uri = URI::Generic === name ? name : URI.parse(name)
129
+ mode, perm, rest = OpenURI.scan_open_optional_arguments(*rest)
130
+ options = rest.shift if !rest.empty? && Hash === rest.first
131
+ raise ArgumentError.new("extra arguments") if !rest.empty?
132
+ options ||= {}
133
+ OpenURI.check_options(options)
134
+
135
+ if /\Arb?(?:\Z|:([^:]+))/ =~ mode
136
+ encoding, = $1,Encoding.find($1) if $1
137
+ mode = nil
138
+ end
139
+
140
+ unless mode == nil ||
141
+ mode == 'r' || mode == 'rb' ||
142
+ mode == File::RDONLY
143
+ raise ArgumentError.new("invalid access mode #{mode} (#{uri.class} resource is read only.)")
144
+ end
145
+
146
+ io = open_loop(uri, options)
147
+ io.set_encoding(encoding) if encoding
148
+ if block_given?
149
+ begin
150
+ yield io
151
+ ensure
152
+ io.close
153
+ end
154
+ else
155
+ io
156
+ end
157
+ end
158
+
159
+ def OpenURI.open_loop(uri, options) # :nodoc:
160
+ proxy_opts = []
161
+ proxy_opts << :proxy_http_basic_authentication if options.include? :proxy_http_basic_authentication
162
+ proxy_opts << :proxy if options.include? :proxy
163
+ proxy_opts.compact!
164
+ if 1 < proxy_opts.length
165
+ raise ArgumentError, "multiple proxy options specified"
166
+ end
167
+ case proxy_opts.first
168
+ when :proxy_http_basic_authentication
169
+ opt_proxy, proxy_user, proxy_pass = options.fetch(:proxy_http_basic_authentication)
170
+ proxy_user = proxy_user.to_str
171
+ proxy_pass = proxy_pass.to_str
172
+ if opt_proxy == true
173
+ raise ArgumentError.new("Invalid authenticated proxy option: #{options[:proxy_http_basic_authentication].inspect}")
174
+ end
175
+ when :proxy
176
+ opt_proxy = options.fetch(:proxy)
177
+ proxy_user = nil
178
+ proxy_pass = nil
179
+ when nil
180
+ opt_proxy = true
181
+ proxy_user = nil
182
+ proxy_pass = nil
183
+ end
184
+ case opt_proxy
185
+ when true
186
+ find_proxy = lambda {|u| pxy = u.find_proxy; pxy ? [pxy, nil, nil] : nil}
187
+ when nil, false
188
+ find_proxy = lambda {|u| nil}
189
+ when String
190
+ opt_proxy = URI.parse(opt_proxy)
191
+ find_proxy = lambda {|u| [opt_proxy, proxy_user, proxy_pass]}
192
+ when URI::Generic
193
+ find_proxy = lambda {|u| [opt_proxy, proxy_user, proxy_pass]}
194
+ else
195
+ raise ArgumentError.new("Invalid proxy option: #{opt_proxy}")
196
+ end
197
+
198
+ uri_set = {}
199
+ buf = nil
200
+ while true
201
+ redirect = catch(:open_uri_redirect) {
202
+ buf = Buffer.new
203
+ uri.buffer_open(buf, find_proxy.call(uri), options)
204
+ nil
205
+ }
206
+ if redirect
207
+ if redirect.relative?
208
+ # Although it violates RFC2616, Location: field may have relative
209
+ # URI. It is converted to absolute URI using uri as a base URI.
210
+ redirect = uri + redirect
211
+ end
212
+ if !options.fetch(:redirect, true)
213
+ raise HTTPRedirect.new(buf.io.status.join(' '), buf.io, redirect)
214
+ end
215
+ unless OpenURI.redirectable?(uri, redirect)
216
+ raise "redirection forbidden: #{uri} -> #{redirect}"
217
+ end
218
+ if options.include? :http_basic_authentication
219
+ # send authentication only for the URI directly specified.
220
+ options = options.dup
221
+ options.delete :http_basic_authentication
222
+ end
223
+ uri = redirect
224
+ raise "HTTP redirection loop: #{uri}" if uri_set.include? uri.to_s
225
+ uri_set[uri.to_s] = true
226
+ else
227
+ break
228
+ end
229
+ end
230
+ io = buf.io
231
+ io.base_uri = uri
232
+ io
233
+ end
234
+
235
+ def OpenURI.redirectable?(uri1, uri2) # :nodoc:
236
+ # This test is intended to forbid a redirection from http://... to
237
+ # file:///etc/passwd.
238
+ # https to http redirect is also forbidden intentionally.
239
+ # It avoids sending secure cookie or referer by non-secure HTTP protocol.
240
+ # (RFC 2109 4.3.1, RFC 2965 3.3, RFC 2616 15.1.3)
241
+ # However this is ad hoc. It should be extensible/configurable.
242
+ uri1.scheme.downcase == uri2.scheme.downcase ||
243
+ (/\A(?:http|ftp)\z/i =~ uri1.scheme && /\A(?:http|ftp)\z/i =~ uri2.scheme)
244
+ end
245
+
246
+ def OpenURI.open_http(buf, target, proxy, options) # :nodoc:
247
+ if proxy
248
+ proxy_uri, proxy_user, proxy_pass = proxy
249
+ raise "Non-HTTP proxy URI: #{proxy_uri}" if proxy_uri.class != URI::HTTP
250
+ end
251
+
252
+ if target.userinfo && "1.9.0" <= RUBY_VERSION
253
+ # don't raise for 1.8 because compatibility.
254
+ raise ArgumentError, "userinfo not supported. [RFC3986]"
255
+ end
256
+
257
+ header = {}
258
+ options.each {|k, v| header[k] = v if String === k }
259
+
260
+ require 'net/http'
261
+ klass = Net::HTTP
262
+ if URI::HTTP === target
263
+ # HTTP or HTTPS
264
+ if proxy
265
+ if proxy_user && proxy_pass
266
+ klass = Net::HTTP::Proxy(proxy_uri.host, proxy_uri.port, proxy_user, proxy_pass)
267
+ else
268
+ klass = Net::HTTP::Proxy(proxy_uri.host, proxy_uri.port)
269
+ end
270
+ end
271
+ target_host = target.host
272
+ target_port = target.port
273
+ request_uri = target.request_uri
274
+ else
275
+ # FTP over HTTP proxy
276
+ target_host = proxy_uri.host
277
+ target_port = proxy_uri.port
278
+ request_uri = target.to_s
279
+ if proxy_user && proxy_pass
280
+ header["Proxy-Authorization"] = 'Basic ' + ["#{proxy_user}:#{proxy_pass}"].pack('m').delete("\r\n")
281
+ end
282
+ end
283
+
284
+ http = klass.new(target_host, target_port)
285
+ if target.class == URI::HTTPS
286
+ require 'net/https'
287
+ http.use_ssl = true
288
+ http.verify_mode = options[:ssl_verify_mode] || OpenSSL::SSL::VERIFY_PEER
289
+ store = OpenSSL::X509::Store.new
290
+ if options[:ssl_ca_cert]
291
+ if File.directory? options[:ssl_ca_cert]
292
+ store.add_path options[:ssl_ca_cert]
293
+ else
294
+ store.add_file options[:ssl_ca_cert]
295
+ end
296
+ else
297
+ store.set_default_paths
298
+ end
299
+ http.cert_store = store
300
+ end
301
+ if options.include? :read_timeout
302
+ http.read_timeout = options[:read_timeout]
303
+ end
304
+
305
+ resp = nil
306
+ http.start {
307
+ req = Net::HTTP::Get.new(request_uri, header)
308
+ if options.include? :http_basic_authentication
309
+ user, pass = options[:http_basic_authentication]
310
+ req.basic_auth user, pass
311
+ end
312
+ http.request(req) {|response|
313
+ resp = response
314
+ if options[:content_length_proc] && Net::HTTPSuccess === resp
315
+ if resp.key?('Content-Length')
316
+ options[:content_length_proc].call(resp['Content-Length'].to_i)
317
+ else
318
+ options[:content_length_proc].call(nil)
319
+ end
320
+ end
321
+ resp.read_body {|str|
322
+ buf << str
323
+ if options[:progress_proc] && Net::HTTPSuccess === resp
324
+ options[:progress_proc].call(buf.size)
325
+ end
326
+ }
327
+ }
328
+ }
329
+ io = buf.io
330
+ io.rewind
331
+ io.status = [resp.code, resp.message]
332
+ resp.each {|name,value| buf.io.meta_add_field name, value }
333
+ case resp
334
+ when Net::HTTPSuccess
335
+ when Net::HTTPMovedPermanently, # 301
336
+ Net::HTTPFound, # 302
337
+ Net::HTTPSeeOther, # 303
338
+ Net::HTTPTemporaryRedirect # 307
339
+ begin
340
+ loc_uri = URI.parse(resp['location'])
341
+ rescue URI::InvalidURIError
342
+ raise OpenURI::HTTPError.new(io.status.join(' ') + ' (Invalid Location URI)', io)
343
+ end
344
+ throw :open_uri_redirect, loc_uri
345
+ else
346
+ raise OpenURI::HTTPError.new(io.status.join(' '), io)
347
+ end
348
+ end
349
+
350
+ class HTTPError < StandardError
351
+ def initialize(message, io)
352
+ super(message)
353
+ @io = io
354
+ end
355
+ attr_reader :io
356
+ end
357
+
358
+ class HTTPRedirect < HTTPError
359
+ def initialize(message, io, uri)
360
+ super(message, io)
361
+ @uri = uri
362
+ end
363
+ attr_reader :uri
364
+ end
365
+
366
+ class Buffer # :nodoc:
367
+ def initialize
368
+ @io = StringIO.new
369
+ @size = 0
370
+ end
371
+ attr_reader :size
372
+
373
+ StringMax = 10240
374
+ def <<(str)
375
+ @io << str
376
+ @size += str.length
377
+ if StringIO === @io && StringMax < @size
378
+ require 'tempfile'
379
+ io = Tempfile.new('open-uri')
380
+ io.binmode
381
+ Meta.init io, @io if Meta === @io
382
+ io << @io.string
383
+ @io = io
384
+ end
385
+ end
386
+
387
+ def io
388
+ Meta.init @io unless Meta === @io
389
+ @io
390
+ end
391
+ end
392
+
393
+ # Mixin for holding meta-information.
394
+ module Meta
395
+ def Meta.init(obj, src=nil) # :nodoc:
396
+ obj.extend Meta
397
+ obj.instance_eval {
398
+ @base_uri = nil
399
+ @meta = {}
400
+ }
401
+ if src
402
+ obj.status = src.status
403
+ obj.base_uri = src.base_uri
404
+ src.meta.each {|name, value|
405
+ obj.meta_add_field(name, value)
406
+ }
407
+ end
408
+ end
409
+
410
+ # returns an Array which consists status code and message.
411
+ attr_accessor :status
412
+
413
+ # returns a URI which is base of relative URIs in the data.
414
+ # It may differ from the URI supplied by a user because redirection.
415
+ attr_accessor :base_uri
416
+
417
+ # returns a Hash which represents header fields.
418
+ # The Hash keys are downcased for canonicalization.
419
+ attr_reader :meta
420
+
421
+ def meta_setup_encoding # :nodoc:
422
+ charset = self.charset
423
+ enc = nil
424
+ if charset
425
+ begin
426
+ enc = Encoding.find(charset)
427
+ rescue ArgumentError
428
+ end
429
+ end
430
+ enc = Encoding::ASCII_8BIT unless enc
431
+ if self.respond_to? :force_encoding
432
+ self.force_encoding(enc)
433
+ elsif self.respond_to? :string
434
+ self.string.force_encoding(enc)
435
+ else # Tempfile
436
+ self.set_encoding enc
437
+ end
438
+ end
439
+
440
+ def meta_add_field(name, value) # :nodoc:
441
+ name = name.downcase
442
+ @meta[name] = value
443
+ meta_setup_encoding if name == 'content-type'
444
+ end
445
+
446
+ # returns a Time which represents Last-Modified field.
447
+ def last_modified
448
+ if v = @meta['last-modified']
449
+ Time.httpdate(v)
450
+ else
451
+ nil
452
+ end
453
+ end
454
+
455
+ RE_LWS = /[\r\n\t ]+/n
456
+ RE_TOKEN = %r{[^\x00- ()<>@,;:\\"/\[\]?={}\x7f]+}n
457
+ RE_QUOTED_STRING = %r{"(?:[\r\n\t !#-\[\]-~\x80-\xff]|\\[\x00-\x7f])*"}n
458
+ RE_PARAMETERS = %r{(?:;#{RE_LWS}?#{RE_TOKEN}#{RE_LWS}?=#{RE_LWS}?(?:#{RE_TOKEN}|#{RE_QUOTED_STRING})#{RE_LWS}?)*}n
459
+
460
+ def content_type_parse # :nodoc:
461
+ v = @meta['content-type']
462
+ # The last (?:;#{RE_LWS}?)? matches extra ";" which violates RFC2045.
463
+ if v && %r{\A#{RE_LWS}?(#{RE_TOKEN})#{RE_LWS}?/(#{RE_TOKEN})#{RE_LWS}?(#{RE_PARAMETERS})(?:;#{RE_LWS}?)?\z}no =~ v
464
+ type = $1.downcase
465
+ subtype = $2.downcase
466
+ parameters = []
467
+ $3.scan(/;#{RE_LWS}?(#{RE_TOKEN})#{RE_LWS}?=#{RE_LWS}?(?:(#{RE_TOKEN})|(#{RE_QUOTED_STRING}))/no) {|att, val, qval|
468
+ val = qval.gsub(/[\r\n\t !#-\[\]-~\x80-\xff]+|(\\[\x00-\x7f])/n) { $1 ? $1[1,1] : $& } if qval
469
+ parameters << [att.downcase, val]
470
+ }
471
+ ["#{type}/#{subtype}", *parameters]
472
+ else
473
+ nil
474
+ end
475
+ end
476
+
477
+ # returns "type/subtype" which is MIME Content-Type.
478
+ # It is downcased for canonicalization.
479
+ # Content-Type parameters are stripped.
480
+ def content_type
481
+ type, *parameters = content_type_parse
482
+ type || 'application/octet-stream'
483
+ end
484
+
485
+ # returns a charset parameter in Content-Type field.
486
+ # It is downcased for canonicalization.
487
+ #
488
+ # If charset parameter is not given but a block is given,
489
+ # the block is called and its result is returned.
490
+ # It can be used to guess charset.
491
+ #
492
+ # If charset parameter and block is not given,
493
+ # nil is returned except text type in HTTP.
494
+ # In that case, "iso-8859-1" is returned as defined by RFC2616 3.7.1.
495
+ def charset
496
+ type, *parameters = content_type_parse
497
+ if pair = parameters.assoc('charset')
498
+ pair.last.downcase
499
+ elsif block_given?
500
+ yield
501
+ elsif type && %r{\Atext/} =~ type &&
502
+ @base_uri && /\Ahttp\z/i =~ @base_uri.scheme
503
+ "iso-8859-1" # RFC2616 3.7.1
504
+ else
505
+ nil
506
+ end
507
+ end
508
+
509
+ # returns a list of encodings in Content-Encoding field
510
+ # as an Array of String.
511
+ # The encodings are downcased for canonicalization.
512
+ def content_encoding
513
+ v = @meta['content-encoding']
514
+ if v && %r{\A#{RE_LWS}?#{RE_TOKEN}#{RE_LWS}?(?:,#{RE_LWS}?#{RE_TOKEN}#{RE_LWS}?)*}o =~ v
515
+ v.scan(RE_TOKEN).map {|content_coding| content_coding.downcase}
516
+ else
517
+ []
518
+ end
519
+ end
520
+ end
521
+
522
+ # Mixin for HTTP and FTP URIs.
523
+ module OpenRead
524
+ # OpenURI::OpenRead#open provides `open' for URI::HTTP and URI::FTP.
525
+ #
526
+ # OpenURI::OpenRead#open takes optional 3 arguments as:
527
+ # OpenURI::OpenRead#open([mode [, perm]] [, options]) [{|io| ... }]
528
+ #
529
+ # `mode', `perm' is same as Kernel#open.
530
+ #
531
+ # However, `mode' must be read mode because OpenURI::OpenRead#open doesn't
532
+ # support write mode (yet).
533
+ # Also `perm' is just ignored because it is meaningful only for file
534
+ # creation.
535
+ #
536
+ # `options' must be a hash.
537
+ #
538
+ # Each pairs which key is a string in the hash specify a extra header
539
+ # field for HTTP.
540
+ # I.e. it is ignored for FTP without HTTP proxy.
541
+ #
542
+ # The hash may include other options which key is a symbol:
543
+ #
544
+ # [:proxy]
545
+ # Synopsis:
546
+ # :proxy => "http://proxy.foo.com:8000/"
547
+ # :proxy => URI.parse("http://proxy.foo.com:8000/")
548
+ # :proxy => true
549
+ # :proxy => false
550
+ # :proxy => nil
551
+ #
552
+ # If :proxy option is specified, the value should be String, URI,
553
+ # boolean or nil.
554
+ # When String or URI is given, it is treated as proxy URI.
555
+ # When true is given or the option itself is not specified,
556
+ # environment variable `scheme_proxy' is examined.
557
+ # `scheme' is replaced by `http', `https' or `ftp'.
558
+ # When false or nil is given, the environment variables are ignored and
559
+ # connection will be made to a server directly.
560
+ #
561
+ # [:proxy_http_basic_authentication]
562
+ # Synopsis:
563
+ # :proxy_http_basic_authentication => ["http://proxy.foo.com:8000/", "proxy-user", "proxy-password"]
564
+ # :proxy_http_basic_authentication => [URI.parse("http://proxy.foo.com:8000/"), "proxy-user", "proxy-password"]
565
+ #
566
+ # If :proxy option is specified, the value should be an Array with 3 elements.
567
+ # It should contain a proxy URI, a proxy user name and a proxy password.
568
+ # The proxy URI should be a String, an URI or nil.
569
+ # The proxy user name and password should be a String.
570
+ #
571
+ # If nil is given for the proxy URI, this option is just ignored.
572
+ #
573
+ # If :proxy and :proxy_http_basic_authentication is specified,
574
+ # ArgumentError is raised.
575
+ #
576
+ # [:http_basic_authentication]
577
+ # Synopsis:
578
+ # :http_basic_authentication=>[user, password]
579
+ #
580
+ # If :http_basic_authentication is specified,
581
+ # the value should be an array which contains 2 strings:
582
+ # username and password.
583
+ # It is used for HTTP Basic authentication defined by RFC 2617.
584
+ #
585
+ # [:content_length_proc]
586
+ # Synopsis:
587
+ # :content_length_proc => lambda {|content_length| ... }
588
+ #
589
+ # If :content_length_proc option is specified, the option value procedure
590
+ # is called before actual transfer is started.
591
+ # It takes one argument which is expected content length in bytes.
592
+ #
593
+ # If two or more transfer is done by HTTP redirection, the procedure
594
+ # is called only one for a last transfer.
595
+ #
596
+ # When expected content length is unknown, the procedure is called with
597
+ # nil.
598
+ # It is happen when HTTP response has no Content-Length header.
599
+ #
600
+ # [:progress_proc]
601
+ # Synopsis:
602
+ # :progress_proc => lambda {|size| ...}
603
+ #
604
+ # If :progress_proc option is specified, the proc is called with one
605
+ # argument each time when `open' gets content fragment from network.
606
+ # The argument `size' `size' is a accumulated transfered size in bytes.
607
+ #
608
+ # If two or more transfer is done by HTTP redirection, the procedure
609
+ # is called only one for a last transfer.
610
+ #
611
+ # :progress_proc and :content_length_proc are intended to be used for
612
+ # progress bar.
613
+ # For example, it can be implemented as follows using Ruby/ProgressBar.
614
+ #
615
+ # pbar = nil
616
+ # open("http://...",
617
+ # :content_length_proc => lambda {|t|
618
+ # if t && 0 < t
619
+ # pbar = ProgressBar.new("...", t)
620
+ # pbar.file_transfer_mode
621
+ # end
622
+ # },
623
+ # :progress_proc => lambda {|s|
624
+ # pbar.set s if pbar
625
+ # }) {|f| ... }
626
+ #
627
+ # [:read_timeout]
628
+ # Synopsis:
629
+ # :read_timeout=>nil (no timeout)
630
+ # :read_timeout=>10 (10 second)
631
+ #
632
+ # :read_timeout option specifies a timeout of read for http connections.
633
+ #
634
+ # [:ssl_ca_cert]
635
+ # Synopsis:
636
+ # :ssl_ca_cert=>filename
637
+ #
638
+ # :ssl_ca_cert is used to specify CA certificate for SSL.
639
+ # If it is given, default certificates are not used.
640
+ #
641
+ # [:ssl_verify_mode]
642
+ # Synopsis:
643
+ # :ssl_verify_mode=>mode
644
+ #
645
+ # :ssl_verify_mode is used to specify openssl verify mode.
646
+ #
647
+ # OpenURI::OpenRead#open returns an IO like object if block is not given.
648
+ # Otherwise it yields the IO object and return the value of the block.
649
+ # The IO object is extended with OpenURI::Meta.
650
+ #
651
+ # [:ftp_active_mode]
652
+ # Synopsis:
653
+ # :ftp_active_mode=>bool
654
+ #
655
+ # :ftp_active_mode=>true is used to make ftp active mode.
656
+ # Note that the active mode is default in Ruby 1.8 or prior.
657
+ # Ruby 1.9 uses passive mode by default.
658
+ #
659
+ # [:redirect]
660
+ # Synopsis:
661
+ # :redirect=>bool
662
+ #
663
+ # :redirect=>false is used to disable HTTP redirects at all.
664
+ # OpenURI::HTTPRedirect exception raised on redirection.
665
+ # It is true by default.
666
+ # The true means redirections between http and ftp is permitted.
667
+ #
668
+ def open(*rest, &block)
669
+ OpenURI.open_uri(self, *rest, &block)
670
+ end
671
+
672
+ # OpenURI::OpenRead#read([options]) reads a content referenced by self and
673
+ # returns the content as string.
674
+ # The string is extended with OpenURI::Meta.
675
+ # The argument `options' is same as OpenURI::OpenRead#open.
676
+ def read(options={})
677
+ self.open(options) {|f|
678
+ str = f.read
679
+ Meta.init str, f
680
+ str
681
+ }
682
+ end
683
+ end
684
+ end
685
+
686
+ module URI
687
+ class Generic
688
+ # returns a proxy URI.
689
+ # The proxy URI is obtained from environment variables such as http_proxy,
690
+ # ftp_proxy, no_proxy, etc.
691
+ # If there is no proper proxy, nil is returned.
692
+ #
693
+ # Note that capitalized variables (HTTP_PROXY, FTP_PROXY, NO_PROXY, etc.)
694
+ # are examined too.
695
+ #
696
+ # But http_proxy and HTTP_PROXY is treated specially under CGI environment.
697
+ # It's because HTTP_PROXY may be set by Proxy: header.
698
+ # So HTTP_PROXY is not used.
699
+ # http_proxy is not used too if the variable is case insensitive.
700
+ # CGI_HTTP_PROXY can be used instead.
701
+ def find_proxy
702
+ name = self.scheme.downcase + '_proxy'
703
+ proxy_uri = nil
704
+ if name == 'http_proxy' && ENV.include?('REQUEST_METHOD') # CGI?
705
+ # HTTP_PROXY conflicts with *_proxy for proxy settings and
706
+ # HTTP_* for header information in CGI.
707
+ # So it should be careful to use it.
708
+ pairs = ENV.reject {|k, v| /\Ahttp_proxy\z/i !~ k }
709
+ case pairs.length
710
+ when 0 # no proxy setting anyway.
711
+ proxy_uri = nil
712
+ when 1
713
+ k, v = pairs.shift
714
+ if k == 'http_proxy' && ENV[k.upcase] == nil
715
+ # http_proxy is safe to use because ENV is case sensitive.
716
+ proxy_uri = ENV[name]
717
+ else
718
+ proxy_uri = nil
719
+ end
720
+ else # http_proxy is safe to use because ENV is case sensitive.
721
+ proxy_uri = ENV.to_hash[name]
722
+ end
723
+ if !proxy_uri
724
+ # Use CGI_HTTP_PROXY. cf. libwww-perl.
725
+ proxy_uri = ENV["CGI_#{name.upcase}"]
726
+ end
727
+ elsif name == 'http_proxy'
728
+ unless proxy_uri = ENV[name]
729
+ if proxy_uri = ENV[name.upcase]
730
+ warn 'The environment variable HTTP_PROXY is discouraged. Use http_proxy.'
731
+ end
732
+ end
733
+ else
734
+ proxy_uri = ENV[name] || ENV[name.upcase]
735
+ end
736
+
737
+ if proxy_uri && self.host
738
+ require 'socket'
739
+ begin
740
+ addr = IPSocket.getaddress(self.host)
741
+ proxy_uri = nil if /\A127\.|\A::1\z/ =~ addr
742
+ rescue SocketError
743
+ end
744
+ end
745
+
746
+ if proxy_uri
747
+ proxy_uri = URI.parse(proxy_uri)
748
+ name = 'no_proxy'
749
+ if no_proxy = ENV[name] || ENV[name.upcase]
750
+ no_proxy.scan(/([^:,]*)(?::(\d+))?/) {|host, port|
751
+ if /(\A|\.)#{Regexp.quote host}\z/i =~ self.host &&
752
+ (!port || self.port == port.to_i)
753
+ proxy_uri = nil
754
+ break
755
+ end
756
+ }
757
+ end
758
+ proxy_uri
759
+ else
760
+ nil
761
+ end
762
+ end
763
+ end
764
+
765
+ class HTTP
766
+ def buffer_open(buf, proxy, options) # :nodoc:
767
+ OpenURI.open_http(buf, self, proxy, options)
768
+ end
769
+
770
+ include OpenURI::OpenRead
771
+ end
772
+
773
+ class FTP
774
+ def buffer_open(buf, proxy, options) # :nodoc:
775
+ if proxy
776
+ OpenURI.open_http(buf, self, proxy, options)
777
+ return
778
+ end
779
+ require 'net/ftp'
780
+
781
+ path = self.path
782
+ path = path.sub(%r{\A/}, '%2F') # re-encode the beginning slash because uri library decodes it.
783
+ directories = path.split(%r{/}, -1)
784
+ directories.each {|d|
785
+ d.gsub!(/%([0-9A-Fa-f][0-9A-Fa-f])/) { [$1].pack("H2") }
786
+ }
787
+ unless filename = directories.pop
788
+ raise ArgumentError, "no filename: #{self.inspect}"
789
+ end
790
+ directories.each {|d|
791
+ if /[\r\n]/ =~ d
792
+ raise ArgumentError, "invalid directory: #{d.inspect}"
793
+ end
794
+ }
795
+ if /[\r\n]/ =~ filename
796
+ raise ArgumentError, "invalid filename: #{filename.inspect}"
797
+ end
798
+ typecode = self.typecode
799
+ if typecode && /\A[aid]\z/ !~ typecode
800
+ raise ArgumentError, "invalid typecode: #{typecode.inspect}"
801
+ end
802
+
803
+ # The access sequence is defined by RFC 1738
804
+ ftp = Net::FTP.new
805
+ ftp.connect(self.host, self.port)
806
+ ftp.passive = true if !options[:ftp_active_mode]
807
+ # todo: extract user/passwd from .netrc.
808
+ user = 'anonymous'
809
+ passwd = nil
810
+ user, passwd = self.userinfo.split(/:/) if self.userinfo
811
+ ftp.login(user, passwd)
812
+ directories.each {|cwd|
813
+ ftp.voidcmd("CWD #{cwd}")
814
+ }
815
+ if typecode
816
+ # xxx: typecode D is not handled.
817
+ ftp.voidcmd("TYPE #{typecode.upcase}")
818
+ end
819
+ if options[:content_length_proc]
820
+ options[:content_length_proc].call(ftp.size(filename))
821
+ end
822
+ ftp.retrbinary("RETR #{filename}", 4096) { |str|
823
+ buf << str
824
+ options[:progress_proc].call(buf.size) if options[:progress_proc]
825
+ }
826
+ ftp.close
827
+ buf.io.rewind
828
+ end
829
+
830
+ include OpenURI::OpenRead
831
+ end
832
+ end