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,298 @@
1
+ #!/usr/local/bin/ruby
2
+ if $0 == __FILE__
3
+ Dir.chdir File.dirname(__FILE__)+'/../'
4
+ $:.unshift File.expand_path('../lib/')
5
+ end
6
+
7
+ require 'rio'
8
+ require 'test/unit'
9
+ require 'test/unit/testsuite'
10
+
11
+ class TC_RIO_symlink0 < Test::Unit::TestCase
12
+ require 'extensions/symbol'
13
+ def assert!(a,msg="negative assertion")
14
+ assert((!(a)),msg)
15
+ end
16
+ def smap(a) a.map( &:to_s ) end
17
+ def tdir() rio(%w/qp symlink0/) end
18
+ def mkafile(*args)
19
+ file = rio(*args)
20
+ file < (0..1).map { |i| "L#{i}:#{file.to_s}\n" }
21
+ file
22
+ end
23
+ def setup
24
+ #$trace_states = true
25
+ @cwd = ::Dir.getwd
26
+ tdir.mkpath.chdir
27
+ end
28
+ def teardown
29
+ ::Dir.chdir @cwd
30
+ end
31
+ def check_link(lnk,dst)
32
+ assert(lnk.symlink?, "symlink?")
33
+ assert_equal('link',lnk.ftype)
34
+ assert_equal(dst.exist?,lnk.exist?)
35
+ if dst.exist?
36
+ assert_equal(dst.slurp,lnk.slurp)
37
+ end
38
+ end
39
+ def compare_links(exp,ans)
40
+ assert_equal(exp.exist?,ans.exist?)
41
+ assert_equal(exp.symlink?,ans.symlink?)
42
+ assert_equal(exp.ftype,ans.ftype)
43
+ assert_equal(exp.readlink.to_s,ans.readlink.to_s)
44
+ end
45
+ def test_delete
46
+ rio('delete').delete!.mkpath.chdir
47
+
48
+ file = mkafile('f0')
49
+ link = rio('l0')
50
+ file.symlink(link)
51
+
52
+ assert(file.exist?)
53
+ assert(link.exist?)
54
+ assert(link.symlink?)
55
+
56
+ link.delete
57
+ assert(file.file?,"deleted link, file still exists")
58
+ assert!(link.exist?,"link is deleted")
59
+ assert!(link.symlink?,"link is gone")
60
+
61
+ file.symlink(link)
62
+ assert(file.file?,"file exists")
63
+ assert(link.exist?,"link exists")
64
+ assert(link.symlink?,"link is a symlink")
65
+
66
+ file.delete
67
+ assert!(file.exist?,"file deleted")
68
+ assert!(link.exist?,"file deleted, link.exist? returns false")
69
+ assert(link.symlink?,"file deleted, link is a symlink")
70
+
71
+ link.touch
72
+ assert(file.exist?,"link.touch creates a file")
73
+ assert(file.file?,"link.touch creates a file")
74
+
75
+ file.delete
76
+ assert!(file.exist?,"file deleted")
77
+ assert!(link.exist?,"file deleted, link.exist? returns false")
78
+ assert(link.symlink?,"file deleted, link is a symlink")
79
+
80
+ link.mkdir
81
+ assert(file.exist?,"link.touch creates a directory")
82
+ assert(file.directory?,"link.touch creates a directory")
83
+
84
+
85
+ rio('..').chdir
86
+ end
87
+ def test_create
88
+ rio('create').delete!.mkpath.chdir
89
+
90
+ file = mkafile('f0')
91
+ link = rio('l0')
92
+ file.symlink(link)
93
+
94
+ assert(file.exist?)
95
+ assert(link.exist?)
96
+ assert(link.symlink?)
97
+ file.delete
98
+ assert!(file.exist?)
99
+ assert!(link.exist?)
100
+ assert(link.symlink?)
101
+
102
+ begin
103
+ afile = rio('fruby')
104
+ alink = rio('alink')
105
+
106
+ ::FileUtils.touch(afile.to_s)
107
+ assert(afile.exist?)
108
+ assert(afile.file?)
109
+
110
+ ::File.symlink(afile.to_s,alink.delete.to_s)
111
+ check_link(alink,afile)
112
+ assert(afile.file?)
113
+ assert(alink.exist?)
114
+ assert(alink.symlink?)
115
+ assert(alink.file?)
116
+
117
+ ::File.delete(afile.to_s)
118
+ assert!(afile.exist?)
119
+ assert!(alink.exist?)
120
+ assert!(alink.file?)
121
+ assert(alink.symlink?)
122
+
123
+ ::FileUtils.touch(alink)
124
+ assert(afile.file?,"created a file via a symlink")
125
+ assert(alink.exist?,"created a file via a symlink, link exists")
126
+ assert(alink.symlink?,"created a file via a symlink, link is a symlink")
127
+ assert(alink.file?,"created a file via a symlink, link is a file")
128
+
129
+ ::File.delete(afile.to_s)
130
+ assert!(afile.exist?)
131
+ assert(alink.symlink?)
132
+
133
+ rlink = ::File.readlink(alink.to_s)
134
+ assert_equal(afile.to_s,rlink.to_s)
135
+
136
+ ::FileUtils.touch(rlink)
137
+ assert(afile.file?,"created a file via a readlink/symlink")
138
+ assert(alink.exist?,"created a file via a readlink/symlink, link exists")
139
+ assert(alink.symlink?,"created a file via a readlink/symlink, link is a symlink")
140
+ assert(alink.file?,"created a file via a readlink/symlink, link is a file")
141
+ end
142
+
143
+ begin
144
+ adir = rio('druby')
145
+ alink = rio('ldruby')
146
+
147
+ ::Dir.mkdir(adir.to_s)
148
+ assert(adir.exist?)
149
+ assert(adir.dir?)
150
+
151
+ ::File.symlink(adir.to_s,alink.delete.to_s)
152
+
153
+ begin
154
+ assert(adir.dir?)
155
+ assert(alink.exist?)
156
+ assert(alink.symlink?)
157
+ assert(alink.dir?)
158
+
159
+ assert_raise(Errno::EEXIST) {
160
+ ::Dir.mkdir(alink.to_s)
161
+ }
162
+ end
163
+
164
+ ::Dir.delete(adir.to_s)
165
+
166
+ begin
167
+ assert!(adir.exist?)
168
+ assert!(alink.exist?)
169
+ assert!(alink.dir?)
170
+ assert(alink.symlink?)
171
+
172
+ assert_raise(Errno::EEXIST) {
173
+ ::Dir.mkdir(alink.to_s)
174
+ }
175
+ end
176
+
177
+ begin
178
+ assert!(adir.exist?)
179
+ assert!(alink.exist?)
180
+ assert!(alink.dir?)
181
+ assert(alink.symlink?)
182
+
183
+ rlink = ::File.readlink(alink.to_s)
184
+ assert_equal(adir.to_s,rlink.to_s)
185
+
186
+ ::Dir.mkdir(rlink)
187
+ assert(adir.dir?,"created a dir via a readlink/symlink")
188
+ assert(alink.exist?,"created a dir via a readlink/symlink, link exists")
189
+ assert(alink.symlink?,"created a dir via a readlink/symlink, link is a symlink")
190
+ assert(alink.dir?,"created a dir via a readlink/symlink, link is a file")
191
+ end
192
+
193
+ end
194
+
195
+ begin
196
+ adir = rio('drio')
197
+ alink = rio('ldrio')
198
+
199
+ adir.mkdir
200
+ assert(adir.exist?)
201
+ assert(adir.dir?)
202
+
203
+ adir.symlink(alink.delete)
204
+
205
+ begin
206
+ assert(adir.dir?)
207
+ assert(alink.exist?)
208
+ assert(alink.symlink?)
209
+ assert(alink.dir?)
210
+
211
+ assert_nothing_raised(Errno::EEXIST) {
212
+ adir.mkdir
213
+ }
214
+ end
215
+
216
+ adir.delete
217
+
218
+ begin
219
+ assert!(adir.exist?)
220
+ assert!(alink.exist?)
221
+ assert!(alink.dir?)
222
+ assert(alink.symlink?)
223
+ #$trace_states = true
224
+ assert_nothing_raised(Errno::EEXIST) {
225
+ alink.mkdir
226
+ }
227
+ #$trace_states = false
228
+ assert(adir.dir?,"created a dir via a symlink")
229
+ assert(alink.exist?,"created a dir via a symlink, link exists")
230
+ assert(alink.symlink?,"created a dir via a symlink, link is a symlink")
231
+ assert(alink.dir?,"created a dir via a symlink, link is a directory")
232
+
233
+ end
234
+
235
+ adir.delete
236
+
237
+ begin
238
+ assert!(adir.exist?)
239
+ assert!(alink.exist?)
240
+ assert!(alink.dir?)
241
+ assert(alink.symlink?)
242
+
243
+ rlink = alink.readlink
244
+ assert_equal(adir.to_s,rlink.to_s)
245
+
246
+ rlink.mkdir
247
+ assert(adir.dir?,"created a dir via a readlink/symlink")
248
+ assert(alink.exist?,"created a dir via a readlink/symlink, link exists")
249
+ assert(alink.symlink?,"created a dir via a readlink/symlink, link is a symlink")
250
+ assert(alink.dir?,"created a dir via a readlink/symlink, link is a directory")
251
+ end
252
+
253
+ end
254
+
255
+ begin
256
+ afile = rio('frio')
257
+ alink = rio('lrio')
258
+
259
+ afile.touch
260
+ assert(afile.exist?)
261
+ assert(afile.file?)
262
+
263
+ afile.symlink(alink.delete)
264
+ check_link(alink,afile)
265
+ assert(afile.file?)
266
+ assert(alink.exist?)
267
+ assert(alink.symlink?)
268
+ assert(alink.file?)
269
+
270
+ afile.delete
271
+ assert!(afile.exist?)
272
+ assert!(alink.exist?)
273
+ assert!(alink.file?)
274
+ assert(alink.symlink?)
275
+
276
+ alink.touch
277
+ assert(afile.file?,"created a file via a symlink")
278
+ assert(alink.exist?,"created a file via a symlink, link exists")
279
+ assert(alink.symlink?,"created a file via a symlink, link is a symlink")
280
+ assert(alink.file?,"created a file via a symlink, link is a file")
281
+
282
+ afile.delete
283
+ assert!(afile.exist?)
284
+ assert(alink.symlink?)
285
+
286
+ rlink = alink.readlink
287
+ assert_equal(afile.to_s,rlink.to_s)
288
+
289
+ rlink.touch
290
+ assert(afile.file?,"created a file via a readlink/symlink")
291
+ assert(alink.exist?,"created a file via a readlink/symlink, link exists")
292
+ assert(alink.symlink?,"created a file via a readlink/symlink, link is a symlink")
293
+ assert(alink.file?,"created a file via a readlink/symlink, link is a file")
294
+ end
295
+
296
+ rio('..').chdir
297
+ end
298
+ end
@@ -0,0 +1,115 @@
1
+ #!/usr/local/bin/ruby
2
+ if $0 == __FILE__
3
+ Dir.chdir File.dirname(__FILE__)+'/../'
4
+ $:.unshift File.expand_path('../lib/')
5
+ end
6
+
7
+ require 'rio'
8
+ require 'test/unit'
9
+ require 'test/unit/testsuite'
10
+
11
+ class TC_RIO_symlink1 < Test::Unit::TestCase
12
+ require 'extensions/symbol'
13
+ def assert!(a,msg="negative assertion")
14
+ assert((!(a)),msg)
15
+ end
16
+ def smap(a) a.map( &:to_s ) end
17
+ def tdir() rio(%w/qp symlink1/) end
18
+ def mkafile(*args)
19
+ file = rio(*args)
20
+ file < (0..1).map { |i| "L#{i}:#{file.to_s}\n" }
21
+ file
22
+ end
23
+ def mkalinesfile(n_lines,*args)
24
+ file = rio(*args)
25
+ file < (0...n_lines).map { |i| "L#{i}:#{file.to_s}\n" }
26
+ file
27
+ end
28
+ def setup
29
+ #$trace_states = true
30
+ @cwd = ::Dir.getwd
31
+ tdir.mkpath.chdir
32
+ end
33
+ def teardown
34
+ ::Dir.chdir @cwd
35
+ end
36
+ def test_lstat
37
+ rio('lstat').delete!.mkpath.chdir
38
+
39
+ file = mkalinesfile(100,'f0').symlink( link = rio('l0') )
40
+ assert(file.file?)
41
+ assert(link.file?)
42
+ assert(link.symlink?)
43
+
44
+ assert_equal(file.stat.size,link.stat.size)
45
+ assert_not_equal(file.stat.size,link.lstat.size)
46
+ assert_raise(RIO::Exception::CantHandle) {
47
+ file.lstat
48
+ }
49
+
50
+ rio('..').chdir
51
+ end
52
+ def test_stream
53
+ rio('stream').delete!.mkpath.chdir
54
+
55
+ file = mkalinesfile(10,'f0').symlink( link = rio('l0') )
56
+ assert(file.file?)
57
+ assert(link.file?)
58
+ assert(link.symlink?)
59
+ lines = file[]
60
+
61
+ rl = link.readlink
62
+ assert(link.file?)
63
+ assert(link.symlink?)
64
+ assert_equal(lines[0],link.getrec)
65
+ assert(link.open?)
66
+
67
+ assert_equal(rl.to_s,link.readlink.to_s)
68
+ assert(link.open?)
69
+ assert_equal(lines[1],link.getrec)
70
+
71
+ link.lstat
72
+ assert(link.open?)
73
+ assert_equal(lines[2],link.getrec)
74
+
75
+ link.stat
76
+ assert(link.open?)
77
+ assert_equal(lines[3],link.getrec)
78
+
79
+ link.delete
80
+ assert(link.closed?)
81
+ assert!(link.exist?)
82
+ assert!(link.symlink?)
83
+
84
+ rio('..').chdir
85
+ end
86
+ def test_readlink
87
+ rio('readlink').delete!.mkpath.chdir
88
+
89
+ file = mkafile('f0').symlink( link = rio('l0') )
90
+ assert(file.file?)
91
+ assert(link.file?)
92
+ assert(link.symlink?)
93
+
94
+ assert_equal(file,link.readlink)
95
+ assert_not_equal(file,link)
96
+ assert_raise(RIO::Exception::CantHandle) {
97
+ file.readlink
98
+ }
99
+
100
+ rio('..').chdir
101
+ end
102
+ def test_ftype
103
+ rio('ftype').delete!.mkpath.chdir
104
+
105
+ file = mkafile('f0').symlink( link = rio('l0') )
106
+ assert(file.file?)
107
+ assert(link.file?)
108
+ assert(link.symlink?)
109
+
110
+ assert_equal('file',file.ftype)
111
+ assert_equal('link',link.ftype)
112
+
113
+ rio('..').chdir
114
+ end
115
+ end
@@ -0,0 +1,152 @@
1
+ require 'rio'
2
+ require 'test/unit'
3
+ require 'test/unit/testsuite'
4
+ require 'extensions/symbol'
5
+
6
+
7
+ module RIOSupport
8
+ def supports_symlink
9
+ yes = true
10
+ begin
11
+ File.symlink('dummy','ldummy')
12
+ File.delete('ldummy')
13
+ rescue NotImplementedError
14
+ yes = false
15
+ rescue
16
+ end
17
+ yes
18
+ end
19
+ module_function :supports_symlink
20
+
21
+ end
22
+ $supports_symlink = RIOSupport.supports_symlink
23
+ module RIO_TestCase
24
+ module Util
25
+ def make_lines_file(n_lines=8,*args)
26
+ file = rio(*args)
27
+ lines = (0...n_lines).map { |i| "L#{i}:#{file}" + $/ }
28
+ lines.each do |line|
29
+ file.puts(line)
30
+ end
31
+ file.close
32
+ [lines,file]
33
+ end
34
+ module_function :make_lines_file
35
+ end
36
+
37
+ T_ROOT = 'qp'
38
+ def _t_dir_from_class()
39
+ self.class.to_s.sub(/^TC_/,'')
40
+ end
41
+ def tdir()
42
+ rio(T_ROOT,_t_dir_from_class())
43
+ end
44
+ def assert!(a,msg="negative assertion")
45
+ assert((!(a)),msg)
46
+ end
47
+ def assert_array_equal(a,b,msg="array same regardless of order")
48
+ assert_equal(smap(a).sort,smap(b).sort,msg)
49
+ end
50
+ def smap(a) a.map( &:to_s ) end
51
+ def mkafile(*args)
52
+ file = rio(*args)
53
+ file < (0..1).map { |i| "L#{i}:#{file.to_s}\n" }
54
+ file
55
+ end
56
+
57
+ def mklines(n_lines=8)
58
+ (0...n_lines).map { |i| "L#{i}\n" }
59
+ end
60
+ def mkalinesfile(n_lines,*args)
61
+ file = rio(*args)
62
+ file < (0...n_lines).map { |i| "L#{i}:#{file.to_s}\n" }
63
+ file
64
+ end
65
+ def lines_file(n_lines=8,*args)
66
+ Util::make_lines_file(n_lines,*args)
67
+ end
68
+ def file_lines(n_lines=8)
69
+ file = mkalinesfile(n_lines,'f1')
70
+ lines = file[]
71
+ (2..4).each do |n|
72
+ lines[n] = '#' + lines[n]
73
+ end
74
+ (0..3).each do |n|
75
+ lines[n].sub!(/f1/,'f2')
76
+ end
77
+ file < lines
78
+ [file,lines]
79
+ end
80
+ def setup
81
+ #$trace_states = true
82
+ @cwd = ::Dir.getwd
83
+ tdir.mkpath.chdir
84
+ end
85
+ def teardown
86
+ ::Dir.chdir @cwd
87
+ end
88
+ end
89
+ module Test
90
+ module RIO
91
+ class TestCase < Unit::TestCase
92
+ def setup()
93
+ return if self.class == Test::RIO::TestCase
94
+ @cwd = ::Dir.getwd
95
+ tdir.mkpath.chdir
96
+ end
97
+ def teardown
98
+ return if self.class == Test::RIO::TestCase
99
+ ::Dir.chdir @cwd
100
+ end
101
+ def assert!(a,msg="negative assertion")
102
+ assert((!(a)),msg)
103
+ end
104
+ def assert_array_equal(a,b,msg="array same regardless of order")
105
+ assert_equal(smap(a).sort,smap(b).sort,msg)
106
+ end
107
+ def assert_dirs_equal(exp,d,msg="")
108
+ exp.each do |ent|
109
+ ds = rio(d,ent.filename)
110
+ assert(ds.exist?,"entry '#{ds}' exists")
111
+ assert_equal(ent.ftype,ds.ftype,"same ftype")
112
+ assert_rios_equal(ent,ds,"sub rios are the same")
113
+ end
114
+ end
115
+ def assert_rios_equal(exp,ans,msg="")
116
+ case
117
+ when exp.file?
118
+ assert(ans.file?,"entry is a file")
119
+ assert_equal(exp.readlines,ans.readlines,"file has same contents")
120
+ when exp.dir?
121
+ assert(ans.dir?,"entry is a dir")
122
+ assert_dirs_equal(exp,ans,"directories are the same")
123
+ end
124
+ end
125
+
126
+ def smap(a) a.map( &:to_s ) end
127
+ def self.make_lines_file(n_lines=8,*args)
128
+ file = rio(*args)
129
+ lines = (0...n_lines).map { |i| "L#{i}:#{file}" + $/ }
130
+ lines.each do |line|
131
+ file.puts(line)
132
+ end
133
+ file.close
134
+ [lines,file]
135
+ end
136
+ T_ROOT = 'qp'
137
+ def _t_dir_from_class()
138
+ self.class.to_s.sub(/^TC_/,'')
139
+ end
140
+ def self.tdir_from_class()
141
+ self.to_s.sub(/^TC_/,'')
142
+ end
143
+ def self.tdir()
144
+ rio(T_ROOT,tdir_from_class())
145
+ end
146
+ def tdir()
147
+ rio(T_ROOT,_t_dir_from_class())
148
+ end
149
+ def default_test; end
150
+ end
151
+ end
152
+ end