rio 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (395) hide show
  1. data/COPYING +340 -0
  2. data/ChangeLog +755 -0
  3. data/README +65 -0
  4. data/RUNME.1st.rb +75 -0
  5. data/Rakefile +312 -0
  6. data/VERSION +1 -0
  7. data/doc/README_MSWIN32.txt +39 -0
  8. data/doc/RELEASE_NOTES +130 -0
  9. data/doc/generators/template/html/rio.rb +895 -0
  10. data/doc/rdoc/classes/Kernel.html +181 -0
  11. data/doc/rdoc/classes/Kernel.src/M000183.html +18 -0
  12. data/doc/rdoc/classes/RIO.html +508 -0
  13. data/doc/rdoc/classes/RIO.src/M000001.html +18 -0
  14. data/doc/rdoc/classes/RIO.src/M000002.html +18 -0
  15. data/doc/rdoc/classes/RIO.src/M000003.html +18 -0
  16. data/doc/rdoc/classes/RIO/Doc.html +138 -0
  17. data/doc/rdoc/classes/RIO/Doc/HOWTO.html +1031 -0
  18. data/doc/rdoc/classes/RIO/Doc/INTRO.html +1116 -0
  19. data/doc/rdoc/classes/RIO/Doc/MISC.html +443 -0
  20. data/doc/rdoc/classes/RIO/Doc/SYNOPSIS.html +325 -0
  21. data/doc/rdoc/classes/RIO/Rio.html +6333 -0
  22. data/doc/rdoc/classes/RIO/Rio.src/M000004.html +18 -0
  23. data/doc/rdoc/classes/RIO/Rio.src/M000005.html +20 -0
  24. data/doc/rdoc/classes/RIO/Rio.src/M000006.html +27 -0
  25. data/doc/rdoc/classes/RIO/Rio.src/M000007.html +27 -0
  26. data/doc/rdoc/classes/RIO/Rio.src/M000008.html +16 -0
  27. data/doc/rdoc/classes/RIO/Rio.src/M000009.html +18 -0
  28. data/doc/rdoc/classes/RIO/Rio.src/M000010.html +20 -0
  29. data/doc/rdoc/classes/RIO/Rio.src/M000011.html +16 -0
  30. data/doc/rdoc/classes/RIO/Rio.src/M000012.html +16 -0
  31. data/doc/rdoc/classes/RIO/Rio.src/M000013.html +16 -0
  32. data/doc/rdoc/classes/RIO/Rio.src/M000014.html +16 -0
  33. data/doc/rdoc/classes/RIO/Rio.src/M000015.html +16 -0
  34. data/doc/rdoc/classes/RIO/Rio.src/M000016.html +16 -0
  35. data/doc/rdoc/classes/RIO/Rio.src/M000017.html +16 -0
  36. data/doc/rdoc/classes/RIO/Rio.src/M000018.html +16 -0
  37. data/doc/rdoc/classes/RIO/Rio.src/M000019.html +16 -0
  38. data/doc/rdoc/classes/RIO/Rio.src/M000020.html +16 -0
  39. data/doc/rdoc/classes/RIO/Rio.src/M000021.html +16 -0
  40. data/doc/rdoc/classes/RIO/Rio.src/M000022.html +16 -0
  41. data/doc/rdoc/classes/RIO/Rio.src/M000023.html +16 -0
  42. data/doc/rdoc/classes/RIO/Rio.src/M000024.html +16 -0
  43. data/doc/rdoc/classes/RIO/Rio.src/M000025.html +16 -0
  44. data/doc/rdoc/classes/RIO/Rio.src/M000026.html +16 -0
  45. data/doc/rdoc/classes/RIO/Rio.src/M000027.html +16 -0
  46. data/doc/rdoc/classes/RIO/Rio.src/M000028.html +16 -0
  47. data/doc/rdoc/classes/RIO/Rio.src/M000029.html +16 -0
  48. data/doc/rdoc/classes/RIO/Rio.src/M000030.html +16 -0
  49. data/doc/rdoc/classes/RIO/Rio.src/M000031.html +16 -0
  50. data/doc/rdoc/classes/RIO/Rio.src/M000032.html +16 -0
  51. data/doc/rdoc/classes/RIO/Rio.src/M000033.html +16 -0
  52. data/doc/rdoc/classes/RIO/Rio.src/M000034.html +16 -0
  53. data/doc/rdoc/classes/RIO/Rio.src/M000035.html +16 -0
  54. data/doc/rdoc/classes/RIO/Rio.src/M000036.html +16 -0
  55. data/doc/rdoc/classes/RIO/Rio.src/M000037.html +16 -0
  56. data/doc/rdoc/classes/RIO/Rio.src/M000038.html +16 -0
  57. data/doc/rdoc/classes/RIO/Rio.src/M000039.html +16 -0
  58. data/doc/rdoc/classes/RIO/Rio.src/M000040.html +16 -0
  59. data/doc/rdoc/classes/RIO/Rio.src/M000041.html +16 -0
  60. data/doc/rdoc/classes/RIO/Rio.src/M000042.html +16 -0
  61. data/doc/rdoc/classes/RIO/Rio.src/M000043.html +16 -0
  62. data/doc/rdoc/classes/RIO/Rio.src/M000044.html +16 -0
  63. data/doc/rdoc/classes/RIO/Rio.src/M000045.html +16 -0
  64. data/doc/rdoc/classes/RIO/Rio.src/M000046.html +16 -0
  65. data/doc/rdoc/classes/RIO/Rio.src/M000047.html +16 -0
  66. data/doc/rdoc/classes/RIO/Rio.src/M000048.html +16 -0
  67. data/doc/rdoc/classes/RIO/Rio.src/M000049.html +16 -0
  68. data/doc/rdoc/classes/RIO/Rio.src/M000050.html +16 -0
  69. data/doc/rdoc/classes/RIO/Rio.src/M000051.html +16 -0
  70. data/doc/rdoc/classes/RIO/Rio.src/M000052.html +16 -0
  71. data/doc/rdoc/classes/RIO/Rio.src/M000053.html +16 -0
  72. data/doc/rdoc/classes/RIO/Rio.src/M000054.html +16 -0
  73. data/doc/rdoc/classes/RIO/Rio.src/M000055.html +16 -0
  74. data/doc/rdoc/classes/RIO/Rio.src/M000056.html +16 -0
  75. data/doc/rdoc/classes/RIO/Rio.src/M000057.html +16 -0
  76. data/doc/rdoc/classes/RIO/Rio.src/M000058.html +16 -0
  77. data/doc/rdoc/classes/RIO/Rio.src/M000059.html +16 -0
  78. data/doc/rdoc/classes/RIO/Rio.src/M000060.html +16 -0
  79. data/doc/rdoc/classes/RIO/Rio.src/M000061.html +16 -0
  80. data/doc/rdoc/classes/RIO/Rio.src/M000062.html +16 -0
  81. data/doc/rdoc/classes/RIO/Rio.src/M000063.html +16 -0
  82. data/doc/rdoc/classes/RIO/Rio.src/M000064.html +16 -0
  83. data/doc/rdoc/classes/RIO/Rio.src/M000065.html +16 -0
  84. data/doc/rdoc/classes/RIO/Rio.src/M000066.html +16 -0
  85. data/doc/rdoc/classes/RIO/Rio.src/M000067.html +16 -0
  86. data/doc/rdoc/classes/RIO/Rio.src/M000068.html +16 -0
  87. data/doc/rdoc/classes/RIO/Rio.src/M000069.html +16 -0
  88. data/doc/rdoc/classes/RIO/Rio.src/M000070.html +16 -0
  89. data/doc/rdoc/classes/RIO/Rio.src/M000071.html +16 -0
  90. data/doc/rdoc/classes/RIO/Rio.src/M000072.html +16 -0
  91. data/doc/rdoc/classes/RIO/Rio.src/M000073.html +16 -0
  92. data/doc/rdoc/classes/RIO/Rio.src/M000074.html +16 -0
  93. data/doc/rdoc/classes/RIO/Rio.src/M000075.html +16 -0
  94. data/doc/rdoc/classes/RIO/Rio.src/M000076.html +16 -0
  95. data/doc/rdoc/classes/RIO/Rio.src/M000077.html +16 -0
  96. data/doc/rdoc/classes/RIO/Rio.src/M000078.html +16 -0
  97. data/doc/rdoc/classes/RIO/Rio.src/M000079.html +16 -0
  98. data/doc/rdoc/classes/RIO/Rio.src/M000080.html +16 -0
  99. data/doc/rdoc/classes/RIO/Rio.src/M000081.html +16 -0
  100. data/doc/rdoc/classes/RIO/Rio.src/M000082.html +16 -0
  101. data/doc/rdoc/classes/RIO/Rio.src/M000083.html +16 -0
  102. data/doc/rdoc/classes/RIO/Rio.src/M000084.html +16 -0
  103. data/doc/rdoc/classes/RIO/Rio.src/M000085.html +16 -0
  104. data/doc/rdoc/classes/RIO/Rio.src/M000086.html +16 -0
  105. data/doc/rdoc/classes/RIO/Rio.src/M000087.html +16 -0
  106. data/doc/rdoc/classes/RIO/Rio.src/M000088.html +16 -0
  107. data/doc/rdoc/classes/RIO/Rio.src/M000089.html +16 -0
  108. data/doc/rdoc/classes/RIO/Rio.src/M000090.html +16 -0
  109. data/doc/rdoc/classes/RIO/Rio.src/M000091.html +16 -0
  110. data/doc/rdoc/classes/RIO/Rio.src/M000092.html +16 -0
  111. data/doc/rdoc/classes/RIO/Rio.src/M000093.html +16 -0
  112. data/doc/rdoc/classes/RIO/Rio.src/M000094.html +16 -0
  113. data/doc/rdoc/classes/RIO/Rio.src/M000095.html +16 -0
  114. data/doc/rdoc/classes/RIO/Rio.src/M000096.html +16 -0
  115. data/doc/rdoc/classes/RIO/Rio.src/M000097.html +16 -0
  116. data/doc/rdoc/classes/RIO/Rio.src/M000098.html +16 -0
  117. data/doc/rdoc/classes/RIO/Rio.src/M000099.html +16 -0
  118. data/doc/rdoc/classes/RIO/Rio.src/M000100.html +16 -0
  119. data/doc/rdoc/classes/RIO/Rio.src/M000101.html +16 -0
  120. data/doc/rdoc/classes/RIO/Rio.src/M000102.html +16 -0
  121. data/doc/rdoc/classes/RIO/Rio.src/M000103.html +16 -0
  122. data/doc/rdoc/classes/RIO/Rio.src/M000104.html +16 -0
  123. data/doc/rdoc/classes/RIO/Rio.src/M000105.html +16 -0
  124. data/doc/rdoc/classes/RIO/Rio.src/M000106.html +16 -0
  125. data/doc/rdoc/classes/RIO/Rio.src/M000107.html +16 -0
  126. data/doc/rdoc/classes/RIO/Rio.src/M000108.html +16 -0
  127. data/doc/rdoc/classes/RIO/Rio.src/M000109.html +16 -0
  128. data/doc/rdoc/classes/RIO/Rio.src/M000110.html +16 -0
  129. data/doc/rdoc/classes/RIO/Rio.src/M000111.html +16 -0
  130. data/doc/rdoc/classes/RIO/Rio.src/M000112.html +16 -0
  131. data/doc/rdoc/classes/RIO/Rio.src/M000113.html +16 -0
  132. data/doc/rdoc/classes/RIO/Rio.src/M000114.html +16 -0
  133. data/doc/rdoc/classes/RIO/Rio.src/M000115.html +16 -0
  134. data/doc/rdoc/classes/RIO/Rio.src/M000116.html +16 -0
  135. data/doc/rdoc/classes/RIO/Rio.src/M000117.html +16 -0
  136. data/doc/rdoc/classes/RIO/Rio.src/M000118.html +16 -0
  137. data/doc/rdoc/classes/RIO/Rio.src/M000119.html +16 -0
  138. data/doc/rdoc/classes/RIO/Rio.src/M000120.html +16 -0
  139. data/doc/rdoc/classes/RIO/Rio.src/M000121.html +16 -0
  140. data/doc/rdoc/classes/RIO/Rio.src/M000122.html +16 -0
  141. data/doc/rdoc/classes/RIO/Rio.src/M000123.html +16 -0
  142. data/doc/rdoc/classes/RIO/Rio.src/M000124.html +16 -0
  143. data/doc/rdoc/classes/RIO/Rio.src/M000125.html +16 -0
  144. data/doc/rdoc/classes/RIO/Rio.src/M000126.html +16 -0
  145. data/doc/rdoc/classes/RIO/Rio.src/M000127.html +16 -0
  146. data/doc/rdoc/classes/RIO/Rio.src/M000128.html +16 -0
  147. data/doc/rdoc/classes/RIO/Rio.src/M000129.html +16 -0
  148. data/doc/rdoc/classes/RIO/Rio.src/M000130.html +16 -0
  149. data/doc/rdoc/classes/RIO/Rio.src/M000131.html +16 -0
  150. data/doc/rdoc/classes/RIO/Rio.src/M000132.html +16 -0
  151. data/doc/rdoc/classes/RIO/Rio.src/M000133.html +16 -0
  152. data/doc/rdoc/classes/RIO/Rio.src/M000134.html +16 -0
  153. data/doc/rdoc/classes/RIO/Rio.src/M000135.html +16 -0
  154. data/doc/rdoc/classes/RIO/Rio.src/M000136.html +16 -0
  155. data/doc/rdoc/classes/RIO/Rio.src/M000137.html +16 -0
  156. data/doc/rdoc/classes/RIO/Rio.src/M000138.html +16 -0
  157. data/doc/rdoc/classes/RIO/Rio.src/M000139.html +16 -0
  158. data/doc/rdoc/classes/RIO/Rio.src/M000140.html +16 -0
  159. data/doc/rdoc/classes/RIO/Rio.src/M000141.html +16 -0
  160. data/doc/rdoc/classes/RIO/Rio.src/M000142.html +16 -0
  161. data/doc/rdoc/classes/RIO/Rio.src/M000143.html +16 -0
  162. data/doc/rdoc/classes/RIO/Rio.src/M000144.html +16 -0
  163. data/doc/rdoc/classes/RIO/Rio.src/M000145.html +16 -0
  164. data/doc/rdoc/classes/RIO/Rio.src/M000146.html +16 -0
  165. data/doc/rdoc/classes/RIO/Rio.src/M000147.html +16 -0
  166. data/doc/rdoc/classes/RIO/Rio.src/M000148.html +16 -0
  167. data/doc/rdoc/classes/RIO/Rio.src/M000149.html +16 -0
  168. data/doc/rdoc/classes/RIO/Rio.src/M000150.html +16 -0
  169. data/doc/rdoc/classes/RIO/Rio.src/M000151.html +16 -0
  170. data/doc/rdoc/classes/RIO/Rio.src/M000152.html +16 -0
  171. data/doc/rdoc/classes/RIO/Rio.src/M000153.html +16 -0
  172. data/doc/rdoc/classes/RIO/Rio.src/M000154.html +16 -0
  173. data/doc/rdoc/classes/RIO/Rio.src/M000155.html +16 -0
  174. data/doc/rdoc/classes/RIO/Rio.src/M000156.html +16 -0
  175. data/doc/rdoc/classes/RIO/Rio.src/M000157.html +16 -0
  176. data/doc/rdoc/classes/RIO/Rio.src/M000158.html +16 -0
  177. data/doc/rdoc/classes/RIO/Rio.src/M000159.html +16 -0
  178. data/doc/rdoc/classes/RIO/Rio.src/M000160.html +16 -0
  179. data/doc/rdoc/classes/RIO/Rio.src/M000161.html +16 -0
  180. data/doc/rdoc/classes/RIO/Rio.src/M000162.html +16 -0
  181. data/doc/rdoc/classes/RIO/Rio.src/M000163.html +16 -0
  182. data/doc/rdoc/classes/RIO/Rio.src/M000164.html +16 -0
  183. data/doc/rdoc/classes/RIO/Rio.src/M000165.html +16 -0
  184. data/doc/rdoc/classes/RIO/Rio.src/M000166.html +16 -0
  185. data/doc/rdoc/classes/RIO/Rio.src/M000167.html +16 -0
  186. data/doc/rdoc/classes/RIO/Rio.src/M000168.html +16 -0
  187. data/doc/rdoc/classes/RIO/Rio.src/M000169.html +16 -0
  188. data/doc/rdoc/classes/RIO/Rio.src/M000170.html +16 -0
  189. data/doc/rdoc/classes/RIO/Rio.src/M000171.html +16 -0
  190. data/doc/rdoc/classes/RIO/Rio.src/M000172.html +16 -0
  191. data/doc/rdoc/classes/RIO/Rio.src/M000173.html +16 -0
  192. data/doc/rdoc/classes/RIO/Rio.src/M000174.html +16 -0
  193. data/doc/rdoc/classes/RIO/Rio.src/M000175.html +16 -0
  194. data/doc/rdoc/classes/RIO/Rio.src/M000176.html +16 -0
  195. data/doc/rdoc/classes/RIO/Rio.src/M000177.html +16 -0
  196. data/doc/rdoc/classes/RIO/Rio.src/M000178.html +16 -0
  197. data/doc/rdoc/classes/RIO/Rio.src/M000179.html +16 -0
  198. data/doc/rdoc/classes/RIO/Rio.src/M000180.html +16 -0
  199. data/doc/rdoc/classes/RIO/Rio.src/M000181.html +16 -0
  200. data/doc/rdoc/classes/RIO/Rio.src/M000182.html +16 -0
  201. data/doc/rdoc/created.rid +1 -0
  202. data/doc/rdoc/files/README.html +215 -0
  203. data/doc/rdoc/files/lib/rio/constructor_rb.html +142 -0
  204. data/doc/rdoc/files/lib/rio/doc/HOWTO_rb.html +135 -0
  205. data/doc/rdoc/files/lib/rio/doc/INTRO_rb.html +135 -0
  206. data/doc/rdoc/files/lib/rio/doc/MISC_rb.html +135 -0
  207. data/doc/rdoc/files/lib/rio/doc/SYNOPSIS_rb.html +135 -0
  208. data/doc/rdoc/files/lib/rio/if/basic_rb.html +135 -0
  209. data/doc/rdoc/files/lib/rio/if/dir_rb.html +135 -0
  210. data/doc/rdoc/files/lib/rio/if/file_rb.html +135 -0
  211. data/doc/rdoc/files/lib/rio/if/fileordir_rb.html +135 -0
  212. data/doc/rdoc/files/lib/rio/if/grande_rb.html +135 -0
  213. data/doc/rdoc/files/lib/rio/if/internal_rb.html +135 -0
  214. data/doc/rdoc/files/lib/rio/if/methods_rb.html +135 -0
  215. data/doc/rdoc/files/lib/rio/if/path_rb.html +135 -0
  216. data/doc/rdoc/files/lib/rio/if/stream_rb.html +135 -0
  217. data/doc/rdoc/files/lib/rio/if/test_rb.html +135 -0
  218. data/doc/rdoc/files/lib/rio/kernel_rb.html +142 -0
  219. data/doc/rdoc/files/lib/rio_rb.html +153 -0
  220. data/doc/rdoc/fr_class_index.html +34 -0
  221. data/doc/rdoc/fr_file_index.html +44 -0
  222. data/doc/rdoc/fr_method_index.html +210 -0
  223. data/doc/rdoc/index.html +24 -0
  224. data/doc/rdoc/rdoc-style.css +384 -0
  225. data/doc/rfc1738.txt +1403 -0
  226. data/doc/rfc959.txt +3933 -0
  227. data/ex/colx.rb +6 -0
  228. data/ex/findinruby +19 -0
  229. data/ex/findruby +11 -0
  230. data/ex/prompt.rb +25 -0
  231. data/ex/rgb.txt.gz +0 -0
  232. data/ex/riocat +35 -0
  233. data/ex/riogunzip +31 -0
  234. data/ex/riogzip +24 -0
  235. data/ex/tolf +11 -0
  236. data/lib/rio.rb +163 -0
  237. data/lib/rio/abstract_method.rb +57 -0
  238. data/lib/rio/argv.rb +57 -0
  239. data/lib/rio/arrayio.rb +199 -0
  240. data/lib/rio/arycopy.rb +44 -0
  241. data/lib/rio/assert.rb +115 -0
  242. data/lib/rio/base.rb +59 -0
  243. data/lib/rio/constructor.rb +183 -0
  244. data/lib/rio/context.rb +117 -0
  245. data/lib/rio/context/chomp.rb +53 -0
  246. data/lib/rio/context/closeoneof.rb +50 -0
  247. data/lib/rio/context/cxx.rb +67 -0
  248. data/lib/rio/context/dir.rb +92 -0
  249. data/lib/rio/context/gzip.rb +51 -0
  250. data/lib/rio/context/methods.rb +196 -0
  251. data/lib/rio/context/stream.rb +170 -0
  252. data/lib/rio/cp.rb +305 -0
  253. data/lib/rio/cxdir.rb +79 -0
  254. data/lib/rio/dir.rb +145 -0
  255. data/lib/rio/doc.rb +45 -0
  256. data/lib/rio/doc/HOWTO.rb +691 -0
  257. data/lib/rio/doc/INTRO.rb +579 -0
  258. data/lib/rio/doc/MISC.rb +257 -0
  259. data/lib/rio/doc/SYNOPSIS.rb +170 -0
  260. data/lib/rio/entrysel.rb +162 -0
  261. data/lib/rio/exception.rb +42 -0
  262. data/lib/rio/exception/copy.rb +98 -0
  263. data/lib/rio/exception/open.rb +62 -0
  264. data/lib/rio/exception/state.rb +74 -0
  265. data/lib/rio/ext.rb +62 -0
  266. data/lib/rio/ext/csv.rb +261 -0
  267. data/lib/rio/factory.rb +236 -0
  268. data/lib/rio/file.rb +77 -0
  269. data/lib/rio/filter/chomp.rb +61 -0
  270. data/lib/rio/filter/closeoneof.rb +103 -0
  271. data/lib/rio/filter/gzip.rb +58 -0
  272. data/lib/rio/ftp.rb +275 -0
  273. data/lib/rio/ftp/conn.rb +167 -0
  274. data/lib/rio/ftp/ioh.rb +88 -0
  275. data/lib/rio/grande.rb +126 -0
  276. data/lib/rio/handle.rb +101 -0
  277. data/lib/rio/if.rb +53 -0
  278. data/lib/rio/if/basic.rb +64 -0
  279. data/lib/rio/if/dir.rb +362 -0
  280. data/lib/rio/if/file.rb +57 -0
  281. data/lib/rio/if/fileordir.rb +247 -0
  282. data/lib/rio/if/grande.rb +510 -0
  283. data/lib/rio/if/internal.rb +53 -0
  284. data/lib/rio/if/methods.rb +612 -0
  285. data/lib/rio/if/path.rb +413 -0
  286. data/lib/rio/if/stream.rb +599 -0
  287. data/lib/rio/if/test.rb +219 -0
  288. data/lib/rio/impl/path.rb +82 -0
  289. data/lib/rio/ioh.rb +137 -0
  290. data/lib/rio/iomode.rb +96 -0
  291. data/lib/rio/kernel.rb +47 -0
  292. data/lib/rio/local.rb +63 -0
  293. data/lib/rio/match.rb +51 -0
  294. data/lib/rio/matchrecord.rb +254 -0
  295. data/lib/rio/open3.rb +69 -0
  296. data/lib/rio/ops/create.rb +78 -0
  297. data/lib/rio/ops/dir.rb +302 -0
  298. data/lib/rio/ops/either.rb +117 -0
  299. data/lib/rio/ops/file.rb +94 -0
  300. data/lib/rio/ops/path.rb +292 -0
  301. data/lib/rio/ops/stream.rb +84 -0
  302. data/lib/rio/ops/stream/input.rb +237 -0
  303. data/lib/rio/ops/stream/output.rb +96 -0
  304. data/lib/rio/ops/stream/read.rb +84 -0
  305. data/lib/rio/ops/stream/write.rb +58 -0
  306. data/lib/rio/ops/symlink.rb +70 -0
  307. data/lib/rio/path.rb +117 -0
  308. data/lib/rio/path/reset.rb +70 -0
  309. data/lib/rio/record.rb +59 -0
  310. data/lib/rio/rectype.rb +86 -0
  311. data/lib/rio/rl/base.rb +147 -0
  312. data/lib/rio/rl/builder.rb +166 -0
  313. data/lib/rio/rl/ioi.rb +66 -0
  314. data/lib/rio/rl/path.rb +141 -0
  315. data/lib/rio/rl/uri.rb +118 -0
  316. data/lib/rio/scheme/aryio.rb +89 -0
  317. data/lib/rio/scheme/cmdio.rb +74 -0
  318. data/lib/rio/scheme/fd.rb +65 -0
  319. data/lib/rio/scheme/ftp.rb +73 -0
  320. data/lib/rio/scheme/http.rb +81 -0
  321. data/lib/rio/scheme/path.rb +100 -0
  322. data/lib/rio/scheme/stderr.rb +56 -0
  323. data/lib/rio/scheme/stdio.rb +71 -0
  324. data/lib/rio/scheme/strio.rb +82 -0
  325. data/lib/rio/scheme/sysio.rb +61 -0
  326. data/lib/rio/scheme/tcp.rb +74 -0
  327. data/lib/rio/scheme/tempfile.rb +104 -0
  328. data/lib/rio/state.rb +209 -0
  329. data/lib/rio/state/error.rb +73 -0
  330. data/lib/rio/stream.rb +181 -0
  331. data/lib/rio/stream/base.rb +50 -0
  332. data/lib/rio/stream/duplex.rb +76 -0
  333. data/lib/rio/stream/open.rb +203 -0
  334. data/lib/rio/symantics.rb +46 -0
  335. data/lib/rio/to_rio.rb +57 -0
  336. data/lib/rio/uri/file.rb +145 -0
  337. data/lib/rio/version.rb +52 -0
  338. data/setup.rb +1331 -0
  339. data/test/1.rb +14 -0
  340. data/test/mswin32.rb +28 -0
  341. data/test/once.rb +7 -0
  342. data/test/runtests.rb +12 -0
  343. data/test/runtests_gem.rb +15 -0
  344. data/test/tc/abs.rb +349 -0
  345. data/test/tc/all.rb +42 -0
  346. data/test/tc/cd1.rb +116 -0
  347. data/test/tc/clearsel.rb +69 -0
  348. data/test/tc/closeoncopy.rb +91 -0
  349. data/test/tc/closeoneof.rb +194 -0
  350. data/test/tc/copy-from.rb +183 -0
  351. data/test/tc/copy-to.rb +94 -0
  352. data/test/tc/copy.rb +72 -0
  353. data/test/tc/copyarray.rb +191 -0
  354. data/test/tc/copydest.rb +50 -0
  355. data/test/tc/copydir.rb +192 -0
  356. data/test/tc/copydirlines.rb +124 -0
  357. data/test/tc/copylines.rb +40 -0
  358. data/test/tc/copynonex.rb +121 -0
  359. data/test/tc/create.rb +104 -0
  360. data/test/tc/csv.rb +229 -0
  361. data/test/tc/dir.rb +79 -0
  362. data/test/tc/dirautoclose.rb +70 -0
  363. data/test/tc/dirent.rb +180 -0
  364. data/test/tc/dirss.rb +84 -0
  365. data/test/tc/each.rb +111 -0
  366. data/test/tc/each_break.rb +241 -0
  367. data/test/tc/edf.rb +82 -0
  368. data/test/tc/entary.rb +230 -0
  369. data/test/tc/eq.rb +101 -0
  370. data/test/tc/expand_path.rb +94 -0
  371. data/test/tc/ext.rb +115 -0
  372. data/test/tc/fileno.rb +95 -0
  373. data/test/tc/getrec.rb +140 -0
  374. data/test/tc/lineno.rb +197 -0
  375. data/test/tc/lines.rb +66 -0
  376. data/test/tc/methods.rb +185 -0
  377. data/test/tc/misc.rb +473 -0
  378. data/test/tc/nolines.rb +205 -0
  379. data/test/tc/noqae.rb +873 -0
  380. data/test/tc/once.rb +6 -0
  381. data/test/tc/overload.rb +137 -0
  382. data/test/tc/pa.rb +159 -0
  383. data/test/tc/pathop.rb +63 -0
  384. data/test/tc/paths.rb +147 -0
  385. data/test/tc/qae.rb +494 -0
  386. data/test/tc/qae_riovar.rb +500 -0
  387. data/test/tc/records.rb +69 -0
  388. data/test/tc/rename.rb +224 -0
  389. data/test/tc/rename_assign.rb +48 -0
  390. data/test/tc/sub.rb +49 -0
  391. data/test/tc/symlink.rb +177 -0
  392. data/test/tc/symlink0.rb +298 -0
  393. data/test/tc/symlink1.rb +115 -0
  394. data/test/tc/testcase.rb +152 -0
  395. metadata +461 -0
@@ -0,0 +1,443 @@
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::MISC</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
+ <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td class="class-mod"><strong>Module</strong></td>
53
+ <td class="class-name-in-header">RIO::Doc::MISC</td>
54
+ <td rowspan="2" class="class-header-space-col"></td>
55
+ <td rowspan="2">
56
+ <a class="in-url" href="../../../files/lib/rio/doc/MISC_rb.html">
57
+ lib/rio/doc/MISC.rb
58
+ </a>
59
+ &nbsp;&nbsp;
60
+ </td>
61
+ </tr>
62
+
63
+ </table>
64
+ </div>
65
+ <!-- banner header -->
66
+
67
+ <div id="bodyContent">
68
+
69
+
70
+
71
+ <div id="contextContent">
72
+
73
+ <div id="description">
74
+ <p>
75
+ The following example are provided without comment
76
+ </p>
77
+ <pre>
78
+ array = rio('afile').readlines
79
+
80
+ rio('afile') &gt; rio('acopy')
81
+
82
+ ary = rio('afile').chomp.lines[0...10]
83
+
84
+ rio('adir').rename.all.files('*.htm') do |file|
85
+ file.ext = '.html'
86
+ end
87
+ </pre>
88
+ <p>
89
+ A basic familiarity with ruby and shell operations should allow a casual
90
+ reader to guess what these examples will do. How they are being performed
91
+ may not be what a casual reader might expect. I will explain these example
92
+ to illustrate the <a href="../Rio.html">Rio</a> basics.
93
+ </p>
94
+ <p>
95
+ For many more examples please read the <a href="HOWTO.html">HOWTO</a>
96
+ document and the rdoc documentation.
97
+ </p>
98
+ <h2>Example 1.</h2>
99
+ <pre>
100
+ array = rio('afile').readlines
101
+ </pre>
102
+ <p>
103
+ This uses IO#readlines to read the lines of &#8216;afile&#8217; into an
104
+ array.
105
+ </p>
106
+ <h3>Creating a <a href="../Rio.html">Rio</a></h3>
107
+ <p>
108
+ <a href="../Rio.html">Rio</a> extends the module <a
109
+ href="../../Kernel.html">Kernel</a> by adding one function <em>rio</em>,
110
+ which acts as a constructor returning a <a href="../Rio.html">Rio</a>. This
111
+ constructor builds a description of the resource the <a
112
+ href="../Rio.html">Rio</a> will access (usually a path). It does not open
113
+ the resource, check for its existance, or do anything except remember its
114
+ specifcation. <em>rio</em> returns the <a href="../Rio.html">Rio</a> which
115
+ can be chained to a <a href="../Rio.html">Rio</a> method as in this example
116
+ or stored in a variable. This coud have been written
117
+ </p>
118
+ <pre>
119
+ ario = rio('afile')
120
+ array = ario.readlines
121
+
122
+ ario = rio('afile')
123
+ </pre>
124
+ <p>
125
+ In this case the resource specified is a relative path. After the first
126
+ line the <a href="../Rio.html">Rio</a> does know or care whether it is a
127
+ path to a file nor whether it exists. <a href="../Rio.html">Rio</a>
128
+ provides many methods that only deal with a resource at this level, much as
129
+ the standard library classes Pathname and URI. It should be noted at this
130
+ point that <a href="../Rio.html">Rio</a> paths stored internally as a URL
131
+ as specified in RFC 1738 and therefore use slashes as separators. A
132
+ resource can also be specified without separators, because <em>rio</em>
133
+ interprets multiple arguments as parts of a path to be joined, and an array
134
+ as an array of parts to be joined. So the following all specify the same
135
+ resource.
136
+ </p>
137
+ <pre>
138
+ rio('adir/afile')
139
+ rio('adir','afile')
140
+ rio(%w/adir afile/)
141
+ </pre>
142
+ <p>
143
+ The rio constructor can be used to specify non-file-system resources, but
144
+ for this example we will restrict our discussion to paths to entities on
145
+ file-systems.
146
+ </p>
147
+ <pre>
148
+ array = ario.readlines
149
+ </pre>
150
+ <p>
151
+ Now that we have a <a href="../Rio.html">Rio</a>, we can call one of its
152
+ methods; in this case <em>readlines</em>. This is an example of using a <a
153
+ href="../Rio.html">Rio</a> as a proxy for the builtin IO#readlines. Given
154
+ the method <em>readlines</em>, the <a href="../Rio.html">Rio</a> opens
155
+ &#8216;afile&#8217; for reading, calls readlines on the resulting IO
156
+ object, closes the IO object, and returns the lines read.
157
+ </p>
158
+ <h2>Example 2</h2>
159
+ <pre>
160
+ rio('afile') &gt; rio('acopy')
161
+ </pre>
162
+ <p>
163
+ This copies the file &#8216;afile&#8217; into the file &#8216;acopy&#8217;.
164
+ </p>
165
+ <p>
166
+ The first things that happen here are the creation of the Rios. As
167
+ described in Example 1, when created a <a href="../Rio.html">Rio</a> simply
168
+ remembers the specifcation of its resource. In this case, a relative path
169
+ &#8216;afile&#8217; on the left and a relative path &#8216;acopy&#8217; on
170
+ the right.
171
+ </p>
172
+ <p>
173
+ Next the <a href="../Rio.html">Rio</a>#&gt; (copy-to) method is called on
174
+ the &#8216;afile&#8217; <a href="../Rio.html">Rio</a> with the
175
+ &#8216;acopy&#8217; <a href="../Rio.html">Rio</a> as its argument. If that
176
+ looks like a greater-than operator to you, think Unix shell, with Rios
177
+ &#8217;&gt;&#8217; is the copy-to operator.
178
+ </p>
179
+ <p>
180
+ Upon seeing the copy-to operator, the <a href="../Rio.html">Rio</a> has all
181
+ the information it needs to proceed. It determines that it must be opened
182
+ for reading, that its argument must be opened for writing, and that
183
+ it&#8217;s contents must be copied to the resource referenced by it&#8217;
184
+ argument &#8212; and that is what it does. Then it closes itself and its
185
+ argument.
186
+ </p>
187
+ <p>
188
+ Consider if we had written this example this way.
189
+ </p>
190
+ <pre>
191
+ afile = rio('afile')
192
+ acopy = rio('acopy')
193
+ afile &gt; acopy
194
+ </pre>
195
+ <p>
196
+ In this case we would still have variables referencing the Rios, and
197
+ perhaps we would like do things a little differently than described above.
198
+ Be assured that the selection of mode and automatic closing of files are
199
+ the default behaviour and can be changed. Say we wanted &#8216;afile&#8217;
200
+ to remain open so that we could rewind it and make a second copy, we might
201
+ do something like this:
202
+ </p>
203
+ <pre>
204
+ afile = rio('afile').nocloseoneof
205
+ afile &gt; rio('acopy1')
206
+ afile.rewind &gt; rio('acopy2')
207
+ afile.close
208
+ </pre>
209
+ <p>
210
+ Actually the &#8216;thinking-process&#8217; of the <a
211
+ href="../Rio.html">Rio</a> when it sees a copy-to operator is much more
212
+ complex that described above. If its argument had been a rio referencing a
213
+ directory, it would not have opened itself for reading, but instead used
214
+ FileUtils#cp to copy itself; if its argument had been a string, its
215
+ contents would have ended up in the string; If its argument had been an
216
+ array, its lines would been elements of that array; if its argument had
217
+ been a socket, the its contents would have been copied to the socket. See
218
+ the documentation for details.
219
+ </p>
220
+ <h2>Example 3.</h2>
221
+ <pre>
222
+ array = rio('afile').chomp.lines[0...10]
223
+ </pre>
224
+ <p>
225
+ This fills <tt>array</tt> with the first ten lines of &#8216;afile&#8217;,
226
+ with each line chomped
227
+ </p>
228
+ <p>
229
+ The casual observer mentioned above might think that <tt>lines</tt> returns
230
+ an array of lines and that this is a simple rewording of <tt>array = <a
231
+ href="http://0...10">rio('afile').readlines</a></tt> or even of <tt>array =
232
+ <a href="http://0...10">File.new('afile').readlines</a></tt>. They would be
233
+ wrong.
234
+ </p>
235
+ <p>
236
+ <tt>chomp</tt> is a configuration method which turns on chomp-mode and
237
+ returns the <a href="../Rio.html">Rio</a>. Chomp-mode causes all line
238
+ oriented read operations to perform a String#chomp on each line
239
+ </p>
240
+ <h3>Reading files</h3>
241
+ <p>
242
+ <a href="../Rio.html">Rio</a> provides four methods to select which part of
243
+ the file is read and how the file is divided. They are <tt>lines</tt>,
244
+ <tt>records</tt>, <tt>rows</tt> and <tt>bytes</tt>. Briefly, <tt>lines</tt>
245
+ specifies that the file should be read line by line and +bytes(n)+
246
+ specifies that the file should be read in <em>n</em> byte chunks. All four
247
+ take arguments which can be used to filter lines or chunks in or out. For
248
+ simple Rios <tt>records</tt> and <tt>rows</tt> only specify the filter
249
+ arguments and are provided for use be extensions. For example, the CSV
250
+ extension returns an array of the columns in a line when <tt>records</tt>
251
+ is used. In the absence of an extension <tt>records</tt> and <tt>rows</tt>
252
+ behave like <tt>lines</tt>.
253
+ </p>
254
+ <p>
255
+ First lets rewrite our example as:
256
+ </p>
257
+ <pre>
258
+ array = rio('afile').chomp.lines(0...10).to_a
259
+ </pre>
260
+ <p>
261
+ The arguments to lines specify which records are to be read. Arguments are
262
+ interpreted based on their class as follows:
263
+ </p>
264
+ <ul>
265
+ <li>Range - interpreted as a range of record numbers to be read
266
+
267
+ </li>
268
+ <li>Integer - interpreted as a one-element range
269
+
270
+ </li>
271
+ <li>RegExp - only matching records are processed
272
+
273
+ </li>
274
+ <li>Symbol - sent to each record, which is processed unless the result is false
275
+ or nil
276
+
277
+ </li>
278
+ <li>Proc - called for each record, the record is processed unless the return
279
+ value is false or nil
280
+
281
+ </li>
282
+ </ul>
283
+ <p>
284
+ See the documentation for details and examples.
285
+ </p>
286
+ <p>
287
+ In our example we have specified the Range (0...10). The <tt>lines</tt>
288
+ method is just configuring the <a href="../Rio.html">Rio</a>, it does not
289
+ trigger any IO operation. The fact that it was called and the arguments it
290
+ was called with are stored away and the <a href="../Rio.html">Rio</a> is
291
+ returned for further configuration or an actual IO operation. When an IO
292
+ operation is called the Range will be used to limit processing to the first
293
+ ten records. For example:
294
+ </p>
295
+ <pre>
296
+ rio('afile').lines(0...10).each { |line| ... } # block will be called for the first 10 records
297
+ rio('afile').lines(0...10).to_a # the first 10 records will be returned in an array
298
+ rio('afile').lines(0...10) &gt; rio('acopy') # the first 10 records will be copied to 'acopy'
299
+ </pre>
300
+ <p>
301
+ &quot;But wait&quot;, you say, &quot;In our original example the range was
302
+ an argument to the subscript operator, not to <tt>lines</tt>&quot;. This
303
+ works because the subscript operator processes its arguments as if they had
304
+ been arguments to the most-recently-called selection method and then calls
305
+ <tt>to_a</tt> on the rio. So our rewrite of the example does precisely the
306
+ same thing as the original
307
+ </p>
308
+ <p>
309
+ The big difference between the original example and the
310
+ casual-observer&#8217;s solution is that hers creates an array of the
311
+ entire contents and only returns the first 10 while the original only puts
312
+ 10 records into the array.
313
+ </p>
314
+ <p>
315
+ As a sidenote, Rios also have an optimization that can really help in
316
+ certain situations. If records are only selected using Ranges, it stops
317
+ iterating when it is beyond the point where it could possibly ever match.
318
+ This can make a dramatic difference when one is only interested in the
319
+ first few lines of very large files.
320
+ </p>
321
+ <h2>Example 4.</h2>
322
+ <pre>
323
+ rio('adir').rename.all.files('*.htm') do |file|
324
+ file.ext = '.html'
325
+ end
326
+ </pre>
327
+ <p>
328
+ This changes the extension of all .htm files below &#8216;adir&#8217; to
329
+ &#8217;.html&#8217;
330
+ </p>
331
+ <p>
332
+ First we create the rio as always.
333
+ </p>
334
+ <p>
335
+ Next we process the <tt>rename</tt> method. When used as it is here &#8212;
336
+ without arguments &#8212; it just turns on rename-mode and returns the <a
337
+ href="../Rio.html">Rio</a>.
338
+ </p>
339
+ <p>
340
+ <tt>all</tt> is another configuration method, which causes directories to
341
+ be processed recursively
342
+ </p>
343
+ <p>
344
+ <tt>files</tt> is another configuration method. In example 3 we used
345
+ <tt>lines</tt> to select what to process when iterating through a file.
346
+ <tt>files</tt> is used to select what to process when iterating through
347
+ directories. The arguments to <tt>files</tt> can be the same as those for
348
+ <tt>lines</tt> except that Ranges can not be used and globs can.
349
+ </p>
350
+ <p>
351
+ In our example, the argument to <tt>files</tt> is a string which is treated
352
+ as a glob. As with <tt>lines</tt>, <tt>files</tt> does not trigger any IO,
353
+ it just configures the <a href="../Rio.html">Rio</a>.
354
+ </p>
355
+ <h3>There&#8217;s no action</h3>
356
+ <p>
357
+ The previous examples had something that triggered IO: <tt>readlines</tt>,
358
+ <tt>to_a</tt>, <tt>each</tt>, <tt>&gt; (copy-to)</tt>. This example does
359
+ not. This example illustrates <a href="../Rio.html">Rio</a>&#8217;s
360
+ &#8216;implied each&#8217;. All the configuration methods will call each
361
+ for you if a block is given. So, because a block follows the files method,
362
+ it calls <tt>each</tt> and passes it the block.
363
+ </p>
364
+ <p>
365
+ Let&#8217;s recap. At this point we have a <a href="../Rio.html">Rio</a>
366
+ with a resource specified. We have configured with a couple of modes,
367
+ &#8216;rename&#8217;, and &#8216;all&#8217;, and we have limited the
368
+ elements we want to process to entries that are files and match the glob
369
+ &#8217;*.htm&#8217;. <tt>each</tt> causes the <a href="../Rio.html">Rio</a>
370
+ to open the directory and call the block for each entry that is both a file
371
+ and matches the glob. It was also configured with <tt>all</tt>,so it
372
+ descends into subdirectories to find further matches and calles the block
373
+ for each of them. The argument passed to the block is a <a
374
+ href="../Rio.html">Rio</a> referencing the entry on the file-system.
375
+ </p>
376
+ <p>
377
+ The <em>rename_mode</em> we set has had no effect on our iteration at all,
378
+ so why is it there? In general, configuration options that are not
379
+ applicable to a <a href="../Rio.html">Rio</a> are silently ignored,
380
+ however, for directories some of them are passed on to the Rios for each
381
+ entry when iterating. Since <tt>rename</tt> is one such option, The example
382
+ could have been written:
383
+ </p>
384
+ <pre>
385
+ rio('adir').all.files('*.htm') do |file|
386
+ file.rename.ext = '.html'
387
+ end
388
+ </pre>
389
+ <p>
390
+ The rename-with-no-args method affects the behaviour of the <tt>ext=</tt>
391
+ option. In this case, setting it for the directory, rather than for each
392
+ file in the block seems to make the intent of the code more clear, but that
393
+ is a matter of personal taste. See the documentation for more information
394
+ on the rename-with-no-args method
395
+ </p>
396
+ <h2>Suggested Reading</h2>
397
+ <ul>
398
+ <li><a href="SYNOPSIS.html">RIO::Doc::SYNOPSIS</a>
399
+
400
+ </li>
401
+ <li><a href="INTRO.html">RIO::Doc::INTRO</a>
402
+
403
+ </li>
404
+ <li><a href="HOWTO.html">RIO::Doc::HOWTO</a>
405
+
406
+ </li>
407
+ <li><a href="../Rio.html">RIO::Rio</a>
408
+
409
+ </li>
410
+ </ul>
411
+
412
+ </div>
413
+
414
+
415
+ </div>
416
+
417
+
418
+ </div>
419
+
420
+
421
+ <!-- if includes -->
422
+
423
+ <div id="section">
424
+
425
+
426
+
427
+
428
+
429
+
430
+
431
+
432
+ <!-- if method_list -->
433
+
434
+
435
+ </div>
436
+
437
+
438
+ <div id="validator-badges">
439
+ <p><small>Copyright &copy; 2005 Christopher Kleckner. <a href="http://www.gnu.org/licenses/gpl.html">All rights reserved</a>.</small></p>
440
+ </div>
441
+
442
+ </body>
443
+ </html>
@@ -0,0 +1,325 @@
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::SYNOPSIS</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
+ <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td class="class-mod"><strong>Module</strong></td>
53
+ <td class="class-name-in-header">RIO::Doc::SYNOPSIS</td>
54
+ <td rowspan="2" class="class-header-space-col"></td>
55
+ <td rowspan="2">
56
+ <a class="in-url" href="../../../files/lib/rio/doc/SYNOPSIS_rb.html">
57
+ lib/rio/doc/SYNOPSIS.rb
58
+ </a>
59
+ &nbsp;&nbsp;
60
+ </td>
61
+ </tr>
62
+
63
+ </table>
64
+ </div>
65
+ <!-- banner header -->
66
+
67
+ <div id="bodyContent">
68
+
69
+
70
+
71
+ <div id="contextContent">
72
+
73
+ <div id="description">
74
+ <h1><a href="../Rio.html">Rio</a> - Ruby I/O Comfort Class</h1>
75
+ <p>
76
+ <a href="../Rio.html">Rio</a> is a convenience class wrapping much of the
77
+ functionality of IO, File, Dir, Pathname, FileUtils, Tempfile, StringIO,
78
+ OpenURI, Zlib, and CSV.
79
+ </p>
80
+ <h2><a href="SYNOPSIS.html">SYNOPSIS</a></h2>
81
+ <p>
82
+ For the following assume:
83
+ </p>
84
+ <pre>
85
+ astring = &quot;&quot;
86
+ anarray = []
87
+ </pre>
88
+ <p>
89
+ Copy a file into a string
90
+ </p>
91
+ <pre>
92
+ rio('afile') &gt; astring
93
+ </pre>
94
+ <p>
95
+ Copy the chomped lines of a file into an array
96
+ </p>
97
+ <pre>
98
+ rio('afile').chomp &gt; anarray
99
+ </pre>
100
+ <p>
101
+ Copy a file into another file
102
+ </p>
103
+ <pre>
104
+ rio('afile') &gt; rio('another_file')
105
+ </pre>
106
+ <p>
107
+ Copy a file into a directory
108
+ </p>
109
+ <pre>
110
+ rio('afile') &gt; rio('adir')
111
+ </pre>
112
+ <p>
113
+ Copy an entire directory structure into another directory
114
+ </p>
115
+ <pre>
116
+ rio('adir') &gt; rio('another_directory')
117
+ </pre>
118
+ <p>
119
+ Copy a web page into a file
120
+ </p>
121
+ <pre>
122
+ rio('http://rubydoc.org/') &gt; rio('afile')
123
+ </pre>
124
+ <p>
125
+ Copy a file from a ftp server into a file
126
+ </p>
127
+ <pre>
128
+ rio('ftp://host/afile.gz') &gt; rio('afile.gz')
129
+ </pre>
130
+ <p>
131
+ Copy a gzipped file un-gzipping it
132
+ </p>
133
+ <pre>
134
+ rio('afile.gz').gzip &gt; rio('afile')
135
+ </pre>
136
+ <p>
137
+ Copy a file from a ftp server into a local file un-gzipping it
138
+ </p>
139
+ <pre>
140
+ rio('ftp://host/afile.gz').gzip &gt; rio('afile')
141
+ </pre>
142
+ <p>
143
+ Copy a plain file, gzipping it
144
+ </p>
145
+ <pre>
146
+ rio('afile.gz').gzip &lt; rio('afile')
147
+ </pre>
148
+ <p>
149
+ Iterate over the entries in a directory
150
+ </p>
151
+ <pre>
152
+ rio('adir').entries { |entrio| ... }
153
+ </pre>
154
+ <p>
155
+ Iterate over only the files in a directory
156
+ </p>
157
+ <pre>
158
+ rio('adir').files { |entrio| ... }
159
+ </pre>
160
+ <p>
161
+ Iterate over only the .rb files in a directory
162
+ </p>
163
+ <pre>
164
+ rio('adir').files('*.rb') { |entrio| ... }
165
+ </pre>
166
+ <p>
167
+ Create an array of the .rb entries in a directory
168
+ </p>
169
+ <pre>
170
+ anarray = rio('adir')['*.rb']
171
+ </pre>
172
+ <p>
173
+ Iterate over the .rb files in a directory and its subdirectories
174
+ </p>
175
+ <pre>
176
+ rio('adir').all.files('*.rb') { |entrio| ... }
177
+ </pre>
178
+ <p>
179
+ Create an array of the .rb entries in a directory and its subdirectories
180
+ </p>
181
+ <pre>
182
+ anarray = rio('adir').all['*.rb']
183
+ </pre>
184
+ <p>
185
+ Create an array of the .rb files in a directory and its subdirectories
186
+ </p>
187
+ <pre>
188
+ anarray = rio('adir').all.files['*.rb']
189
+ </pre>
190
+ <p>
191
+ Copy an entire directory structure but only the .rb files from a directory
192
+ and its subdirectories into another directory
193
+ </p>
194
+ <pre>
195
+ rio('adir').dirs.files('*.rb') &gt; rio('another_directory')
196
+ </pre>
197
+ <p>
198
+ Iterate over the chomped lines of a file
199
+ </p>
200
+ <pre>
201
+ rio('afile').chomp.lines { |line| ... }
202
+ </pre>
203
+ <p>
204
+ Put the chomped lines of a file into an array
205
+ </p>
206
+ <pre>
207
+ anarray = rio('afile').chomp.lines[]
208
+ </pre>
209
+ <p>
210
+ Iterate over the first 10 chomped lines of a file
211
+ </p>
212
+ <pre>
213
+ rio('afile').chomp.lines(0..9) { |line| ... }
214
+ </pre>
215
+ <p>
216
+ Put the first 10 chomped lines of a file into an array
217
+ </p>
218
+ <pre>
219
+ anarray = rio('afile').chomp.lines[0..9]
220
+ </pre>
221
+ <p>
222
+ Copy the first 10 lines of a file into another file
223
+ </p>
224
+ <pre>
225
+ rio('afile').lines(0..9) &gt; rio('another_file')
226
+ </pre>
227
+ <p>
228
+ Copy the first 10 lines of a file to stdout
229
+ </p>
230
+ <pre>
231
+ rio('afile').lines(0..9) &gt; rio(?-)
232
+ </pre>
233
+ <p>
234
+ Copy the first 10 lines of a gzipped file to stdout
235
+ </p>
236
+ <pre>
237
+ rio('afile.gz').gzip.lines(0..9) &gt; rio(?-)
238
+ </pre>
239
+ <p>
240
+ Copy the first 10 lines of a gzipped file on an ftp server to stdout
241
+ </p>
242
+ <pre>
243
+ rio('ftp://host/afile.gz').gzip.lines(0..9) &gt; rio(?-)
244
+ </pre>
245
+ <p>
246
+ Put the first 100 chomped lines of a gzipped file into an array
247
+ </p>
248
+ <pre>
249
+ anarray = rio('afile.gz').gzip[0...100]
250
+ </pre>
251
+ <p>
252
+ Copy the output of th ps command into an array, skipping the header line
253
+ and the ps command entry
254
+ </p>
255
+ <pre>
256
+ rio(?-,'ps -a').nolines(0,/ps$/) &gt; anarray
257
+ </pre>
258
+ <p>
259
+ Prompt for input and return what was typed
260
+ </p>
261
+ <pre>
262
+ ans = rio(?-).print(&quot;Type Something: &quot;).chomp.gets
263
+ </pre>
264
+ <p>
265
+ Change the extension of all files with the extension &#8217;.htm&#8217; in
266
+ a directory and its subdirectories to have the extension
267
+ &#8217;.html&#8217;
268
+ </p>
269
+ <pre>
270
+ rio('adir').rename.all.files('*.htm') do |htmfile|
271
+ htmfile.extname = '.html'
272
+ end
273
+ </pre>
274
+ <p>
275
+ Create a symbolic link &#8216;asymlink&#8217; in &#8216;adir&#8217; which
276
+ refers to &#8216;adir/afile&#8216;
277
+ </p>
278
+ <pre>
279
+ rio('adir/afile').symlinke('adir/asymlink')
280
+ </pre>
281
+ <h3>SUGGESTED READING</h3>
282
+ <ul>
283
+ <li><a href="INTRO.html">RIO::Doc::INTRO</a>
284
+
285
+ </li>
286
+ <li><a href="HOWTO.html">RIO::Doc::HOWTO</a>
287
+
288
+ </li>
289
+ <li><a href="../Rio.html">RIO::Rio</a>
290
+
291
+ </li>
292
+ </ul>
293
+
294
+ </div>
295
+
296
+
297
+ </div>
298
+
299
+
300
+ </div>
301
+
302
+
303
+ <!-- if includes -->
304
+
305
+ <div id="section">
306
+
307
+
308
+
309
+
310
+
311
+
312
+
313
+
314
+ <!-- if method_list -->
315
+
316
+
317
+ </div>
318
+
319
+
320
+ <div id="validator-badges">
321
+ <p><small>Copyright &copy; 2005 Christopher Kleckner. <a href="http://www.gnu.org/licenses/gpl.html">All rights reserved</a>.</small></p>
322
+ </div>
323
+
324
+ </body>
325
+ </html>