rio 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (320) hide show
  1. data/COPYING +1 -0
  2. data/README +11 -9
  3. data/Rakefile +1 -1
  4. data/doc/#RIOIS# +216 -0
  5. data/doc/ANNOUNCE +22 -16
  6. data/doc/RELEASE_NOTES +14 -7
  7. data/lib/rio/doc/EXAMPLES.rb +2 -2
  8. data/lib/rio/doc/INTRO.rb +0 -2
  9. data/lib/rio/doc/OPTIONAL.rb +1 -1
  10. data/lib/rio/doc/SYNOPSIS.rb +1 -1
  11. data/lib/rio/factory.rb +1 -0
  12. data/lib/rio/ftp/fs.rb +2 -1
  13. data/lib/rio/ftp/ftpfile.rb +20 -20
  14. data/lib/rio/if/grande.rb +16 -10
  15. data/lib/rio/if/test.rb +1 -1
  16. data/lib/rio/ops/construct.rb +13 -12
  17. data/lib/rio/ops/dir.rb +2 -1
  18. data/lib/rio/rl/fs2url.rb +2 -2
  19. data/lib/rio/rl/path.rb +1 -0
  20. data/lib/rio/rl/uri.rb +4 -0
  21. data/lib/rio/rl/withpath.rb +1 -0
  22. data/lib/rio/scheme/ftp.rb +46 -3
  23. data/lib/rio/uri/file.rb +16 -6
  24. data/lib/rio/version.rb +1 -1
  25. data/test/ftp/anon_copy_data.rb +36 -0
  26. data/test/ftp/testdef.rb +5 -4
  27. data/test/http/all.rb +1 -0
  28. data/test/http/copy-from-http.rb +2 -1
  29. data/test/http/uri-meta.rb +72 -0
  30. data/test/lib/temp_server.rb +3 -1
  31. data/test/runalltests.rb +2 -2
  32. data/test/runftptests.rb +1 -1
  33. data/test/runhttp.rb +1 -2
  34. metadata +5 -312
  35. data/doc/rdoc/classes/Kernel.html +0 -133
  36. data/doc/rdoc/classes/Kernel.src/M000233.html +0 -18
  37. data/doc/rdoc/classes/RIO.html +0 -625
  38. data/doc/rdoc/classes/RIO.src/M000001.html +0 -18
  39. data/doc/rdoc/classes/RIO.src/M000002.html +0 -18
  40. data/doc/rdoc/classes/RIO.src/M000003.html +0 -18
  41. data/doc/rdoc/classes/RIO/Doc.html +0 -148
  42. data/doc/rdoc/classes/RIO/Doc/EXAMPLES.html +0 -432
  43. data/doc/rdoc/classes/RIO/Doc/HOWTO.html +0 -1075
  44. data/doc/rdoc/classes/RIO/Doc/INDEX.html +0 -368
  45. data/doc/rdoc/classes/RIO/Doc/INTRO.html +0 -1533
  46. data/doc/rdoc/classes/RIO/Doc/OPTIONAL.html +0 -221
  47. data/doc/rdoc/classes/RIO/Doc/SYNOPSIS.html +0 -337
  48. data/doc/rdoc/classes/RIO/IF.html +0 -165
  49. data/doc/rdoc/classes/RIO/IF/CSV.html +0 -203
  50. data/doc/rdoc/classes/RIO/IF/CSV.src/M000116.html +0 -19
  51. data/doc/rdoc/classes/RIO/IF/CSV.src/M000117.html +0 -16
  52. data/doc/rdoc/classes/RIO/IF/CSV.src/M000118.html +0 -16
  53. data/doc/rdoc/classes/RIO/IF/Dir.html +0 -343
  54. data/doc/rdoc/classes/RIO/IF/Dir.src/M000045.html +0 -16
  55. data/doc/rdoc/classes/RIO/IF/Dir.src/M000046.html +0 -16
  56. data/doc/rdoc/classes/RIO/IF/Dir.src/M000047.html +0 -16
  57. data/doc/rdoc/classes/RIO/IF/Dir.src/M000048.html +0 -16
  58. data/doc/rdoc/classes/RIO/IF/Dir.src/M000049.html +0 -16
  59. data/doc/rdoc/classes/RIO/IF/Dir.src/M000050.html +0 -16
  60. data/doc/rdoc/classes/RIO/IF/Dir.src/M000051.html +0 -16
  61. data/doc/rdoc/classes/RIO/IF/File.html +0 -223
  62. data/doc/rdoc/classes/RIO/IF/File.src/M000212.html +0 -16
  63. data/doc/rdoc/classes/RIO/IF/File.src/M000213.html +0 -16
  64. data/doc/rdoc/classes/RIO/IF/File.src/M000214.html +0 -16
  65. data/doc/rdoc/classes/RIO/IF/File.src/M000215.html +0 -16
  66. data/doc/rdoc/classes/RIO/IF/FileOrDir.html +0 -572
  67. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000155.html +0 -16
  68. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000156.html +0 -16
  69. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000157.html +0 -16
  70. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000158.html +0 -16
  71. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000159.html +0 -16
  72. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000160.html +0 -16
  73. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000161.html +0 -16
  74. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000162.html +0 -16
  75. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000163.html +0 -16
  76. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000164.html +0 -16
  77. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000165.html +0 -16
  78. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000166.html +0 -16
  79. data/doc/rdoc/classes/RIO/IF/Grande.html +0 -1349
  80. data/doc/rdoc/classes/RIO/IF/Grande.src/M000088.html +0 -16
  81. data/doc/rdoc/classes/RIO/IF/Grande.src/M000089.html +0 -16
  82. data/doc/rdoc/classes/RIO/IF/Grande.src/M000090.html +0 -16
  83. data/doc/rdoc/classes/RIO/IF/Grande.src/M000091.html +0 -16
  84. data/doc/rdoc/classes/RIO/IF/Grande.src/M000092.html +0 -16
  85. data/doc/rdoc/classes/RIO/IF/Grande.src/M000093.html +0 -21
  86. data/doc/rdoc/classes/RIO/IF/Grande.src/M000094.html +0 -16
  87. data/doc/rdoc/classes/RIO/IF/Grande.src/M000095.html +0 -16
  88. data/doc/rdoc/classes/RIO/IF/Grande.src/M000096.html +0 -16
  89. data/doc/rdoc/classes/RIO/IF/Grande.src/M000097.html +0 -16
  90. data/doc/rdoc/classes/RIO/IF/Grande.src/M000098.html +0 -16
  91. data/doc/rdoc/classes/RIO/IF/Grande.src/M000099.html +0 -16
  92. data/doc/rdoc/classes/RIO/IF/Grande.src/M000100.html +0 -21
  93. data/doc/rdoc/classes/RIO/IF/Grande.src/M000101.html +0 -16
  94. data/doc/rdoc/classes/RIO/IF/Grande.src/M000102.html +0 -16
  95. data/doc/rdoc/classes/RIO/IF/Grande.src/M000103.html +0 -16
  96. data/doc/rdoc/classes/RIO/IF/Grande.src/M000104.html +0 -16
  97. data/doc/rdoc/classes/RIO/IF/Grande.src/M000105.html +0 -16
  98. data/doc/rdoc/classes/RIO/IF/GrandeEntry.html +0 -810
  99. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000106.html +0 -16
  100. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000107.html +0 -16
  101. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000108.html +0 -16
  102. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000109.html +0 -16
  103. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000110.html +0 -16
  104. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000111.html +0 -16
  105. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000112.html +0 -16
  106. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000113.html +0 -16
  107. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000114.html +0 -16
  108. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000115.html +0 -16
  109. data/doc/rdoc/classes/RIO/IF/GrandeStream.html +0 -1513
  110. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000052.html +0 -16
  111. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000053.html +0 -16
  112. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000054.html +0 -16
  113. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000055.html +0 -16
  114. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000056.html +0 -16
  115. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000057.html +0 -16
  116. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000058.html +0 -16
  117. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000059.html +0 -16
  118. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000060.html +0 -16
  119. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000061.html +0 -16
  120. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000062.html +0 -16
  121. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000063.html +0 -16
  122. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000064.html +0 -16
  123. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000065.html +0 -16
  124. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000066.html +0 -16
  125. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000067.html +0 -16
  126. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000068.html +0 -19
  127. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000069.html +0 -16
  128. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000070.html +0 -16
  129. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000071.html +0 -16
  130. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000072.html +0 -16
  131. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000073.html +0 -16
  132. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000074.html +0 -16
  133. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000075.html +0 -16
  134. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000076.html +0 -16
  135. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000077.html +0 -16
  136. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000078.html +0 -16
  137. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000079.html +0 -16
  138. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000080.html +0 -16
  139. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000081.html +0 -16
  140. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000082.html +0 -16
  141. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000083.html +0 -16
  142. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000084.html +0 -16
  143. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000085.html +0 -16
  144. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000086.html +0 -16
  145. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000087.html +0 -16
  146. data/doc/rdoc/classes/RIO/IF/Path.html +0 -999
  147. data/doc/rdoc/classes/RIO/IF/Path.src/M000180.html +0 -16
  148. data/doc/rdoc/classes/RIO/IF/Path.src/M000181.html +0 -16
  149. data/doc/rdoc/classes/RIO/IF/Path.src/M000182.html +0 -16
  150. data/doc/rdoc/classes/RIO/IF/Path.src/M000183.html +0 -16
  151. data/doc/rdoc/classes/RIO/IF/Path.src/M000184.html +0 -16
  152. data/doc/rdoc/classes/RIO/IF/Path.src/M000185.html +0 -16
  153. data/doc/rdoc/classes/RIO/IF/Path.src/M000186.html +0 -16
  154. data/doc/rdoc/classes/RIO/IF/Path.src/M000187.html +0 -16
  155. data/doc/rdoc/classes/RIO/IF/Path.src/M000188.html +0 -16
  156. data/doc/rdoc/classes/RIO/IF/Path.src/M000189.html +0 -16
  157. data/doc/rdoc/classes/RIO/IF/Path.src/M000190.html +0 -16
  158. data/doc/rdoc/classes/RIO/IF/Path.src/M000191.html +0 -16
  159. data/doc/rdoc/classes/RIO/IF/Path.src/M000192.html +0 -16
  160. data/doc/rdoc/classes/RIO/IF/Path.src/M000193.html +0 -16
  161. data/doc/rdoc/classes/RIO/IF/Path.src/M000194.html +0 -16
  162. data/doc/rdoc/classes/RIO/IF/Path.src/M000195.html +0 -16
  163. data/doc/rdoc/classes/RIO/IF/Path.src/M000196.html +0 -16
  164. data/doc/rdoc/classes/RIO/IF/Path.src/M000197.html +0 -16
  165. data/doc/rdoc/classes/RIO/IF/Path.src/M000198.html +0 -16
  166. data/doc/rdoc/classes/RIO/IF/Path.src/M000199.html +0 -16
  167. data/doc/rdoc/classes/RIO/IF/Path.src/M000200.html +0 -16
  168. data/doc/rdoc/classes/RIO/IF/Path.src/M000201.html +0 -16
  169. data/doc/rdoc/classes/RIO/IF/Path.src/M000202.html +0 -18
  170. data/doc/rdoc/classes/RIO/IF/Path.src/M000203.html +0 -16
  171. data/doc/rdoc/classes/RIO/IF/Path.src/M000204.html +0 -16
  172. data/doc/rdoc/classes/RIO/IF/Path.src/M000205.html +0 -16
  173. data/doc/rdoc/classes/RIO/IF/Path.src/M000206.html +0 -16
  174. data/doc/rdoc/classes/RIO/IF/Path.src/M000207.html +0 -16
  175. data/doc/rdoc/classes/RIO/IF/Path.src/M000208.html +0 -16
  176. data/doc/rdoc/classes/RIO/IF/Path.src/M000209.html +0 -16
  177. data/doc/rdoc/classes/RIO/IF/Path.src/M000210.html +0 -16
  178. data/doc/rdoc/classes/RIO/IF/Path.src/M000211.html +0 -16
  179. data/doc/rdoc/classes/RIO/IF/RubyIO.html +0 -1414
  180. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000004.html +0 -16
  181. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000005.html +0 -16
  182. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000006.html +0 -16
  183. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000007.html +0 -16
  184. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000008.html +0 -16
  185. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000009.html +0 -16
  186. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000010.html +0 -16
  187. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000011.html +0 -16
  188. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000012.html +0 -16
  189. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000013.html +0 -16
  190. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000014.html +0 -16
  191. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000015.html +0 -16
  192. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000016.html +0 -16
  193. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000017.html +0 -16
  194. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000018.html +0 -16
  195. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000019.html +0 -16
  196. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000020.html +0 -16
  197. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000021.html +0 -16
  198. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000022.html +0 -16
  199. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000023.html +0 -16
  200. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000024.html +0 -16
  201. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000025.html +0 -16
  202. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000026.html +0 -16
  203. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000027.html +0 -16
  204. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000028.html +0 -16
  205. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000029.html +0 -16
  206. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000030.html +0 -16
  207. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000031.html +0 -16
  208. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000032.html +0 -16
  209. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000033.html +0 -16
  210. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000034.html +0 -16
  211. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000035.html +0 -16
  212. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000036.html +0 -16
  213. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000037.html +0 -16
  214. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000038.html +0 -16
  215. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000039.html +0 -16
  216. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000040.html +0 -16
  217. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000041.html +0 -16
  218. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000042.html +0 -16
  219. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000043.html +0 -16
  220. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000044.html +0 -16
  221. data/doc/rdoc/classes/RIO/IF/String.html +0 -203
  222. data/doc/rdoc/classes/RIO/IF/String.src/M000216.html +0 -16
  223. data/doc/rdoc/classes/RIO/IF/String.src/M000217.html +0 -16
  224. data/doc/rdoc/classes/RIO/IF/String.src/M000218.html +0 -16
  225. data/doc/rdoc/classes/RIO/IF/Test.html +0 -990
  226. data/doc/rdoc/classes/RIO/IF/Test.src/M000119.html +0 -16
  227. data/doc/rdoc/classes/RIO/IF/Test.src/M000120.html +0 -16
  228. data/doc/rdoc/classes/RIO/IF/Test.src/M000121.html +0 -16
  229. data/doc/rdoc/classes/RIO/IF/Test.src/M000122.html +0 -16
  230. data/doc/rdoc/classes/RIO/IF/Test.src/M000123.html +0 -16
  231. data/doc/rdoc/classes/RIO/IF/Test.src/M000124.html +0 -16
  232. data/doc/rdoc/classes/RIO/IF/Test.src/M000125.html +0 -16
  233. data/doc/rdoc/classes/RIO/IF/Test.src/M000126.html +0 -16
  234. data/doc/rdoc/classes/RIO/IF/Test.src/M000127.html +0 -16
  235. data/doc/rdoc/classes/RIO/IF/Test.src/M000128.html +0 -16
  236. data/doc/rdoc/classes/RIO/IF/Test.src/M000129.html +0 -16
  237. data/doc/rdoc/classes/RIO/IF/Test.src/M000130.html +0 -16
  238. data/doc/rdoc/classes/RIO/IF/Test.src/M000131.html +0 -16
  239. data/doc/rdoc/classes/RIO/IF/Test.src/M000132.html +0 -16
  240. data/doc/rdoc/classes/RIO/IF/Test.src/M000133.html +0 -16
  241. data/doc/rdoc/classes/RIO/IF/Test.src/M000134.html +0 -16
  242. data/doc/rdoc/classes/RIO/IF/Test.src/M000135.html +0 -16
  243. data/doc/rdoc/classes/RIO/IF/Test.src/M000136.html +0 -16
  244. data/doc/rdoc/classes/RIO/IF/Test.src/M000137.html +0 -16
  245. data/doc/rdoc/classes/RIO/IF/Test.src/M000138.html +0 -16
  246. data/doc/rdoc/classes/RIO/IF/Test.src/M000139.html +0 -16
  247. data/doc/rdoc/classes/RIO/IF/Test.src/M000140.html +0 -16
  248. data/doc/rdoc/classes/RIO/IF/Test.src/M000141.html +0 -16
  249. data/doc/rdoc/classes/RIO/IF/Test.src/M000142.html +0 -16
  250. data/doc/rdoc/classes/RIO/IF/Test.src/M000143.html +0 -16
  251. data/doc/rdoc/classes/RIO/IF/Test.src/M000144.html +0 -16
  252. data/doc/rdoc/classes/RIO/IF/Test.src/M000145.html +0 -16
  253. data/doc/rdoc/classes/RIO/IF/Test.src/M000146.html +0 -16
  254. data/doc/rdoc/classes/RIO/IF/Test.src/M000147.html +0 -16
  255. data/doc/rdoc/classes/RIO/IF/Test.src/M000148.html +0 -16
  256. data/doc/rdoc/classes/RIO/IF/Test.src/M000149.html +0 -16
  257. data/doc/rdoc/classes/RIO/IF/Test.src/M000150.html +0 -16
  258. data/doc/rdoc/classes/RIO/IF/Test.src/M000151.html +0 -16
  259. data/doc/rdoc/classes/RIO/IF/Test.src/M000152.html +0 -16
  260. data/doc/rdoc/classes/RIO/IF/Test.src/M000153.html +0 -16
  261. data/doc/rdoc/classes/RIO/IF/Test.src/M000154.html +0 -16
  262. data/doc/rdoc/classes/RIO/IF/YAML.html +0 -517
  263. data/doc/rdoc/classes/RIO/IF/YAML.src/M000167.html +0 -19
  264. data/doc/rdoc/classes/RIO/IF/YAML.src/M000168.html +0 -16
  265. data/doc/rdoc/classes/RIO/IF/YAML.src/M000169.html +0 -16
  266. data/doc/rdoc/classes/RIO/IF/YAML.src/M000170.html +0 -16
  267. data/doc/rdoc/classes/RIO/IF/YAML.src/M000171.html +0 -16
  268. data/doc/rdoc/classes/RIO/IF/YAML.src/M000172.html +0 -16
  269. data/doc/rdoc/classes/RIO/IF/YAML.src/M000173.html +0 -16
  270. data/doc/rdoc/classes/RIO/IF/YAML.src/M000174.html +0 -16
  271. data/doc/rdoc/classes/RIO/IF/YAML.src/M000175.html +0 -16
  272. data/doc/rdoc/classes/RIO/IF/YAML.src/M000176.html +0 -16
  273. data/doc/rdoc/classes/RIO/IF/YAML.src/M000177.html +0 -16
  274. data/doc/rdoc/classes/RIO/IF/YAML.src/M000178.html +0 -16
  275. data/doc/rdoc/classes/RIO/IF/YAML.src/M000179.html +0 -16
  276. data/doc/rdoc/classes/RIO/Rio.html +0 -508
  277. data/doc/rdoc/classes/RIO/Rio.src/M000219.html +0 -18
  278. data/doc/rdoc/classes/RIO/Rio.src/M000220.html +0 -20
  279. data/doc/rdoc/classes/RIO/Rio.src/M000221.html +0 -27
  280. data/doc/rdoc/classes/RIO/Rio.src/M000222.html +0 -16
  281. data/doc/rdoc/classes/RIO/Rio.src/M000224.html +0 -19
  282. data/doc/rdoc/classes/RIO/Rio.src/M000225.html +0 -20
  283. data/doc/rdoc/classes/RIO/Rio.src/M000226.html +0 -16
  284. data/doc/rdoc/classes/RIO/Rio.src/M000227.html +0 -16
  285. data/doc/rdoc/classes/RIO/Rio.src/M000228.html +0 -16
  286. data/doc/rdoc/classes/RIO/Rio.src/M000229.html +0 -16
  287. data/doc/rdoc/classes/RIO/Rio.src/M000230.html +0 -16
  288. data/doc/rdoc/classes/RIO/Rio.src/M000231.html +0 -16
  289. data/doc/rdoc/classes/RIO/Rio.src/M000232.html +0 -16
  290. data/doc/rdoc/created.rid +0 -1
  291. data/doc/rdoc/files/README.html +0 -229
  292. data/doc/rdoc/files/lib/rio/constructor_rb.html +0 -141
  293. data/doc/rdoc/files/lib/rio/doc/EXAMPLES_rb.html +0 -134
  294. data/doc/rdoc/files/lib/rio/doc/HOWTO_rb.html +0 -134
  295. data/doc/rdoc/files/lib/rio/doc/INDEX_rb.html +0 -134
  296. data/doc/rdoc/files/lib/rio/doc/INTRO_rb.html +0 -134
  297. data/doc/rdoc/files/lib/rio/doc/OPTIONAL_rb.html +0 -134
  298. data/doc/rdoc/files/lib/rio/doc/SYNOPSIS_rb.html +0 -134
  299. data/doc/rdoc/files/lib/rio/if/basic_rb.html +0 -134
  300. data/doc/rdoc/files/lib/rio/if/csv_rb.html +0 -134
  301. data/doc/rdoc/files/lib/rio/if/dir_rb.html +0 -134
  302. data/doc/rdoc/files/lib/rio/if/file_rb.html +0 -134
  303. data/doc/rdoc/files/lib/rio/if/fileordir_rb.html +0 -134
  304. data/doc/rdoc/files/lib/rio/if/grande_entry_rb.html +0 -134
  305. data/doc/rdoc/files/lib/rio/if/grande_rb.html +0 -141
  306. data/doc/rdoc/files/lib/rio/if/grande_stream_rb.html +0 -134
  307. data/doc/rdoc/files/lib/rio/if/internal_rb.html +0 -134
  308. data/doc/rdoc/files/lib/rio/if/path_rb.html +0 -134
  309. data/doc/rdoc/files/lib/rio/if/rubyio_rb.html +0 -134
  310. data/doc/rdoc/files/lib/rio/if/string_rb.html +0 -134
  311. data/doc/rdoc/files/lib/rio/if/temp_rb.html +0 -134
  312. data/doc/rdoc/files/lib/rio/if/test_rb.html +0 -134
  313. data/doc/rdoc/files/lib/rio/if/yaml_rb.html +0 -134
  314. data/doc/rdoc/files/lib/rio/kernel_rb.html +0 -142
  315. data/doc/rdoc/files/lib/rio_rb.html +0 -153
  316. data/doc/rdoc/fr_class_index.html +0 -49
  317. data/doc/rdoc/fr_file_index.html +0 -51
  318. data/doc/rdoc/fr_method_index.html +0 -259
  319. data/doc/rdoc/index.html +0 -30
  320. data/doc/rdoc/rdoc-style.css +0 -428
@@ -79,7 +79,7 @@ module RIO
79
79
  wduri.to_s
80
80
  end
81
81
  def remote_path(url)
82
- self.remote_root+URI(url).path
82
+ self.remote_root+RIO::RL.url2fs(URI(url).path)
83
83
  end
84
84
  def chdir(url,&block)
85
85
  if block_given?
@@ -119,6 +119,7 @@ module RIO
119
119
 
120
120
  def get_ftype(url)
121
121
  pth = remote_path(url)
122
+ #p url,pth
122
123
  ftype = nil
123
124
  begin
124
125
  conn.mdtm(pth)
@@ -1,20 +1,20 @@
1
-
2
- require 'tempfile'
3
- require 'delegate'
4
- module RIO
5
- module FTP
6
- class FTPFile < DelegateClass( ::Tempfile )
7
- def initialize(remote_path, netftp)
8
- @remote_path = remote_path
9
- @netftp = netftp
10
- @ftpfile = ::Tempfile.new('ftpfile')
11
- super(@ftpfile)
12
- end
13
- def close()
14
- super
15
- @netftp.put(path(),@remote_path)
16
- end
17
-
18
- end
19
- end
20
- end
1
+
2
+ require 'tempfile'
3
+ require 'delegate'
4
+ module RIO
5
+ module FTP
6
+ class FTPFile < DelegateClass( ::Tempfile )
7
+ def initialize(remote_path, netftp)
8
+ @remote_path = remote_path
9
+ @netftp = netftp
10
+ @ftpfile = ::Tempfile.new('ftpfile')
11
+ super(@ftpfile)
12
+ end
13
+ def close()
14
+ super
15
+ @netftp.put(path(),@remote_path)
16
+ end
17
+
18
+ end
19
+ end
20
+ end
@@ -115,7 +115,8 @@ module RIO
115
115
  #
116
116
  # Arguments may consist of strings (treated as globs) or regular expressions.
117
117
  # An empty argument list selects all entries
118
- # See ::Dir#glob and ::File::fnmatch? for more in information on _globs_. Be warned that using the '**' glob
118
+ # See ::Dir#glob and ::File::fnmatch? for more in information on _globs_.
119
+ # Be warned that using the '**' glob
119
120
  # recurses into directories independently of IF::GrandeEntry#all and using both is unsupported.
120
121
  #
121
122
  # ario = rio('adir')
@@ -143,7 +144,8 @@ module RIO
143
144
  # IF::GrandeStream#records, and IF::GrandeStream#rows
144
145
  #
145
146
  # Using IF::GrandeStream#lines and related methods with a Rio referencing a directory
146
- # imples IF::GrandeEntry#files and will cause an array of the lines or bytes in the files to be returned. As above,
147
+ # imples IF::GrandeEntry#files and will cause an array of the lines or bytes in the
148
+ # files to be returned. As above,
147
149
  # the arguments to the subscript operator will be applied to the closest.
148
150
  # rio('adir').lines[] # array of all lines in the files in 'adir'
149
151
  # rio('adir').files.lines[] # same thing
@@ -219,7 +221,8 @@ module RIO
219
221
  # IF::Grande#each
220
222
  #
221
223
  # For Rios that refer to files, the item passed to the block is a String containing
222
- # the line or block as selected by IF::GrandeStream#lines, or IF::GrandeStream#bytes. +lines+ is the default.
224
+ # the line or block as selected by IF::GrandeStream#lines, or IF::GrandeStream#bytes.
225
+ # +lines+ is the default.
223
226
  # rio('afile').lines.each { |line| ...}
224
227
  #
225
228
  # The block passed to +each+ will also accept an optional second parameter which will contain
@@ -380,7 +383,7 @@ module RIO
380
383
  # rio('src.txt.gz').gzip > rio('dst.txt')
381
384
  #
382
385
  # Copying to an array
383
- # rio('afile') > ary # each line of the file becomes and element of the ary
386
+ # rio('afile') > ary # each line of the file becomes an element of the ary
384
387
  # rio('afile').chomp > ary # same thing with lines chomped
385
388
  # rio('afile.gz').gzip.chomp > ary # same thing from a gzipped file
386
389
  #
@@ -406,7 +409,7 @@ module RIO
406
409
  #
407
410
  # Copy the first and 8th through 10th columns of the first ten rows of a gzipped csv
408
411
  # file on a web site into a local gzipped csv file that uses semi-colons as separators
409
- # rio('http://domain/file.csv.gz').columns(0,7..9).gzip.csv[0..9] > rio('localfile.csv.gz').csv(';').gzip
412
+ # rio('http://host/file.csv.gz').columns(0,7..9).gzip.csv[0..9] > rio('localfile.csv.gz').csv(';').gzip
410
413
  #
411
414
  # See also IF::Grande#>>, IF::Grande#|
412
415
  #
@@ -521,10 +524,13 @@ module RIO
521
524
  # That is to say, it iterates through its argument, calling the copy-from operator
522
525
  # again for each element. While it is not implemented like this, and the above code would
523
526
  # not give the same results, This generalized description is convenient.
527
+ #
524
528
  # For example the code:
525
- # dst < src
526
- # # is like
527
- # src.each { |line| dst << line }
529
+ #
530
+ # destination < source
531
+ # # is like
532
+ # source.each { |element| destination << element }
533
+ #
528
534
  # for any of the following definitions of src and dst
529
535
  # * copying files
530
536
  # src = rio('afile')
@@ -679,11 +685,11 @@ module RIO
679
685
  # which will put the parts back together again.
680
686
  #
681
687
  # ary = rio('a/b/c').split #=> [rio('a'),rio('b'),rio('c')]
682
- # ary.to_rio #=> rio('a/b/c')
688
+ # ary.to_rio #=> rio('a/b/c')
683
689
  #
684
690
  # ary = rio('a/b/c').split #=> [rio('a'),rio('b'),rio('c')]
685
691
  # ary[1] = rio('d')
686
- # ary.to_rio #=> rio('a/d/c')
692
+ # ary.to_rio #=> rio('a/d/c')
687
693
  #
688
694
  # See also IF::Path#join, IF::Path#/, IF::Path#splitpath
689
695
  #
@@ -236,7 +236,7 @@ module RIO
236
236
  def zero?(*args) target.zero?(*args) end
237
237
 
238
238
 
239
- # Returns true if the rio represents and absolute path or URI. Alias for IF::Test#absolute?
239
+ # Returns true if the rio represents an absolute path or URI. Alias for IF::Test#absolute?
240
240
  #
241
241
  # rio('/tmp').abs? # >> true
242
242
  # rio('.ssh').abs? # >> false
@@ -35,18 +35,19 @@
35
35
 
36
36
  module RIO
37
37
  CONSTRUCTOR_SYMS = [
38
- :strio,
39
- :stdio,
40
- :stderr,
41
- :temp,
42
- :tempfile,
43
- :tempdir,
44
- :tcp,
45
- :cmdio,
46
- :cmdpipe,
47
- :sysio,
48
- :fd,
49
- ]
38
+ :strio,
39
+ :stdio,
40
+ :stderr,
41
+ :temp,
42
+ :tempfile,
43
+ :tempdir,
44
+ :tcp,
45
+ :cmdio,
46
+ :cmdpipe,
47
+ :sysio,
48
+ :fd,
49
+ :ftp,
50
+ ]
50
51
  end
51
52
 
52
53
  module RIO
@@ -230,7 +230,7 @@ module RIO
230
230
  self.skipentries(*args)
231
231
  end
232
232
  def ent_to_rio_(ent,indir)
233
- #p "ent_to_rio: #{ent.inspect},#{ent.fs.class} indir=#{indir}"
233
+ #p "ent_to_rio: ent=#{ent.inspect} indir=#{indir}"
234
234
  if ent.kind_of?(RIO::Rio)
235
235
  oldpath = ent.to_s
236
236
  ent.rl.urlpath = indir.to_s
@@ -238,6 +238,7 @@ module RIO
238
238
  ent.cx = self.cx.bequeath(ent.cx)
239
239
  ent
240
240
  else
241
+ # KIT: should this be RL.fs2url(ent) ???
241
242
  if indir
242
243
  new_rio_cx(indir.rl,ent)
243
244
  else
@@ -52,9 +52,9 @@ module RIO
52
52
  def fs2urls(*args)
53
53
  args.map{ |pth| fs2url(pth) }
54
54
  end
55
- def fs2url(pth)
55
+ def fs2url(pth, esc=ESCAPE)
56
56
  #pth.sub!(/^[a-zA-Z]:/,'')
57
- pth = URI.escape(pth,ESCAPE)
57
+ pth = URI.escape(pth,esc)
58
58
  pth = '/' + pth if pth =~ /^[a-zA-Z]:/
59
59
  pth
60
60
  # (Local::SEPARATOR == '/' ? pth : pth.gsub(Local::SEPARATOR,%r|/|))
@@ -55,6 +55,7 @@ module RIO
55
55
  else
56
56
  raise(ArgumentError,"'#{arg0}'[#{arg0.class}] can not be used to create a Rio")
57
57
  end
58
+ #puts "path.rb arg0_info_: vuri=#{vuri}"
58
59
  [vuri,vbase,vfs]
59
60
  end
60
61
  def build_arg0_(path_str)
@@ -75,14 +75,18 @@ module RIO
75
75
  else
76
76
  raise(ArgumentError,"'#{arg0}'[#{arg0.class}] can not be used to create a Rio")
77
77
  end
78
+ #puts "uri.rb arg0_info_: vuri=#{vuri}"
78
79
  [vuri,vbase,vfs]
79
80
  end
80
81
  def init_from_args_(arg0,*args)
81
82
  #p "init_from_args_(#{arg0.inspect})"
82
83
  #p callstr('init_from_args_',arg0.inspect,args)
83
84
  vuri,vbase,vfs = self.arg0_info_(arg0,*args)
85
+ #p vuri,vbase
84
86
  #p vuri
85
87
  @uri = vuri
88
+ #p 'HERE'
89
+ #p vuri
86
90
  #p args unless args.nil? || args.empty?
87
91
  self.join(*args)
88
92
  @base = vbase unless @base or vbase.nil?
@@ -278,6 +278,7 @@ module RIO
278
278
  def _build(*args) RIO::RL::Builder.build(*args) end
279
279
 
280
280
  def uri_from_string_(str)
281
+ #p "uri_from_string(#{str})"
281
282
  case str
282
283
  when %r%^file://(#{HOST})?(/.*)?$% then ::URI.parse(str)
283
284
  when %r/^[a-zA-Z]:/ then
@@ -49,13 +49,56 @@ module RIO
49
49
  require 'rio/rl/uri'
50
50
 
51
51
  class RL < RIO::RL::URIBase
52
- def initialize(*args)
53
- super
52
+ def initialize(arg0,*args)
53
+ #p callstr('initialize',arg0,*args)
54
+ super(*_sup_args(arg0,*args))
54
55
  @ftype = nil
55
56
  @names = nil
56
57
  end
57
- def self.splitrl(s)
58
+ def _sup_args(arg0,*args)
59
+ if arg0 == 'ftp:'
60
+ hn = args.shift || 'localhost'
61
+ us = args.shift
62
+ pw = args.shift
63
+ pt = args.shift || ''
64
+ ph = args.shift || '/'
65
+ tc = args.shift || ''
66
+ u = URI::FTP.new2(us,pw,hn,pt,ph,tc)
67
+ return [u]
68
+ else
69
+ return [arg0] + args
70
+ end
71
+ end
72
+ # def arg0_info_(arg0,*args)
73
+ # #p "arg0_info_(#{arg0.inspect},#{args.inspect})"
74
+ # vuri,vbase,vfs = nil,nil,nil
75
+ # case arg0
76
+ # when RIO::Rio
77
+ # return _init_from_arg(arg0.rl)
78
+ # when RIO::RL::URIBase,RIO::FTP::RL
79
+ # vuri,vbase,vfs = arg0.uri,arg0.base,arg0.fs
80
+ # when ::URI
81
+ # vuri = arg0
82
+ # when ::String
83
+ # vuri = uri_from_string_(arg0) || ::URI.parse(arg0)
84
+ # else
85
+ # raise(ArgumentError,"'#{arg0}'[#{arg0.class}] can not be used to create a Rio")
86
+ # end
87
+ # [vuri,vbase,vfs]
88
+ # end
89
+ # def build_arg0_(path_str)
90
+ # path_str
91
+ # end
92
+ def join(*args)
93
+ return self if args.empty?
94
+ join_(args.map{ |arg| RIO::RL.fs2url(arg.to_s)})
95
+ end
96
+
97
+
98
+ def self.splitrl(s)
99
+ #p "splitrl(#{s})"
58
100
  sub,opq,whole = split_riorl(s)
101
+ #p sub,opq,whole
59
102
  [whole]
60
103
  end
61
104
  def openfs_
@@ -87,14 +87,24 @@ RFC 1738 Uniform Resource Locators (URL) December 1994
87
87
  module REGEXP
88
88
  module PATTERN
89
89
  DRIVE_SPEC = "[A-Za-z]:"
90
- ABS_FILE_PATH = "(?:/#{DRIVE_SPEC})?/#{PATH_SEGMENTS}"
90
+ FILE_ESCAPED = ESCAPED
91
+ FILE_UNRESERVED = "-_.!~*'()#{ALNUM}"
92
+ FILE_PCHAR = "(?:[#{FILE_UNRESERVED}:@?&=+$,]|#{FILE_ESCAPED})"
93
+ FILE_SEGMENT = "#{FILE_PCHAR}*(?:;#{PARAM})*"
94
+ FILE_PATH_SEGMENTS = "#{FILE_SEGMENT}(?:/#{FILE_SEGMENT})*"
95
+ FILE_ABS_PATH = "(?:/#{DRIVE_SPEC})?/#{FILE_PATH_SEGMENTS}"
96
+
97
+ FILE_REL_SEGMENT = "(?:[#{FILE_UNRESERVED};@?&=+$,]|#{FILE_ESCAPED})+"
98
+ FILE_REL_PATH = "#{FILE_REL_SEGMENT}(?:#{FILE_ABS_PATH})?"
99
+
100
+ #FILE_ABS_PATH = "(?:/#{DRIVE_SPEC})?/#{FILE_PATH_SEGMENTS}(?:\\?#{QUERY})?"
91
101
  end
92
102
  EMPTYHOST = Regexp.new("^$", false, 'N').freeze #"
93
- ABS_FILE_PATH = Regexp.new("^#{PATTERN::ABS_FILE_PATH}$", false, 'N').freeze
103
+ FILE_ABS_PATH = Regexp.new("^#{PATTERN::FILE_ABS_PATH}$", false, 'N').freeze
94
104
  end # module REGEXP
95
105
 
96
106
  class FILE < Generic
97
- #ABS_FILE_PATH = REGEXP::ABS_FILE_PATH
107
+ #FILE_ABS_PATH = REGEXP::FILE_ABS_PATH
98
108
  COMPONENT = [
99
109
  :scheme,
100
110
  :host,
@@ -111,18 +121,19 @@ RFC 1738 Uniform Resource Locators (URL) December 1994
111
121
  # raise if both hier and opaque are not nil, because:
112
122
  # absoluteURI = scheme ":" ( hier_part | opaque_part )
113
123
  # hier_part = ( net_path | abs_path ) [ "?" query ]
124
+ #p "URI::FILE self=#{self} v=#{v}"
114
125
  if v && @opaque
115
126
  raise InvalidURIError,
116
127
  "path conflicts with opaque"
117
128
  end
118
129
 
119
130
  if @scheme
120
- if v && v != '' && ABS_FILE_PATH !~ v
131
+ if v && v != '' && FILE_ABS_PATH !~ v
121
132
  raise InvalidComponentError,
122
133
  "bad component(expected absolute path component): #{v}"
123
134
  end
124
135
  else
125
- if v && v != '' && ABS_FILE_PATH !~ v && REL_PATH !~ v
136
+ if v && v != '' && FILE_ABS_PATH !~ v && FILE_REL_PATH !~ v
126
137
  raise InvalidComponentError,
127
138
  "bad component(expected relative path component): #{v}"
128
139
  end
@@ -133,7 +144,6 @@ RFC 1738 Uniform Resource Locators (URL) December 1994
133
144
  private :check_path
134
145
 
135
146
  def path=(v)
136
- #p "self=#{self} v=#{v}"
137
147
  check_path(v)
138
148
  set_path(v)
139
149
  v
@@ -38,7 +38,7 @@
38
38
  module RIO
39
39
  # :stopdoc:
40
40
  module Version #:nodoc: all
41
- VERSION = '0.4.0'
41
+ VERSION = '0.4.1'
42
42
 
43
43
  N = VERSION.split('.').freeze
44
44
  MAJOR = N[0].freeze
@@ -0,0 +1,36 @@
1
+ #!/usr/local/bin/ruby
2
+ if $0 == __FILE__
3
+ Dir.chdir File.dirname(__FILE__)+'/../'
4
+ $:.unshift File.expand_path('../lib/')
5
+ end
6
+
7
+ require 'rio'
8
+ require 'tc/testcase'
9
+ require 'open-uri'
10
+ require 'ftp/testdef'
11
+
12
+ class TC_ftp_copy_data < Test::RIO::TestCase
13
+ @@once = false
14
+ include Test::RIO::FTP::Const
15
+
16
+ def self.once
17
+ @@once = true
18
+ end
19
+ def setup
20
+ super
21
+ self.class.once unless @@once
22
+ FS_RWROOT.entries { |ent| ent.delete! }
23
+ end
24
+
25
+ def test_copy_string
26
+ exp = "a string\n"
27
+ ario = rio(FTP_RWROOT,'file0') < exp
28
+ assert_equal(exp,ario.contents)
29
+ end
30
+ def test_copy_array
31
+ exp = (0..1).map{|n| "Line #{n}\n"}
32
+ ario = rio(FTP_RWROOT,'file0') < exp
33
+ assert_equal(exp,ario[])
34
+ end
35
+ end
36
+
@@ -6,10 +6,11 @@ module Test
6
6
  module Const
7
7
  FTPUSER = 'ftp'
8
8
 
9
- #DRV = $mswin32 ? 'x:' : ''
10
- #FSROOT = rio("#{DRV}/srv/ftp")
11
- FSROOT = rio("../../srv/ftp")
12
- FTPHOST = '192.168.1.101'
9
+ DRV = $mswin32 ? 'x:' : ''
10
+ FSROOT = rio("#{DRV}/srv/ftp")
11
+ #FSROOT = rio("../../srv/ftp")
12
+ #FTPHOST = '192.168.1.101'
13
+ FTPHOST = 'riotest.hopto.org'
13
14
  #FTPHOST = 'localhost'
14
15
  FTPROOT = rio("ftp://#{FTPHOST}/")
15
16
 
@@ -1,3 +1,4 @@
1
1
  require 'tc/testcase'
2
2
 
3
3
  require 'http/copy-from-http'
4
+ require 'http/uri-meta'
@@ -46,9 +46,9 @@ class TC_copy_from_http < Test::RIO::TestCase
46
46
  ario = rio('out.txt').delete! < rio(GZURL).gzip
47
47
  ans = rio(ario).contents
48
48
  exp = rio(GZFILE).gzip.contents
49
-
50
49
  assert_equal(exp,ans)
51
50
  end
51
+
52
52
  def test_uri_rio_to_file
53
53
  ario = rio('outf').delete!.touch
54
54
  url = HWURL
@@ -58,6 +58,7 @@ class TC_copy_from_http < Test::RIO::TestCase
58
58
  assert_equal(exp,ario.contents)
59
59
  assert_equal(rio(HWFILE).contents,rio('outf').contents)
60
60
  end
61
+
61
62
  def test_uri_rio_to_file2
62
63
  ario = rio('outf2').delete!.touch
63
64
  url = HWURL