rio 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -1,1075 +0,0 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!DOCTYPE html
3
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
-
6
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
- <head>
8
- <title>Module: RIO::Doc::HOWTO</title>
9
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
- <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
- <meta name="revisit-after" content="5 days">
12
- <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
13
- <script type="text/javascript">
14
- // <![CDATA[
15
-
16
- function popupCode( url ) {
17
- window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
18
- }
19
-
20
- function toggleCode( id ) {
21
- if ( document.getElementById )
22
- elem = document.getElementById( id );
23
- else if ( document.all )
24
- elem = eval( "document.all." + id );
25
- else
26
- return false;
27
-
28
- elemStyle = elem.style;
29
-
30
- if ( elemStyle.display != "block" ) {
31
- elemStyle.display = "block"
32
- } else {
33
- elemStyle.display = "none"
34
- }
35
-
36
- return true;
37
- }
38
-
39
- // Make codeblocks hidden by default
40
- document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
41
-
42
- // ]]>
43
- </script>
44
-
45
- </head>
46
- <body>
47
-
48
-
49
-
50
- <div id="classHeader">
51
- <table class="header-table">
52
- <tr class="top-aligned-row">
53
- <td class="class-mod"><strong>Module</strong></td>
54
- <td class="class-name-in-header">RIO::Doc::HOWTO</td>
55
- <td rowspan="2" class="class-header-space-col"></td>
56
- <td rowspan="2">
57
- <a class="in-url" href="../../../files/lib/rio/doc/HOWTO_rb.html">
58
- lib/rio/doc/HOWTO.rb
59
- </a>
60
- &nbsp;&nbsp;
61
- </td>
62
- </tr>
63
-
64
- </table>
65
- </div>
66
- <!-- banner header -->
67
-
68
- <div id="bodyContent">
69
-
70
-
71
-
72
- <div id="contextContent">
73
-
74
- <div id="description">
75
- <h1>Rio - Ruby I/O Facilitator</h1>
76
- <p>
77
- Rio is a facade for most of the standard ruby classes that deal with I/O;
78
- providing a simple, intuitive, succinct interface to the functionality
79
- provided by IO, File, Dir, Pathname, FileUtils, Tempfile, StringIO, OpenURI
80
- and others. Rio also provides an application level interface which allows
81
- many common I/O idioms to be expressed succinctly.
82
- </p>
83
- <h2><a href="HOWTO.html">HOWTO</a>&#8230;</h2>
84
- <h3>Read a single file</h3>
85
- <pre>
86
- ario = rio('afile')
87
- string = &quot;&quot;
88
- array = []
89
- </pre>
90
- <ul>
91
- <li>Read a file into a string.
92
-
93
- <pre>
94
- # method 1
95
- string = ario.contents
96
- # method 2
97
- ario &gt; string
98
- </pre>
99
- </li>
100
- <li>Append a file onto a string.
101
-
102
- <pre>
103
- # method 1
104
- ario &gt;&gt; string
105
- # method 2
106
- string += ario.contents
107
- </pre>
108
- </li>
109
- <li>Read lines of a file into an array
110
-
111
- <pre>
112
- # method 1
113
- array = ario[]
114
- # method 2
115
- ario &gt; array
116
- # method 3
117
- array = ario.to_a
118
- # method 4
119
- array = ario.readlines
120
- </pre>
121
- </li>
122
- <li>Append lines of a file into an array
123
-
124
- <pre>
125
- # method 1
126
- ario &gt;&gt; array
127
- # method 2
128
- array += ario.lines[]
129
- </pre>
130
- </li>
131
- <li>Read the first 10 lines of a file into an array
132
-
133
- <pre>
134
- # method 1
135
- array = ario[0...10]
136
- # method 2
137
- array = ario.lines[0...10]
138
- # method 3
139
- ario.lines(0...10) &gt; array
140
- </pre>
141
- </li>
142
- <li>Read lines of a file into an array, with each line chomped
143
-
144
- <pre>
145
- # method 1
146
- array = ario.chomp[]
147
- # method 2
148
- array = ario.chomp.lines[]
149
- # method 3
150
- ario.chomp &gt; array
151
- </pre>
152
- </li>
153
- <li>Append the first 10 lines of a file into an array, with each line chomped
154
-
155
- <pre>
156
- # method 1
157
- array += ario.chomp[0...10]
158
- # method 2
159
- array += ario.chomp.lines[0...10]
160
- # method 3
161
- ario.chomp.lines(0...10) &gt;&gt; array
162
- </pre>
163
- </li>
164
- <li>Read all lines starting with &#8216;require&#8217; into an array, with each
165
- line chomped
166
-
167
- <pre>
168
- # method 1
169
- array = ario.chomp[/^\s*require/]
170
- # method 2
171
- array = ario.chomp.lines[/^\s*require/]
172
- # method 3
173
- ario.chomp.lines(/^\s*require/) &gt; array
174
- </pre>
175
- </li>
176
- <li>Read a gzipped file into a string
177
-
178
- <pre>
179
- # method 1
180
- rio('afile.gz').gzip &gt; string
181
- # method 2
182
- string = rio('afile.gz').gzip.contents
183
- </pre>
184
- </li>
185
- <li>Append a gzipped file into a string
186
-
187
- <pre>
188
- # method 1
189
- rio('afile.gz').gzip &gt;&gt; string
190
- # method 2
191
- string += rio('afile.gz').gzip.contents
192
- </pre>
193
- </li>
194
- <li>Iterate through all the lines of a file
195
-
196
- <pre>
197
- # method 1
198
- rio('afile').lines { |line| ... }
199
- # method 2
200
- rio('afile').each { |line| ... }
201
- # method 3
202
- rio('afile').each_line { |line| ... }
203
- </pre>
204
- </li>
205
- <li>Iterate through the lines of a gzipped file
206
-
207
- <pre>
208
- rio('afile.gz').gzip { |line| ... }
209
- </pre>
210
- </li>
211
- <li>Iterate through all non-empty lines of a gzipped file, with each line
212
- chomped
213
-
214
- <pre>
215
- rio('afile.gz').gzip.chomp.skiplines(:empty?) { |line| ... }
216
- </pre>
217
- </li>
218
- <li>Iterate through the first 100 lines of a file
219
-
220
- <pre>
221
- # method 1
222
- rio('afile').lines(0...100) { |line| ... }
223
- </pre>
224
- </li>
225
- <li>Iterate through the first line and all ruby comment lines in a gzipped file
226
-
227
- <pre>
228
- rio('afile.rb.gz').gzip.lines(0,/^\s*#/) { |line| ... }
229
- </pre>
230
- </li>
231
- <li>Iterate through the lines of a ruby file that are neither empty nor
232
- comments, with all lines chomped
233
-
234
- <pre>
235
- rio('afile.rb').chomp.skiplines(/^\s*#/,:empty?) { |line| ... }
236
- </pre>
237
- </li>
238
- <li>Read all the comment lines from a ruby file into an array with all lines
239
- chomped
240
-
241
- <pre>
242
- # method 1
243
- array = rio('afile.rb').chomp[/^\s*#/]
244
- # method 2
245
- array = rio('afile.rb').chomp.lines[/^\s*#/]
246
- # method 3
247
- rio('afile.rb').chomp.lines(/^\s*#/) &gt; array
248
- </pre>
249
- </li>
250
- <li>Read lines of a file into an array, with each line chomped, skipping any
251
- lines longer than 1024 chars
252
-
253
- <pre>
254
- # method 1
255
- array = ario.chomp[proc{ |line| line.length &lt;= 1024}]
256
- # method 2
257
- ario.chomp.lines(proc{ |line| line.length &lt;= 1024}) &gt; array
258
- # method 3
259
- array = ario.chomp.skiplines[proc{ |line| line.length &gt; 1024}]
260
- # method 4
261
- array = ario.chomp.lines(proc{ |line| line.length &lt;= 1024}).to_a
262
- </pre>
263
- </li>
264
- </ul>
265
- <hr size="1"></hr><h3>Write to a single file</h3>
266
- <pre>
267
- ario = rio('afile')
268
- string = &quot;A String\n&quot;
269
- array = [&quot;Line 0\n&quot;,&quot;Line 1\n&quot;]
270
- </pre>
271
- <ul>
272
- <li>Write a string to a file, leaving the Rio open
273
-
274
- <pre>
275
- # method 1
276
- ario.puts(string)
277
- # method 2
278
- ario.print(string)
279
- # method 3
280
- ario.noautoclose &lt; string
281
- </pre>
282
- </li>
283
- <li>Write a string to a file and close the file
284
-
285
- <pre>
286
- # method 1
287
- rio('afile') &lt; string
288
- # method 2
289
- ario.print!(string)
290
- # method 3
291
- ario.print(string).close
292
- </pre>
293
- </li>
294
- <li>Append a string to a file, leaving the Rio open
295
-
296
- <pre>
297
- # method 1
298
- ario.a.puts(string)
299
- # method 2
300
- ario.a.print(string)
301
- # method 3
302
- ario.noautoclose &lt;&lt; string
303
- </pre>
304
- </li>
305
- <li>Append a string to a file and close the file
306
-
307
- <pre>
308
- # method 1
309
- rio('afile') &lt;&lt; string
310
- # method 2
311
- rio('afile').a.print!(string)
312
- # method 3
313
- rio('afile').a.print(string).close
314
- </pre>
315
- </li>
316
- <li>Write an array to a file, leaving the Rio open
317
-
318
- <pre>
319
- # method 1
320
- ario = rio('afile').nocloseoncopy
321
- ario &lt;&lt; array
322
- # method 2
323
- ario.noautoclose &lt; array
324
- </pre>
325
- </li>
326
- <li>Write an array to a file and close the file
327
-
328
- <pre>
329
- # method 1
330
- rio('afile') &lt; array
331
- </pre>
332
- </li>
333
- </ul>
334
- <hr size="1"></hr><h3>Select records</h3>
335
- <pre>
336
- ario = rio('afile')
337
- string = &quot;&quot;
338
- array = []
339
- </pre>
340
- <ul>
341
- <li>Put lines one thru ten and line 100 into an array
342
-
343
- <pre>
344
- # method 1
345
- array = ario[0..9,99]
346
- # method 2
347
- array = ario.lines[0..9,99]
348
- # method 3
349
- ario.lines(0..9,99) &gt; array
350
- </pre>
351
- </li>
352
- <li>Put lines one thru ten,line 100 and lines starting with
353
- &#8216;rio4ruby&#8217; into an array
354
-
355
- <pre>
356
- # method 1
357
- array = ario[0..9,99,/^rio4ruby/]
358
- # method 2
359
- array = ario.lines[0..9,99,/^rio4ruby/]
360
- # method 3
361
- ario.lines(0..9,99,/^rio4ruby/) &gt; array
362
- </pre>
363
- </li>
364
- <li>Put lines that are longer than 128 bytes into an array
365
-
366
- <pre>
367
- # method 1
368
- array = ario[proc{ |l| l.length &gt; 128}]
369
- # method 2
370
- array = ario.lines[proc{ |l| l.length &gt; 128}]
371
- # method 3
372
- array = ario.skiplines[proc{ |l| l.length &lt;= 128}]
373
- # method 4
374
- array = ario.skip.lines[proc{ |l| l.length &lt;= 128}]
375
- </pre>
376
- </li>
377
- <li>Copy all lines that do not start with &#8216;rio4ruby&#8217; into another
378
- file
379
-
380
- <pre>
381
- # method 1
382
- ario.skiplines(/^rio4ruby/) &gt; rio('another_file')
383
- # method 2
384
- ario.lines.skiplines(/^rio4ruby/) &gt; rio('another_file')
385
- # method 3
386
- rio('another_file') &lt; ario.skiplines(/^rio4ruby/)
387
- </pre>
388
- </li>
389
- <li>Copy the first 10 lines and lines starting with &#8216;rio4ruby&#8217;, but
390
- exclude any lines longer than 128 bytes
391
-
392
- <pre>
393
- # method 1
394
- ario.lines(0...10,/^rio4ruby/).skiplines(proc{ |l| l.length &gt; 128}] &gt; rio('another_file')
395
- # method 2
396
- rio('another_file') &lt; ario.lines(0...10,/^rio4ruby/).skiplines(proc{ |l| l.length &gt; 128})
397
- </pre>
398
- </li>
399
- </ul>
400
- <hr size="1"></hr><h3>Select directory entries</h3>
401
- <pre>
402
- ario = rio('adir')
403
- string = &quot;&quot;
404
- array = []
405
- </pre>
406
- <ul>
407
- <li>Put all entries with the extension &#8217;.txt&#8217; into an array
408
-
409
- <pre>
410
- # method 1
411
- array = ario['*.txt']
412
- # method 2
413
- array = ario[/\.txt$/]
414
- # method 3
415
- array = ario.entries['*.txt']
416
- </pre>
417
- </li>
418
- <li>Put all files with the extension &#8217;.txt&#8217; into an array
419
-
420
- <pre>
421
- # method 1
422
- array = ario.files['*.txt']
423
- # method 2
424
- array = ario.files[/\.txt$/]
425
- # method 3
426
- array = ario.files['*.txt']
427
- </pre>
428
- </li>
429
- <li>Put all entries with the extension &#8217;.txt&#8217; into an array,
430
- including those in subdirectories
431
-
432
- <pre>
433
- # method 1
434
- array = ario.all['*.txt']
435
- # method 2
436
- array = ario.all[/\.txt$/]
437
- # method 3
438
- array = ario.all.entries['*.txt']
439
- </pre>
440
- </li>
441
- <li>Put all entries with the extension &#8217;.txt&#8217; into an array,
442
- including those in subdirectories, except those in subdirectories name
443
- &#8217;.svn&#8217;
444
-
445
- <pre>
446
- # method 1
447
- array = ario.norecurse('.svn').all['*.txt']
448
- # method 2
449
- array = ario.norecurse(/^\.svn$/).all[/\.txt$/]
450
- # method 3
451
- array = ario.norecurse('.svn').entries['*.txt']
452
- # method 4
453
- array = ario.entries('*.txt').norecurse('.svn').to_a
454
- # method 5
455
- array = ario.norecurse('.svn')['*.txt']
456
- </pre>
457
- </li>
458
- <li>Put all directories (recursively) into an array
459
-
460
- <pre>
461
- # method 1
462
- array = ario.dirs[]
463
- # method 2
464
- array = ario.dirs.to_a
465
- </pre>
466
- </li>
467
- <li>Put all entries (recursively) into an array, but limit the depth of
468
- recursion to 2
469
-
470
- <pre>
471
- # method 1
472
- array = ario.norecurse(3).to_a
473
- </pre>
474
- </li>
475
- <li>Iterate through ruby files in a directory and subdirectories skipping those
476
- in the &#8217;.svn&#8217;, and &#8216;pkg&#8217; directories
477
-
478
- <pre>
479
- # method 1
480
- is_ruby_exe = proc{ |f| f.executable? and f[0][0] =~ /^#!.+ruby/ }
481
- ario.norecurse('.svn','pkg').files('*.rb',is_ruby_exe) { |f| ... }
482
- # method 2
483
- is_ruby_exe = proc{ |f| f.executable? and f.gets =~ /^#!.+ruby/ }
484
- ario.norecurse('.svn','pkg').files('*.rb',is_ruby_exe) { |f| ... }
485
- </pre>
486
- </li>
487
- <li>Put all files excluding those that are symlinks to files in an array
488
-
489
- <pre>
490
- # method 1
491
- array = ario.skipfiles[:symlink?]
492
- # method 2
493
- array = ario.skipfiles(:symlink?).files[]
494
- # method 3
495
- array = ario.skipfiles(:symlink?).to_a
496
- # method 4
497
- array = ario.files.skipfiles[:symlink?]
498
- </pre>
499
- </li>
500
- <li>Put all entries that are not files (or symlinks to files) into an array
501
-
502
- <pre>
503
- # method 1
504
- array = ario.skipfiles[]
505
- # method 2
506
- array = ario.skipfiles.to_a
507
- </pre>
508
- </li>
509
- <li>Put all entries that are symlinks to files into an array
510
-
511
- <pre>
512
- # method 1
513
- array = ario.files[proc{|f| f.file? and f.symlink?}]
514
- # method 2
515
- array = ario.files(proc{|f| f.file? and f.symlink?}).to_a
516
- </pre>
517
- </li>
518
- <li>Put all directories except those named &#8217;.svn&#8217; into an array
519
-
520
- <pre>
521
- # method 1
522
- array = ario.skipdirs['.svn']
523
- # method 2
524
- array = ario.skipdirs[/^\.svn$/]
525
- # method 3
526
- array = ario.skipdirs('.svn').to_a
527
- # method 4
528
- array = ario.skipdirs('.svn').dirs[]
529
- # method 5
530
- array = ario.skipdirs('.svn')[]
531
- </pre>
532
- </li>
533
- </ul>
534
- <hr size="1"></hr><h3>Read and writing files</h3>
535
- <pre>
536
- ario = rio('afile')
537
- string = &quot;&quot;
538
- array = []
539
- </pre>
540
- <ul>
541
- <li>Copy the contents of one file into another file
542
-
543
- <pre>
544
- # method 1
545
- rio('srcfile') &gt; rio('dstfile')
546
- # method 2
547
- rio('dstfile') &lt; rio('srcfile')
548
- # method 3
549
- rip('dstfile').print!(rio('srcfile').contents)
550
- </pre>
551
- </li>
552
- <li>Append the contents of one file to another file
553
-
554
- <pre>
555
- # method 1
556
- rio('srcfile') &gt;&gt; rio('dstfile')
557
- # method 2
558
- rio('dstfile') &lt;&lt; rio('srcfile')
559
- # method 3
560
- rip('dstfile').a.print!(rio('srcfile').contents)
561
- </pre>
562
- </li>
563
- <li>Copy the first 10 lines of one file to another file
564
-
565
- <pre>
566
- # method 1
567
- rio('srcfile').lines(0...10) &gt; rio('dstfile')
568
- # method 2
569
- rio('dstfile') &lt; rio('srcfile').lines(0...10)
570
- # method 3
571
- rio('dstfile') &lt; rio('srcfile').lines[0...10]
572
- </pre>
573
- </li>
574
- <li>Concatenate several files into one
575
-
576
- <pre>
577
- # method 1
578
- rio('dstfile') &lt; [ rio('src1'), rio('src2'), rio('src3') ]
579
- # method 2
580
- rio('dstfile') &lt; rio('src1') &lt;&lt; rio('src2') &lt;&lt; rio('src3')
581
- </pre>
582
- </li>
583
- <li>Copy a web page into a file
584
-
585
- <pre>
586
- # method 1
587
- rio('http://ruby-doc.org/') &gt; rio('afile')
588
- # method 2
589
- rio('afile') &lt; rio('http://ruby-doc.org/')
590
- # method 3
591
- rio('afile').print!(rio('http://ruby-doc.org/').contents)
592
- </pre>
593
- </li>
594
- <li>Append the output of the daytime server running on the localhost to a file
595
-
596
- <pre>
597
- # method 1
598
- rio(&quot;tcp://localhost:daytime&quot;) &gt;&gt; rio('afile')
599
- # method 2
600
- rio(&quot;tcp:&quot;,'localhost','daytime') &gt;&gt; rio('afile')
601
- # method 3
602
- rio('afile') &lt;&lt; rio(&quot;tcp://:daytime&quot;)
603
- # method 4
604
- rio('afile') &lt;&lt; rio(&quot;tcp://:13&quot;)
605
- </pre>
606
- </li>
607
- <li>Copy the first line and all lines containing &#8216;http:&#8217; to a file
608
-
609
- <pre>
610
- # method 1
611
- rio('srcfile').lines(0,/http:/) &gt; rio('dstfile')
612
- # method 2
613
- rio('dstfile') &lt; rio('srcfile').lines(0,/http:/)
614
- # method 3
615
- rio('dstfile') &lt; rio('srcfile').lines[0,/http:/]
616
- # method 4
617
- </pre>
618
- </li>
619
- <li>Create a gzipped copy of a file
620
-
621
- <pre>
622
- # method 1
623
- rio('afile') &gt; rio('afile.gz').gzip
624
- # method 2
625
- rio('afile.gz').gzip &lt; rio('afile')
626
- # method 3
627
- rio('afile.gz').gzip.print!( rio('afile').contents )
628
- </pre>
629
- </li>
630
- <li>Create an ungzipped copy of a gzipped file
631
-
632
- <pre>
633
- # method 1
634
- rio('afile') &lt; rio('afile.gz').gzip
635
- # method 2
636
- rio('afile.gz').gzip &gt; rio('afile')
637
- # method 3
638
- rio('afile').print!( rio('afile.gz').gzip.contents )
639
- </pre>
640
- </li>
641
- <li>Copy the first 100 lines of gzipped file on a webserver into a local file
642
-
643
- <pre>
644
- # method 1
645
- rio('http://aserver/afile.gz').gzip.lines(0...100) &gt; rio('afile')
646
- </pre>
647
- </li>
648
- <li>Create a file composed of a header from another file, the output of the
649
- &#8216;ps&#8217; command, some text and its creation time pulled from the
650
- daytime server running on your localhost
651
-
652
- <pre>
653
- # method 1
654
- rio('out') &lt; [ rio('header'), rio(?-,'ps'), &quot;Created on &quot;, rio('tcp://:daytime') ]
655
- # method 2
656
- rio('out') &lt; rio('header') &lt;&lt; rio(?-,'ps') &lt;&lt; &quot;Created on: &quot; &lt;&lt; rio(&quot;tcp://:daytime&quot;)
657
- </pre>
658
- </li>
659
- </ul>
660
- <hr size="1"></hr><h3>Reading multiple files</h3>
661
- <pre>
662
- ario = rio('adir')
663
- string = &quot;&quot;
664
- array = []
665
- </pre>
666
- <ul>
667
- <li>Count the lines of code in a directory tree of ruby source files
668
-
669
- <pre>
670
- # method 1
671
- cnt = ario.all.files('*.rb').skiplines[/^\s*#/,/^\s*$/].size
672
- # method 2
673
- cnt = ario.all.files('*.rb').skiplines(/^\s*#/,/^\s*$/).inject(0) { |sum,l| sum += 1 }
674
- </pre>
675
- </li>
676
- <li>Concatanate the contents of all .txt files in a directory into an array
677
-
678
- <pre>
679
- # method 1
680
- array = ario.lines.files['*.txt']
681
- # method 2
682
- array = ario.files('*.txt').lines[]
683
- # method 3
684
- ario.files('*.txt').lines &gt; array
685
- </pre>
686
- </li>
687
- <li>Concatanate the first line of all .txt files in a directory into an array
688
-
689
- <pre>
690
- # method 1
691
- array = ario.lines(0).files['*.txt']
692
- # method 2
693
- array = ario.files('*.txt').lines[0]
694
- # method 3
695
- ario.files('*.txt').lines(0) &gt; array
696
- </pre>
697
- </li>
698
- <li>Copy all .txt files (but only their first ten lines) in a directory into
699
- another directiory
700
-
701
- <pre>
702
- # method 1
703
- ario.files('*.txt').lines(0...10) &gt; rio('another_dir')
704
- </pre>
705
- </li>
706
- </ul>
707
- <hr size="1"></hr><h3>Read and write using Standard IO</h3>
708
- <pre>
709
- string = &quot;&quot;
710
- array = []
711
- </pre>
712
- <ul>
713
- <li>Prompt for input and return what was typed
714
-
715
- <pre>
716
- # method 1
717
- ans = rio(?-).chomp.print(&quot;Type Something: &quot;).gets
718
- # method 2
719
- stdio = rio(?-).chomp
720
- ans = stdio.print(&quot;Type Something: &quot;).gets
721
- </pre>
722
- </li>
723
- <li>Create a Rio tied to stdin or stdout, depending on how it is used
724
-
725
- <pre>
726
- stdio = rio(?-)
727
- </pre>
728
- </li>
729
- <li>Create a Rio tied to stderr
730
-
731
- <pre>
732
- stderr = rio(?=)
733
- </pre>
734
- </li>
735
- <li>Write a string to stdout
736
-
737
- <pre>
738
- # method 1
739
- rio(?-).puts(&quot;Hello World&quot;)
740
- # method 2
741
- rio(?-) &lt;&lt; &quot;Hello World\n&quot;
742
- # method 3
743
- rio(?-) &lt; &quot;Hello World\n&quot;
744
- </pre>
745
- </li>
746
- <li>Read a string from stdin with the input chomped
747
-
748
- <pre>
749
- # method 1
750
- ans = rio(?-).chomp.gets
751
- # method 2
752
- stdio = rio(?-).chomp
753
- ans = stdio.gets
754
- </pre>
755
- </li>
756
- <li>Read from stdin until end of file with the result going into a string
757
-
758
- <pre>
759
- # method 1
760
- rio(?-) &gt;&gt; string
761
- # method 2
762
- rio(?-) &gt; string
763
- </pre>
764
- </li>
765
- <li>Read from stdin until end of file with the chomped lines going into an
766
- array
767
-
768
- <pre>
769
- # method 1
770
- rio(?-).chomp &gt;&gt; array
771
- # method 2
772
- rio(?-).chomp &gt; array
773
- </pre>
774
- </li>
775
- <li>Read from stdin until end of file with the result going into a file
776
-
777
- <pre>
778
- # method 1
779
- rio(?-) &gt; rio('afile')
780
- # method 2
781
- rio('afile') &lt; rio(?-)
782
- </pre>
783
- </li>
784
- <li>Read from stdin until end of file with the result appended to a file
785
-
786
- <pre>
787
- # method 1
788
- rio(?-) &gt;&gt; rio('afile')
789
- # method 2
790
- rio('afile') &lt;&lt; rio(?-)
791
- </pre>
792
- </li>
793
- <li>Write a message to stderr
794
-
795
- <pre>
796
- # method 1
797
- rio(?=).puts(&quot;Hello Error&quot;)
798
- # method 2
799
- rio(?=) &lt;&lt; &quot;Hello Error\n&quot;
800
- # method 3
801
- rio(?=) &lt; &quot;Hello Error\n&quot;
802
- </pre>
803
- </li>
804
- <li>Dump a file to stdout
805
-
806
- <pre>
807
- # method 1
808
- rio('afile') &gt; ?-
809
- # method 2
810
- rio('afile') &gt; rio(?-)
811
- # method 3
812
- rio(?-) &lt;&lt; rio('afile')
813
- # method 4
814
- rio('afile') &gt;&gt; ?-
815
- # method 5
816
- rio(?-) &lt; rio('afile')
817
- # method 6
818
- rio(?-).print(rio('afile').contents)
819
- </pre>
820
- </li>
821
- <li>Emulate a simplified unix &#8216;head&#8217; command which reads from stdin
822
- and writes the first 10 lines to stdout
823
-
824
- <pre>
825
- # method 1
826
- rio(?-).lines(0..9) &gt; ?-
827
- </pre>
828
- </li>
829
- </ul>
830
- <hr size="1"></hr><h3>Reading and writing from processes as one might do with popen</h3>
831
- <ul>
832
- <li>Read the output of the &#8216;ps&#8217; command into an array without the
833
- header line or the line representing the &#8216;ps&#8217; command itself
834
-
835
- <pre>
836
- ps = rio(?-,'ps -a').skiplines[0,/ps$/]
837
- </pre>
838
- </li>
839
- <li>Run an external program, copying its input from one location and its output
840
- to another, and make it look very much like a shell command.
841
-
842
- <pre>
843
- infile = rio(?&quot;,&quot;Hello Kitty\n&quot;)
844
- outfile = rio('out.txt')
845
-
846
- # method 1
847
- cat = rio(?-,'cat').w!
848
- cat &lt;infile &gt;outfile
849
-
850
- # method 2
851
- infile | 'cat' | outfile
852
- </pre>
853
- </li>
854
- </ul>
855
- <hr size="1"></hr><h3>Renaming and moving files</h3>
856
- <pre>
857
- string = &quot;&quot;
858
- array = []
859
- </pre>
860
- <ul>
861
- <li>Rename the file &#8216;a&#8217; to &#8216;b&#8217;
862
-
863
- <pre>
864
- # method 1
865
- rio('a').rename('b')
866
- # method 2
867
- rio('a').rename.filename = 'b'
868
- </pre>
869
- </li>
870
- <li>Rename a file and leave the Rio referencing the files old name
871
-
872
- <pre>
873
- ario = rio('a')
874
- # method 1
875
- ario.rename('b')
876
- </pre>
877
- </li>
878
- <li>Rename a file and change the Rio to reference the new file name
879
-
880
- <pre>
881
- ario = rio('a')
882
- # method 1
883
- ario.rename!('b')
884
- </pre>
885
- </li>
886
- <li>Rename the file &#8216;index.htm&#8217; to &#8216;index.html&#8216;
887
-
888
- <pre>
889
- # method 1
890
- rio('index.htm').rename('index.html')
891
- # method 2
892
- rio('index.htm').rename.extname = '.html'
893
- </pre>
894
- </li>
895
- <li>Rename the file &#8216;index.html&#8217; to &#8216;welcome.html&#8216;
896
-
897
- <pre>
898
- # method 1
899
- rio('index.html').rename('welecome.html')
900
- # method 2
901
- rio('index.htm').rename.basename = 'welcome'
902
- </pre>
903
- </li>
904
- <li>Move a file from directory &#8216;src&#8217; to directory &#8216;dst&#8217;
905
-
906
- <pre>
907
- # method 1
908
- rio('src/afile').rename('dst/afile')
909
- # method 2
910
- rio('src/afile').rename.dirname = 'dst'
911
- </pre>
912
- </li>
913
- <li>Change a file to have the extension &#8217;.html&#8217; leaving the rest of
914
- it as is
915
-
916
- <pre>
917
- # method 1
918
- ario.rename.extname = '.html'
919
- </pre>
920
- </li>
921
- <li>Change a files basename to &#8216;rio4ruby&#8217; without changing its
922
- extension
923
-
924
- <pre>
925
- # method 1
926
- ario.rename.basename = 'rio4ruby'
927
- </pre>
928
- </li>
929
- <li>Change a file ending with &#8217;.tar.gz&#8217; to end with
930
- &#8217;.tgz&#8217;
931
-
932
- <pre>
933
- # method 1
934
- ario.rename.ext('.tar.gz').extname = '.tgz'
935
- </pre>
936
- </li>
937
- <li>Change the extension of all files with the extension &#8217;.htm&#8217; in
938
- a directory to have the extension &#8217;.html&#8217;
939
-
940
- <pre>
941
- # method 1
942
- rio('adir').rename.files('*.htm') do |htmfile|
943
- htmlfile.extname = '.html'
944
- end
945
- # method 2
946
- rio('adir').files('*.htm') do |htmfile|
947
- htmlfile.rename.extname = '.html'
948
- end
949
- </pre>
950
- </li>
951
- <li>Change the extension of all files with the extension &#8217;.htm&#8217; in
952
- a directory and its subdirectories to have the extension
953
- &#8217;.html&#8217;
954
-
955
- <pre>
956
- # method 1
957
- rio('adir').rename.all.files('*.htm') do |htmfile|
958
- htmfile.extname = '.html'
959
- end
960
- # method 2
961
- rio('adir').all.files('*.htm') do |htmfile|
962
- htmfile.rename.extname = '.html'
963
- end
964
- </pre>
965
- </li>
966
- <li>Move a file in an arbitrary directory into the current working directory.
967
-
968
- <pre>
969
- # method 1
970
- rio('arb/i/trary/di/rec/tory/afile').rename.dirname = '.'
971
- </pre>
972
- </li>
973
- </ul>
974
- <hr size="1"></hr><h3>Manipulate a Rio&#8217;s path</h3>
975
- <pre>
976
- string = &quot;&quot;
977
- array = []
978
- </pre>
979
- <ul>
980
- <li>Create a Rio with an additional subdirectory appended
981
-
982
- <pre>
983
- ap = rio('adir')
984
- # method 1
985
- ap /= 'subdirectory'
986
- # method 2
987
- ap = ap.join('subdirectory')
988
- # method 3
989
- ap = rio(ap,'subdirectory')
990
- </pre>
991
- </li>
992
- <li>Create a Rio from an array of subdirectories
993
-
994
- <pre>
995
- dirs = ['adir','subdir1','subdir2']
996
- # method 1
997
- ario = rio(dirs)
998
- </pre>
999
- </li>
1000
- <li>Create an array of subdirectories from a Rio
1001
-
1002
- <pre>
1003
- # method 1
1004
- anarray = rio('adir/subdir1/subdir2').split
1005
- </pre>
1006
- </li>
1007
- <li>Append a string to a path
1008
-
1009
- <pre>
1010
- # method 1
1011
- ario = rio('apath') + astring
1012
- # method 2
1013
- ario = rio('apath')
1014
- ario += astring
1015
- </pre>
1016
- </li>
1017
- <li>create a directory &#8216;links&#8217; with a symlink pointing to each .rb
1018
- file in directory &#8216;lib&#8217; (including subdirectories)
1019
-
1020
- <pre>
1021
- lib = rio('lib')
1022
- links = rio('links').delete!.mkdir
1023
- lib.all.files(&quot;*.rb&quot;) do |f|
1024
- f.symlink( f.dirname.sub(/^#{lib}/,links).mkdir )
1025
- end
1026
- </pre>
1027
- </li>
1028
- </ul>
1029
- <hr size="2"></hr><p>
1030
- Suggested Reading
1031
- </p>
1032
- <ul>
1033
- <li><a href="SYNOPSIS.html">RIO::Doc::SYNOPSIS</a>
1034
-
1035
- </li>
1036
- <li><a href="INTRO.html">RIO::Doc::INTRO</a>
1037
-
1038
- </li>
1039
- <li><a href="../Rio.html">RIO::Rio</a>
1040
-
1041
- </li>
1042
- </ul>
1043
-
1044
- </div>
1045
-
1046
-
1047
- </div>
1048
-
1049
-
1050
-
1051
-
1052
- <!-- if includes -->
1053
-
1054
- <div id="section">
1055
-
1056
-
1057
-
1058
-
1059
-
1060
-
1061
-
1062
-
1063
- <!-- if method_list -->
1064
- </div>
1065
-
1066
-
1067
- </div>
1068
-
1069
-
1070
- <div id="validator-badges">
1071
- <p><small>Copyright &copy; 2005,2006,2007 Christopher Kleckner. <a href="http://www.gnu.org/licenses/gpl.html">All rights reserved</a>.</small></p>
1072
- </div>
1073
-
1074
- </body>
1075
- </html>