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,981 @@
1
+ #
2
+ # = net/ftp.rb - FTP Client Library
3
+ #
4
+ # Written by Shugo Maeda <shugo@ruby-lang.org>.
5
+ #
6
+ # Documentation by Gavin Sinclair, sourced from "Programming Ruby" (Hunt/Thomas)
7
+ # and "Ruby In a Nutshell" (Matsumoto), used with permission.
8
+ #
9
+ # This library is distributed under the terms of the Ruby license.
10
+ # You can freely distribute/modify this library.
11
+ #
12
+ # It is included in the Ruby standard library.
13
+ #
14
+ # See the Net::FTP class for an overview.
15
+ #
16
+
17
+ require "socket"
18
+ require "monitor"
19
+
20
+ module Net
21
+
22
+ # :stopdoc:
23
+ class FTPError < StandardError; end
24
+ class FTPReplyError < FTPError; end
25
+ class FTPTempError < FTPError; end
26
+ class FTPPermError < FTPError; end
27
+ class FTPProtoError < FTPError; end
28
+ # :startdoc:
29
+
30
+ #
31
+ # This class implements the File Transfer Protocol. If you have used a
32
+ # command-line FTP program, and are familiar with the commands, you will be
33
+ # able to use this class easily. Some extra features are included to take
34
+ # advantage of Ruby's style and strengths.
35
+ #
36
+ # == Example
37
+ #
38
+ # require 'net/ftp'
39
+ #
40
+ # === Example 1
41
+ #
42
+ # ftp = Net::FTP.new('ftp.netlab.co.jp')
43
+ # ftp.login
44
+ # files = ftp.chdir('pub/lang/ruby/contrib')
45
+ # files = ftp.list('n*')
46
+ # ftp.getbinaryfile('nif.rb-0.91.gz', 'nif.gz', 1024)
47
+ # ftp.close
48
+ #
49
+ # === Example 2
50
+ #
51
+ # Net::FTP.open('ftp.netlab.co.jp') do |ftp|
52
+ # ftp.login
53
+ # files = ftp.chdir('pub/lang/ruby/contrib')
54
+ # files = ftp.list('n*')
55
+ # ftp.getbinaryfile('nif.rb-0.91.gz', 'nif.gz', 1024)
56
+ # end
57
+ #
58
+ # == Major Methods
59
+ #
60
+ # The following are the methods most likely to be useful to users:
61
+ # - FTP.open
62
+ # - #getbinaryfile
63
+ # - #gettextfile
64
+ # - #putbinaryfile
65
+ # - #puttextfile
66
+ # - #chdir
67
+ # - #nlst
68
+ # - #size
69
+ # - #rename
70
+ # - #delete
71
+ #
72
+ class FTP
73
+ include MonitorMixin
74
+
75
+ # :stopdoc:
76
+ FTP_PORT = 21
77
+ CRLF = "\r\n"
78
+ DEFAULT_BLOCKSIZE = 4096
79
+ # :startdoc:
80
+
81
+ # When +true+, transfers are performed in binary mode. Default: +true+.
82
+ attr_reader :binary
83
+
84
+ # When +true+, the connection is in passive mode. Default: +false+.
85
+ attr_accessor :passive
86
+
87
+ # When +true+, all traffic to and from the server is written
88
+ # to +$stdout+. Default: +false+.
89
+ attr_accessor :debug_mode
90
+
91
+ # Sets or retrieves the +resume+ status, which decides whether incomplete
92
+ # transfers are resumed or restarted. Default: +false+.
93
+ attr_accessor :resume
94
+
95
+ # The server's welcome message.
96
+ attr_reader :welcome
97
+
98
+ # The server's last response code.
99
+ attr_reader :last_response_code
100
+ alias lastresp last_response_code
101
+
102
+ # The server's last response.
103
+ attr_reader :last_response
104
+
105
+ #
106
+ # A synonym for <tt>FTP.new</tt>, but with a mandatory host parameter.
107
+ #
108
+ # If a block is given, it is passed the +FTP+ object, which will be closed
109
+ # when the block finishes, or when an exception is raised.
110
+ #
111
+ def FTP.open(host, user = nil, passwd = nil, acct = nil)
112
+ if block_given?
113
+ ftp = new(host, user, passwd, acct)
114
+ begin
115
+ yield ftp
116
+ ensure
117
+ ftp.close
118
+ end
119
+ else
120
+ new(host, user, passwd, acct)
121
+ end
122
+ end
123
+
124
+ #
125
+ # Creates and returns a new +FTP+ object. If a +host+ is given, a connection
126
+ # is made. Additionally, if the +user+ is given, the given user name,
127
+ # password, and (optionally) account are used to log in. See #login.
128
+ #
129
+ def initialize(host = nil, user = nil, passwd = nil, acct = nil)
130
+ super()
131
+ @binary = false
132
+ @passive = false
133
+ @debug_mode = false
134
+ @resume = false
135
+ if host
136
+ connect(host)
137
+ if user
138
+ login(user, passwd, acct)
139
+ end
140
+ end
141
+ end
142
+
143
+ def binary=(newmode)
144
+ if newmode != @binary
145
+ @binary = newmode
146
+ @binary ? voidcmd("TYPE I") : voidcmd("TYPE A")
147
+ end
148
+ end
149
+
150
+ def with_binary(newmode)
151
+ oldmode = binary
152
+ self.binary = newmode
153
+ begin
154
+ yield
155
+ ensure
156
+ self.binary = oldmode
157
+ end
158
+ end
159
+ private :with_binary
160
+
161
+ # Obsolete
162
+ def return_code
163
+ $stderr.puts("warning: Net::FTP#return_code is obsolete and do nothing")
164
+ return "\n"
165
+ end
166
+
167
+ # Obsolete
168
+ def return_code=(s)
169
+ $stderr.puts("warning: Net::FTP#return_code= is obsolete and do nothing")
170
+ end
171
+
172
+ def open_socket(host, port)
173
+ if defined? SOCKSSocket and ENV["SOCKS_SERVER"]
174
+ @passive = true
175
+ return SOCKSSocket.open(host, port)
176
+ else
177
+ return TCPSocket.open(host, port)
178
+ end
179
+ end
180
+ private :open_socket
181
+
182
+ #
183
+ # Establishes an FTP connection to host, optionally overriding the default
184
+ # port. If the environment variable +SOCKS_SERVER+ is set, sets up the
185
+ # connection through a SOCKS proxy. Raises an exception (typically
186
+ # <tt>Errno::ECONNREFUSED</tt>) if the connection cannot be established.
187
+ #
188
+ def connect(host, port = FTP_PORT)
189
+ if @debug_mode
190
+ print "connect: ", host, ", ", port, "\n"
191
+ end
192
+ synchronize do
193
+ @sock = open_socket(host, port)
194
+ voidresp
195
+ end
196
+ end
197
+
198
+ #
199
+ # WRITEME or make private
200
+ #
201
+ def set_socket(sock, get_greeting = true)
202
+ synchronize do
203
+ @sock = sock
204
+ if get_greeting
205
+ voidresp
206
+ end
207
+ end
208
+ end
209
+
210
+ def sanitize(s)
211
+ if s =~ /^PASS /i
212
+ return s[0, 5] + "*" * (s.length - 5)
213
+ else
214
+ return s
215
+ end
216
+ end
217
+ private :sanitize
218
+
219
+ def putline(line)
220
+ if @debug_mode
221
+ print "put: ", sanitize(line), "\n"
222
+ end
223
+ line = line + CRLF
224
+ @sock.write(line)
225
+ end
226
+ private :putline
227
+
228
+ def getline
229
+ line = @sock.readline # if get EOF, raise EOFError
230
+ line.sub!(/(\r\n|\n|\r)\z/n, "")
231
+ if @debug_mode
232
+ print "get: ", sanitize(line), "\n"
233
+ end
234
+ return line
235
+ end
236
+ private :getline
237
+
238
+ def getmultiline
239
+ line = getline
240
+ buff = line
241
+ if line[3] == ?-
242
+ code = line[0, 3]
243
+ begin
244
+ line = getline
245
+ buff << "\n" << line
246
+ end until line[0, 3] == code and line[3] != ?-
247
+ end
248
+ return buff << "\n"
249
+ end
250
+ private :getmultiline
251
+
252
+ def getresp
253
+ @last_response = getmultiline
254
+ @last_response_code = @last_response[0, 3]
255
+ case @last_response_code
256
+ when /\A[123]/
257
+ return @last_response
258
+ when /\A4/
259
+ raise FTPTempError, @last_response
260
+ when /\A5/
261
+ raise FTPPermError, @last_response
262
+ else
263
+ raise FTPProtoError, @last_response
264
+ end
265
+ end
266
+ private :getresp
267
+
268
+ def voidresp
269
+ resp = getresp
270
+ if resp[0] != ?2
271
+ raise FTPReplyError, resp
272
+ end
273
+ end
274
+ private :voidresp
275
+
276
+ #
277
+ # Sends a command and returns the response.
278
+ #
279
+ def sendcmd(cmd)
280
+ synchronize do
281
+ putline(cmd)
282
+ return getresp
283
+ end
284
+ end
285
+
286
+ #
287
+ # Sends a command and expect a response beginning with '2'.
288
+ #
289
+ def voidcmd(cmd)
290
+ synchronize do
291
+ putline(cmd)
292
+ voidresp
293
+ end
294
+ end
295
+
296
+ def sendport(host, port)
297
+ af = (@sock.peeraddr)[0]
298
+ if af == "AF_INET"
299
+ cmd = "PORT " + (host.split(".") + port.divmod(256)).join(",")
300
+ elsif af == "AF_INET6"
301
+ cmd = sprintf("EPRT |2|%s|%d|", host, port)
302
+ else
303
+ raise FTPProtoError, host
304
+ end
305
+ voidcmd(cmd)
306
+ end
307
+ private :sendport
308
+
309
+ def makeport
310
+ sock = TCPServer.open(@sock.addr[3], 0)
311
+ port = sock.addr[1]
312
+ host = sock.addr[3]
313
+ resp = sendport(host, port)
314
+ return sock
315
+ end
316
+ private :makeport
317
+
318
+ def makepasv
319
+ if @sock.peeraddr[0] == "AF_INET"
320
+ host, port = parse227(sendcmd("PASV"))
321
+ else
322
+ host, port = parse229(sendcmd("EPSV"))
323
+ # host, port = parse228(sendcmd("LPSV"))
324
+ end
325
+ return host, port
326
+ end
327
+ private :makepasv
328
+
329
+ def transfercmd(cmd, rest_offset = nil)
330
+ if @passive
331
+ host, port = makepasv
332
+ conn = open_socket(host, port)
333
+ if @resume and rest_offset
334
+ resp = sendcmd("REST " + rest_offset.to_s)
335
+ if resp[0] != ?3
336
+ raise FTPReplyError, resp
337
+ end
338
+ end
339
+ resp = sendcmd(cmd)
340
+ # skip 2XX for some ftp servers
341
+ resp = getresp if resp[0] == ?2
342
+ if resp[0] != ?1
343
+ raise FTPReplyError, resp
344
+ end
345
+ else
346
+ sock = makeport
347
+ if @resume and rest_offset
348
+ resp = sendcmd("REST " + rest_offset.to_s)
349
+ if resp[0] != ?3
350
+ raise FTPReplyError, resp
351
+ end
352
+ end
353
+ resp = sendcmd(cmd)
354
+ # skip 2XX for some ftp servers
355
+ resp = getresp if resp[0] == ?2
356
+ if resp[0] != ?1
357
+ raise FTPReplyError, resp
358
+ end
359
+ conn = sock.accept
360
+ sock.close
361
+ end
362
+ return conn
363
+ end
364
+ private :transfercmd
365
+
366
+ def getaddress
367
+ thishost = Socket.gethostname
368
+ if not thishost.index(".")
369
+ thishost = Socket.gethostbyname(thishost)[0]
370
+ end
371
+ if ENV.has_key?("LOGNAME")
372
+ realuser = ENV["LOGNAME"]
373
+ elsif ENV.has_key?("USER")
374
+ realuser = ENV["USER"]
375
+ else
376
+ realuser = "anonymous"
377
+ end
378
+ return realuser + "@" + thishost
379
+ end
380
+ private :getaddress
381
+
382
+ #
383
+ # Logs in to the remote host. The session must have been previously
384
+ # connected. If +user+ is the string "anonymous" and the +password+ is
385
+ # +nil+, a password of <tt>user@host</tt> is synthesized. If the +acct+
386
+ # parameter is not +nil+, an FTP ACCT command is sent following the
387
+ # successful login. Raises an exception on error (typically
388
+ # <tt>Net::FTPPermError</tt>).
389
+ #
390
+ def login(user = "anonymous", passwd = nil, acct = nil)
391
+ if user == "anonymous" and passwd == nil
392
+ passwd = getaddress
393
+ end
394
+
395
+ resp = ""
396
+ synchronize do
397
+ resp = sendcmd('USER ' + user)
398
+ if resp[0] == ?3
399
+ raise FTPReplyError, resp if passwd.nil?
400
+ resp = sendcmd('PASS ' + passwd)
401
+ end
402
+ if resp[0] == ?3
403
+ raise FTPReplyError, resp if acct.nil?
404
+ resp = sendcmd('ACCT ' + acct)
405
+ end
406
+ end
407
+ if resp[0] != ?2
408
+ raise FTPReplyError, resp
409
+ end
410
+ @welcome = resp
411
+ self.binary = true
412
+ end
413
+
414
+ #
415
+ # Puts the connection into binary (image) mode, issues the given command,
416
+ # and fetches the data returned, passing it to the associated block in
417
+ # chunks of +blocksize+ characters. Note that +cmd+ is a server command
418
+ # (such as "RETR myfile").
419
+ #
420
+ def retrbinary(cmd, blocksize, rest_offset = nil) # :yield: data
421
+ synchronize do
422
+ with_binary(true) do
423
+ conn = transfercmd(cmd, rest_offset)
424
+ loop do
425
+ data = conn.read(blocksize)
426
+ break if data == nil
427
+ yield(data)
428
+ end
429
+ conn.close
430
+ voidresp
431
+ end
432
+ end
433
+ end
434
+
435
+ #
436
+ # Puts the connection into ASCII (text) mode, issues the given command, and
437
+ # passes the resulting data, one line at a time, to the associated block. If
438
+ # no block is given, prints the lines. Note that +cmd+ is a server command
439
+ # (such as "RETR myfile").
440
+ #
441
+ def retrlines(cmd) # :yield: line
442
+ synchronize do
443
+ with_binary(false) do
444
+ conn = transfercmd(cmd)
445
+ loop do
446
+ line = conn.gets
447
+ break if line == nil
448
+ if line[-2, 2] == CRLF
449
+ line = line[0 .. -3]
450
+ elsif line[-1] == ?\n
451
+ line = line[0 .. -2]
452
+ end
453
+ yield(line)
454
+ end
455
+ conn.close
456
+ voidresp
457
+ end
458
+ end
459
+ end
460
+
461
+ #
462
+ # Puts the connection into binary (image) mode, issues the given server-side
463
+ # command (such as "STOR myfile"), and sends the contents of the file named
464
+ # +file+ to the server. If the optional block is given, it also passes it
465
+ # the data, in chunks of +blocksize+ characters.
466
+ #
467
+ def storbinary(cmd, file, blocksize, rest_offset = nil, &block) # :yield: data
468
+ if rest_offset
469
+ file.seek(rest_offset, IO::SEEK_SET)
470
+ end
471
+ synchronize do
472
+ with_binary(true) do
473
+ conn = transfercmd(cmd, rest_offset)
474
+ loop do
475
+ buf = file.read(blocksize)
476
+ break if buf == nil
477
+ conn.write(buf)
478
+ yield(buf) if block
479
+ end
480
+ conn.close
481
+ voidresp
482
+ end
483
+ end
484
+ rescue Errno::EPIPE
485
+ # EPIPE, in this case, means that the data connection was unexpectedly
486
+ # terminated. Rather than just raising EPIPE to the caller, check the
487
+ # response on the control connection. If getresp doesn't raise a more
488
+ # appropriate exception, re-raise the original exception.
489
+ getresp
490
+ raise
491
+ end
492
+
493
+ #
494
+ # Puts the connection into ASCII (text) mode, issues the given server-side
495
+ # command (such as "STOR myfile"), and sends the contents of the file
496
+ # named +file+ to the server, one line at a time. If the optional block is
497
+ # given, it also passes it the lines.
498
+ #
499
+ def storlines(cmd, file, &block) # :yield: line
500
+ synchronize do
501
+ with_binary(false) do
502
+ conn = transfercmd(cmd)
503
+ loop do
504
+ buf = file.gets
505
+ break if buf == nil
506
+ if buf[-2, 2] != CRLF
507
+ buf = buf.chomp + CRLF
508
+ end
509
+ conn.write(buf)
510
+ yield(buf) if block
511
+ end
512
+ conn.close
513
+ voidresp
514
+ end
515
+ end
516
+ rescue Errno::EPIPE
517
+ # EPIPE, in this case, means that the data connection was unexpectedly
518
+ # terminated. Rather than just raising EPIPE to the caller, check the
519
+ # response on the control connection. If getresp doesn't raise a more
520
+ # appropriate exception, re-raise the original exception.
521
+ getresp
522
+ raise
523
+ end
524
+
525
+ #
526
+ # Retrieves +remotefile+ in binary mode, storing the result in +localfile+.
527
+ # If +localfile+ is nil, returns retrieved data.
528
+ # If a block is supplied, it is passed the retrieved data in +blocksize+
529
+ # chunks.
530
+ #
531
+ def getbinaryfile(remotefile, localfile = File.basename(remotefile),
532
+ blocksize = DEFAULT_BLOCKSIZE) # :yield: data
533
+ result = nil
534
+ if localfile
535
+ if @resume
536
+ rest_offset = File.size?(localfile)
537
+ f = open(localfile, "a")
538
+ else
539
+ rest_offset = nil
540
+ f = open(localfile, "w")
541
+ end
542
+ elsif !block_given?
543
+ result = ""
544
+ end
545
+ begin
546
+ f.binmode if localfile
547
+ retrbinary("RETR " + remotefile, blocksize, rest_offset) do |data|
548
+ f.write(data) if localfile
549
+ yield(data) if block_given?
550
+ result.concat(data) if result
551
+ end
552
+ return result
553
+ ensure
554
+ f.close if localfile
555
+ end
556
+ end
557
+
558
+ #
559
+ # Retrieves +remotefile+ in ASCII (text) mode, storing the result in
560
+ # +localfile+.
561
+ # If +localfile+ is nil, returns retrieved data.
562
+ # If a block is supplied, it is passed the retrieved data one
563
+ # line at a time.
564
+ #
565
+ def gettextfile(remotefile, localfile = File.basename(remotefile)) # :yield: line
566
+ result = nil
567
+ if localfile
568
+ f = open(localfile, "w")
569
+ elsif !block_given?
570
+ result = ""
571
+ end
572
+ begin
573
+ retrlines("RETR " + remotefile) do |line|
574
+ f.puts(line) if localfile
575
+ yield(line) if block_given?
576
+ result.concat(line + "\n") if result
577
+ end
578
+ return result
579
+ ensure
580
+ f.close if localfile
581
+ end
582
+ end
583
+
584
+ #
585
+ # Retrieves +remotefile+ in whatever mode the session is set (text or
586
+ # binary). See #gettextfile and #getbinaryfile.
587
+ #
588
+ def get(remotefile, localfile = File.basename(remotefile),
589
+ blocksize = DEFAULT_BLOCKSIZE, &block) # :yield: data
590
+ if @binary
591
+ getbinaryfile(remotefile, localfile, blocksize, &block)
592
+ else
593
+ gettextfile(remotefile, localfile, &block)
594
+ end
595
+ end
596
+
597
+ #
598
+ # Transfers +localfile+ to the server in binary mode, storing the result in
599
+ # +remotefile+. If a block is supplied, calls it, passing in the transmitted
600
+ # data in +blocksize+ chunks.
601
+ #
602
+ def putbinaryfile(localfile, remotefile = File.basename(localfile),
603
+ blocksize = DEFAULT_BLOCKSIZE, &block) # :yield: data
604
+ if @resume
605
+ begin
606
+ rest_offset = size(remotefile)
607
+ rescue Net::FTPPermError
608
+ rest_offset = nil
609
+ end
610
+ else
611
+ rest_offset = nil
612
+ end
613
+ f = open(localfile)
614
+ begin
615
+ f.binmode
616
+ storbinary("STOR " + remotefile, f, blocksize, rest_offset, &block)
617
+ ensure
618
+ f.close
619
+ end
620
+ end
621
+
622
+ #
623
+ # Transfers +localfile+ to the server in ASCII (text) mode, storing the result
624
+ # in +remotefile+. If callback or an associated block is supplied, calls it,
625
+ # passing in the transmitted data one line at a time.
626
+ #
627
+ def puttextfile(localfile, remotefile = File.basename(localfile), &block) # :yield: line
628
+ f = open(localfile)
629
+ begin
630
+ storlines("STOR " + remotefile, f, &block)
631
+ ensure
632
+ f.close
633
+ end
634
+ end
635
+
636
+ #
637
+ # Transfers +localfile+ to the server in whatever mode the session is set
638
+ # (text or binary). See #puttextfile and #putbinaryfile.
639
+ #
640
+ def put(localfile, remotefile = File.basename(localfile),
641
+ blocksize = DEFAULT_BLOCKSIZE, &block)
642
+ if @binary
643
+ putbinaryfile(localfile, remotefile, blocksize, &block)
644
+ else
645
+ puttextfile(localfile, remotefile, &block)
646
+ end
647
+ end
648
+
649
+ #
650
+ # Sends the ACCT command. TODO: more info.
651
+ #
652
+ def acct(account)
653
+ cmd = "ACCT " + account
654
+ voidcmd(cmd)
655
+ end
656
+
657
+ #
658
+ # Returns an array of filenames in the remote directory.
659
+ #
660
+ def nlst(dir = nil)
661
+ cmd = "NLST"
662
+ if dir
663
+ cmd = cmd + " " + dir
664
+ end
665
+ files = []
666
+ retrlines(cmd) do |line|
667
+ files.push(line)
668
+ end
669
+ return files
670
+ end
671
+
672
+ #
673
+ # Returns an array of file information in the directory (the output is like
674
+ # `ls -l`). If a block is given, it iterates through the listing.
675
+ #
676
+ def list(*args, &block) # :yield: line
677
+ cmd = "LIST"
678
+ args.each do |arg|
679
+ cmd = cmd + " " + arg
680
+ end
681
+ if block
682
+ retrlines(cmd, &block)
683
+ else
684
+ lines = []
685
+ retrlines(cmd) do |line|
686
+ lines << line
687
+ end
688
+ return lines
689
+ end
690
+ end
691
+ alias ls list
692
+ alias dir list
693
+
694
+ #
695
+ # Renames a file on the server.
696
+ #
697
+ def rename(fromname, toname)
698
+ resp = sendcmd("RNFR " + fromname)
699
+ if resp[0] != ?3
700
+ raise FTPReplyError, resp
701
+ end
702
+ voidcmd("RNTO " + toname)
703
+ end
704
+
705
+ #
706
+ # Deletes a file on the server.
707
+ #
708
+ def delete(filename)
709
+ resp = sendcmd("DELE " + filename)
710
+ if resp[0, 3] == "250"
711
+ return
712
+ elsif resp[0] == ?5
713
+ raise FTPPermError, resp
714
+ else
715
+ raise FTPReplyError, resp
716
+ end
717
+ end
718
+
719
+ #
720
+ # Changes the (remote) directory.
721
+ #
722
+ def chdir(dirname)
723
+ if dirname == ".."
724
+ begin
725
+ voidcmd("CDUP")
726
+ return
727
+ rescue FTPPermError => e
728
+ if e.message[0, 3] != "500"
729
+ raise e
730
+ end
731
+ end
732
+ end
733
+ cmd = "CWD " + dirname
734
+ voidcmd(cmd)
735
+ end
736
+
737
+ #
738
+ # Returns the size of the given (remote) filename.
739
+ #
740
+ def size(filename)
741
+ with_binary(true) do
742
+ resp = sendcmd("SIZE " + filename)
743
+ if resp[0, 3] != "213"
744
+ raise FTPReplyError, resp
745
+ end
746
+ return resp[3..-1].strip.to_i
747
+ end
748
+ end
749
+
750
+ MDTM_REGEXP = /^(\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)/ # :nodoc:
751
+
752
+ #
753
+ # Returns the last modification time of the (remote) file. If +local+ is
754
+ # +true+, it is returned as a local time, otherwise it's a UTC time.
755
+ #
756
+ def mtime(filename, local = false)
757
+ str = mdtm(filename)
758
+ ary = str.scan(MDTM_REGEXP)[0].collect {|i| i.to_i}
759
+ return local ? Time.local(*ary) : Time.gm(*ary)
760
+ end
761
+
762
+ #
763
+ # Creates a remote directory.
764
+ #
765
+ def mkdir(dirname)
766
+ resp = sendcmd("MKD " + dirname)
767
+ return parse257(resp)
768
+ end
769
+
770
+ #
771
+ # Removes a remote directory.
772
+ #
773
+ def rmdir(dirname)
774
+ voidcmd("RMD " + dirname)
775
+ end
776
+
777
+ #
778
+ # Returns the current remote directory.
779
+ #
780
+ def pwd
781
+ resp = sendcmd("PWD")
782
+ return parse257(resp)
783
+ end
784
+ alias getdir pwd
785
+
786
+ #
787
+ # Returns system information.
788
+ #
789
+ def system
790
+ resp = sendcmd("SYST")
791
+ if resp[0, 3] != "215"
792
+ raise FTPReplyError, resp
793
+ end
794
+ return resp[4 .. -1]
795
+ end
796
+
797
+ #
798
+ # Aborts the previous command (ABOR command).
799
+ #
800
+ def abort
801
+ line = "ABOR" + CRLF
802
+ print "put: ABOR\n" if @debug_mode
803
+ @sock.send(line, Socket::MSG_OOB)
804
+ resp = getmultiline
805
+ unless ["426", "226", "225"].include?(resp[0, 3])
806
+ raise FTPProtoError, resp
807
+ end
808
+ return resp
809
+ end
810
+
811
+ #
812
+ # Returns the status (STAT command).
813
+ #
814
+ def status
815
+ line = "STAT" + CRLF
816
+ print "put: STAT\n" if @debug_mode
817
+ @sock.send(line, Socket::MSG_OOB)
818
+ return getresp
819
+ end
820
+
821
+ #
822
+ # Issues the MDTM command. TODO: more info.
823
+ #
824
+ def mdtm(filename)
825
+ resp = sendcmd("MDTM " + filename)
826
+ if resp[0, 3] == "213"
827
+ return resp[3 .. -1].strip
828
+ end
829
+ end
830
+
831
+ #
832
+ # Issues the HELP command.
833
+ #
834
+ def help(arg = nil)
835
+ cmd = "HELP"
836
+ if arg
837
+ cmd = cmd + " " + arg
838
+ end
839
+ sendcmd(cmd)
840
+ end
841
+
842
+ #
843
+ # Exits the FTP session.
844
+ #
845
+ def quit
846
+ voidcmd("QUIT")
847
+ end
848
+
849
+ #
850
+ # Issues a NOOP command.
851
+ #
852
+ def noop
853
+ voidcmd("NOOP")
854
+ end
855
+
856
+ #
857
+ # Issues a SITE command.
858
+ #
859
+ def site(arg)
860
+ cmd = "SITE " + arg
861
+ voidcmd(cmd)
862
+ end
863
+
864
+ #
865
+ # Closes the connection. Further operations are impossible until you open
866
+ # a new connection with #connect.
867
+ #
868
+ def close
869
+ @sock.close if @sock and not @sock.closed?
870
+ end
871
+
872
+ #
873
+ # Returns +true+ iff the connection is closed.
874
+ #
875
+ def closed?
876
+ @sock == nil or @sock.closed?
877
+ end
878
+
879
+ def parse227(resp)
880
+ if resp[0, 3] != "227"
881
+ raise FTPReplyError, resp
882
+ end
883
+ left = resp.index("(")
884
+ right = resp.index(")")
885
+ if left == nil or right == nil
886
+ raise FTPProtoError, resp
887
+ end
888
+ numbers = resp[left + 1 .. right - 1].split(",")
889
+ if numbers.length != 6
890
+ raise FTPProtoError, resp
891
+ end
892
+ host = numbers[0, 4].join(".")
893
+ port = (numbers[4].to_i << 8) + numbers[5].to_i
894
+ return host, port
895
+ end
896
+ private :parse227
897
+
898
+ def parse228(resp)
899
+ if resp[0, 3] != "228"
900
+ raise FTPReplyError, resp
901
+ end
902
+ left = resp.index("(")
903
+ right = resp.index(")")
904
+ if left == nil or right == nil
905
+ raise FTPProtoError, resp
906
+ end
907
+ numbers = resp[left + 1 .. right - 1].split(",")
908
+ if numbers[0] == "4"
909
+ if numbers.length != 9 || numbers[1] != "4" || numbers[2 + 4] != "2"
910
+ raise FTPProtoError, resp
911
+ end
912
+ host = numbers[2, 4].join(".")
913
+ port = (numbers[7].to_i << 8) + numbers[8].to_i
914
+ elsif numbers[0] == "6"
915
+ if numbers.length != 21 || numbers[1] != "16" || numbers[2 + 16] != "2"
916
+ raise FTPProtoError, resp
917
+ end
918
+ v6 = ["", "", "", "", "", "", "", ""]
919
+ for i in 0 .. 7
920
+ v6[i] = sprintf("%02x%02x", numbers[(i * 2) + 2].to_i,
921
+ numbers[(i * 2) + 3].to_i)
922
+ end
923
+ host = v6[0, 8].join(":")
924
+ port = (numbers[19].to_i << 8) + numbers[20].to_i
925
+ end
926
+ return host, port
927
+ end
928
+ private :parse228
929
+
930
+ def parse229(resp)
931
+ if resp[0, 3] != "229"
932
+ raise FTPReplyError, resp
933
+ end
934
+ left = resp.index("(")
935
+ right = resp.index(")")
936
+ if left == nil or right == nil
937
+ raise FTPProtoError, resp
938
+ end
939
+ numbers = resp[left + 1 .. right - 1].split(resp[left + 1, 1])
940
+ if numbers.length != 4
941
+ raise FTPProtoError, resp
942
+ end
943
+ port = numbers[3].to_i
944
+ host = (@sock.peeraddr())[3]
945
+ return host, port
946
+ end
947
+ private :parse229
948
+
949
+ def parse257(resp)
950
+ if resp[0, 3] != "257"
951
+ raise FTPReplyError, resp
952
+ end
953
+ if resp[3, 2] != ' "'
954
+ return ""
955
+ end
956
+ dirname = ""
957
+ i = 5
958
+ n = resp.length
959
+ while i < n
960
+ c = resp[i, 1]
961
+ i = i + 1
962
+ if c == '"'
963
+ if i > n or resp[i, 1] != '"'
964
+ break
965
+ end
966
+ i = i + 1
967
+ end
968
+ dirname = dirname + c
969
+ end
970
+ return dirname
971
+ end
972
+ private :parse257
973
+ end
974
+
975
+ end
976
+
977
+
978
+ # Documentation comments:
979
+ # - sourced from pickaxe and nutshell, with improvements (hopefully)
980
+ # - three methods should be private (search WRITEME)
981
+ # - two methods need more information (search TODO)