rio 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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>