rio 0.3.4 → 0.3.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (349) hide show
  1. data/ChangeLog +287 -0
  2. data/Rakefile +7 -9
  3. data/VERSION +1 -1
  4. data/doc/ANNOUNCE +20 -1
  5. data/doc/RELEASE_NOTES +41 -0
  6. data/doc/rdoc/classes/Kernel.html +181 -0
  7. data/doc/rdoc/classes/Kernel.src/M000214.html +18 -0
  8. data/doc/rdoc/classes/RIO.html +621 -0
  9. data/doc/rdoc/classes/RIO.src/M000001.html +18 -0
  10. data/doc/rdoc/classes/RIO.src/M000002.html +18 -0
  11. data/doc/rdoc/classes/RIO.src/M000003.html +18 -0
  12. data/doc/rdoc/classes/RIO/Doc.html +138 -0
  13. data/doc/rdoc/classes/RIO/Doc/HOWTO.html +1040 -0
  14. data/doc/rdoc/classes/RIO/Doc/INTRO.html +1613 -0
  15. data/doc/rdoc/classes/RIO/Doc/MISC.html +443 -0
  16. data/doc/rdoc/classes/RIO/Doc/SYNOPSIS.html +338 -0
  17. data/doc/rdoc/classes/RIO/IF.html +114 -0
  18. data/doc/rdoc/classes/RIO/IF/CSV.html +202 -0
  19. data/doc/rdoc/classes/RIO/IF/CSV.src/M000004.html +19 -0
  20. data/doc/rdoc/classes/RIO/IF/CSV.src/M000005.html +16 -0
  21. data/doc/rdoc/classes/RIO/IF/CSV.src/M000006.html +16 -0
  22. data/doc/rdoc/classes/RIO/IF/YAML.html +499 -0
  23. data/doc/rdoc/classes/RIO/IF/YAML.src/M000007.html +19 -0
  24. data/doc/rdoc/classes/RIO/IF/YAML.src/M000008.html +16 -0
  25. data/doc/rdoc/classes/RIO/IF/YAML.src/M000009.html +16 -0
  26. data/doc/rdoc/classes/RIO/IF/YAML.src/M000010.html +16 -0
  27. data/doc/rdoc/classes/RIO/IF/YAML.src/M000011.html +16 -0
  28. data/doc/rdoc/classes/RIO/IF/YAML.src/M000012.html +16 -0
  29. data/doc/rdoc/classes/RIO/IF/YAML.src/M000013.html +16 -0
  30. data/doc/rdoc/classes/RIO/IF/YAML.src/M000014.html +16 -0
  31. data/doc/rdoc/classes/RIO/IF/YAML.src/M000015.html +16 -0
  32. data/doc/rdoc/classes/RIO/IF/YAML.src/M000016.html +16 -0
  33. data/doc/rdoc/classes/RIO/IF/YAML.src/M000017.html +16 -0
  34. data/doc/rdoc/classes/RIO/Rio.html +7121 -0
  35. data/doc/rdoc/classes/RIO/Rio.src/M000018.html +18 -0
  36. data/doc/rdoc/classes/RIO/Rio.src/M000019.html +20 -0
  37. data/doc/rdoc/classes/RIO/Rio.src/M000020.html +27 -0
  38. data/doc/rdoc/classes/RIO/Rio.src/M000021.html +16 -0
  39. data/doc/rdoc/classes/RIO/Rio.src/M000023.html +19 -0
  40. data/doc/rdoc/classes/RIO/Rio.src/M000024.html +20 -0
  41. data/doc/rdoc/classes/RIO/Rio.src/M000025.html +16 -0
  42. data/doc/rdoc/classes/RIO/Rio.src/M000026.html +16 -0
  43. data/doc/rdoc/classes/RIO/Rio.src/M000027.html +16 -0
  44. data/doc/rdoc/classes/RIO/Rio.src/M000028.html +16 -0
  45. data/doc/rdoc/classes/RIO/Rio.src/M000029.html +16 -0
  46. data/doc/rdoc/classes/RIO/Rio.src/M000030.html +16 -0
  47. data/doc/rdoc/classes/RIO/Rio.src/M000031.html +16 -0
  48. data/doc/rdoc/classes/RIO/Rio.src/M000032.html +16 -0
  49. data/doc/rdoc/classes/RIO/Rio.src/M000033.html +16 -0
  50. data/doc/rdoc/classes/RIO/Rio.src/M000034.html +16 -0
  51. data/doc/rdoc/classes/RIO/Rio.src/M000035.html +16 -0
  52. data/doc/rdoc/classes/RIO/Rio.src/M000036.html +16 -0
  53. data/doc/rdoc/classes/RIO/Rio.src/M000037.html +16 -0
  54. data/doc/rdoc/classes/RIO/Rio.src/M000038.html +16 -0
  55. data/doc/rdoc/classes/RIO/Rio.src/M000039.html +16 -0
  56. data/doc/rdoc/classes/RIO/Rio.src/M000040.html +16 -0
  57. data/doc/rdoc/classes/RIO/Rio.src/M000041.html +16 -0
  58. data/doc/rdoc/classes/RIO/Rio.src/M000042.html +16 -0
  59. data/doc/rdoc/classes/RIO/Rio.src/M000043.html +16 -0
  60. data/doc/rdoc/classes/RIO/Rio.src/M000044.html +16 -0
  61. data/doc/rdoc/classes/RIO/Rio.src/M000045.html +16 -0
  62. data/doc/rdoc/classes/RIO/Rio.src/M000046.html +16 -0
  63. data/doc/rdoc/classes/RIO/Rio.src/M000047.html +16 -0
  64. data/doc/rdoc/classes/RIO/Rio.src/M000048.html +16 -0
  65. data/doc/rdoc/classes/RIO/Rio.src/M000049.html +16 -0
  66. data/doc/rdoc/classes/RIO/Rio.src/M000050.html +16 -0
  67. data/doc/rdoc/classes/RIO/Rio.src/M000051.html +16 -0
  68. data/doc/rdoc/classes/RIO/Rio.src/M000052.html +16 -0
  69. data/doc/rdoc/classes/RIO/Rio.src/M000053.html +16 -0
  70. data/doc/rdoc/classes/RIO/Rio.src/M000054.html +16 -0
  71. data/doc/rdoc/classes/RIO/Rio.src/M000055.html +16 -0
  72. data/doc/rdoc/classes/RIO/Rio.src/M000056.html +16 -0
  73. data/doc/rdoc/classes/RIO/Rio.src/M000057.html +16 -0
  74. data/doc/rdoc/classes/RIO/Rio.src/M000058.html +16 -0
  75. data/doc/rdoc/classes/RIO/Rio.src/M000059.html +16 -0
  76. data/doc/rdoc/classes/RIO/Rio.src/M000060.html +16 -0
  77. data/doc/rdoc/classes/RIO/Rio.src/M000061.html +16 -0
  78. data/doc/rdoc/classes/RIO/Rio.src/M000062.html +16 -0
  79. data/doc/rdoc/classes/RIO/Rio.src/M000063.html +16 -0
  80. data/doc/rdoc/classes/RIO/Rio.src/M000064.html +16 -0
  81. data/doc/rdoc/classes/RIO/Rio.src/M000065.html +16 -0
  82. data/doc/rdoc/classes/RIO/Rio.src/M000066.html +16 -0
  83. data/doc/rdoc/classes/RIO/Rio.src/M000067.html +16 -0
  84. data/doc/rdoc/classes/RIO/Rio.src/M000068.html +16 -0
  85. data/doc/rdoc/classes/RIO/Rio.src/M000069.html +16 -0
  86. data/doc/rdoc/classes/RIO/Rio.src/M000070.html +16 -0
  87. data/doc/rdoc/classes/RIO/Rio.src/M000071.html +16 -0
  88. data/doc/rdoc/classes/RIO/Rio.src/M000072.html +16 -0
  89. data/doc/rdoc/classes/RIO/Rio.src/M000073.html +16 -0
  90. data/doc/rdoc/classes/RIO/Rio.src/M000074.html +16 -0
  91. data/doc/rdoc/classes/RIO/Rio.src/M000075.html +16 -0
  92. data/doc/rdoc/classes/RIO/Rio.src/M000076.html +16 -0
  93. data/doc/rdoc/classes/RIO/Rio.src/M000077.html +16 -0
  94. data/doc/rdoc/classes/RIO/Rio.src/M000078.html +16 -0
  95. data/doc/rdoc/classes/RIO/Rio.src/M000079.html +16 -0
  96. data/doc/rdoc/classes/RIO/Rio.src/M000080.html +16 -0
  97. data/doc/rdoc/classes/RIO/Rio.src/M000081.html +16 -0
  98. data/doc/rdoc/classes/RIO/Rio.src/M000082.html +16 -0
  99. data/doc/rdoc/classes/RIO/Rio.src/M000083.html +16 -0
  100. data/doc/rdoc/classes/RIO/Rio.src/M000084.html +16 -0
  101. data/doc/rdoc/classes/RIO/Rio.src/M000085.html +16 -0
  102. data/doc/rdoc/classes/RIO/Rio.src/M000086.html +16 -0
  103. data/doc/rdoc/classes/RIO/Rio.src/M000087.html +16 -0
  104. data/doc/rdoc/classes/RIO/Rio.src/M000088.html +16 -0
  105. data/doc/rdoc/classes/RIO/Rio.src/M000089.html +16 -0
  106. data/doc/rdoc/classes/RIO/Rio.src/M000090.html +16 -0
  107. data/doc/rdoc/classes/RIO/Rio.src/M000091.html +16 -0
  108. data/doc/rdoc/classes/RIO/Rio.src/M000092.html +16 -0
  109. data/doc/rdoc/classes/RIO/Rio.src/M000093.html +16 -0
  110. data/doc/rdoc/classes/RIO/Rio.src/M000094.html +16 -0
  111. data/doc/rdoc/classes/RIO/Rio.src/M000095.html +16 -0
  112. data/doc/rdoc/classes/RIO/Rio.src/M000096.html +16 -0
  113. data/doc/rdoc/classes/RIO/Rio.src/M000097.html +16 -0
  114. data/doc/rdoc/classes/RIO/Rio.src/M000098.html +16 -0
  115. data/doc/rdoc/classes/RIO/Rio.src/M000099.html +16 -0
  116. data/doc/rdoc/classes/RIO/Rio.src/M000100.html +16 -0
  117. data/doc/rdoc/classes/RIO/Rio.src/M000101.html +16 -0
  118. data/doc/rdoc/classes/RIO/Rio.src/M000102.html +16 -0
  119. data/doc/rdoc/classes/RIO/Rio.src/M000103.html +16 -0
  120. data/doc/rdoc/classes/RIO/Rio.src/M000104.html +16 -0
  121. data/doc/rdoc/classes/RIO/Rio.src/M000105.html +16 -0
  122. data/doc/rdoc/classes/RIO/Rio.src/M000106.html +16 -0
  123. data/doc/rdoc/classes/RIO/Rio.src/M000107.html +16 -0
  124. data/doc/rdoc/classes/RIO/Rio.src/M000108.html +16 -0
  125. data/doc/rdoc/classes/RIO/Rio.src/M000109.html +16 -0
  126. data/doc/rdoc/classes/RIO/Rio.src/M000110.html +16 -0
  127. data/doc/rdoc/classes/RIO/Rio.src/M000111.html +16 -0
  128. data/doc/rdoc/classes/RIO/Rio.src/M000112.html +16 -0
  129. data/doc/rdoc/classes/RIO/Rio.src/M000113.html +16 -0
  130. data/doc/rdoc/classes/RIO/Rio.src/M000114.html +16 -0
  131. data/doc/rdoc/classes/RIO/Rio.src/M000115.html +16 -0
  132. data/doc/rdoc/classes/RIO/Rio.src/M000116.html +16 -0
  133. data/doc/rdoc/classes/RIO/Rio.src/M000117.html +16 -0
  134. data/doc/rdoc/classes/RIO/Rio.src/M000118.html +16 -0
  135. data/doc/rdoc/classes/RIO/Rio.src/M000119.html +16 -0
  136. data/doc/rdoc/classes/RIO/Rio.src/M000120.html +16 -0
  137. data/doc/rdoc/classes/RIO/Rio.src/M000121.html +16 -0
  138. data/doc/rdoc/classes/RIO/Rio.src/M000122.html +16 -0
  139. data/doc/rdoc/classes/RIO/Rio.src/M000123.html +16 -0
  140. data/doc/rdoc/classes/RIO/Rio.src/M000124.html +16 -0
  141. data/doc/rdoc/classes/RIO/Rio.src/M000125.html +16 -0
  142. data/doc/rdoc/classes/RIO/Rio.src/M000126.html +16 -0
  143. data/doc/rdoc/classes/RIO/Rio.src/M000127.html +16 -0
  144. data/doc/rdoc/classes/RIO/Rio.src/M000128.html +16 -0
  145. data/doc/rdoc/classes/RIO/Rio.src/M000129.html +16 -0
  146. data/doc/rdoc/classes/RIO/Rio.src/M000130.html +16 -0
  147. data/doc/rdoc/classes/RIO/Rio.src/M000131.html +16 -0
  148. data/doc/rdoc/classes/RIO/Rio.src/M000132.html +16 -0
  149. data/doc/rdoc/classes/RIO/Rio.src/M000133.html +16 -0
  150. data/doc/rdoc/classes/RIO/Rio.src/M000134.html +16 -0
  151. data/doc/rdoc/classes/RIO/Rio.src/M000135.html +16 -0
  152. data/doc/rdoc/classes/RIO/Rio.src/M000136.html +16 -0
  153. data/doc/rdoc/classes/RIO/Rio.src/M000137.html +16 -0
  154. data/doc/rdoc/classes/RIO/Rio.src/M000138.html +16 -0
  155. data/doc/rdoc/classes/RIO/Rio.src/M000139.html +16 -0
  156. data/doc/rdoc/classes/RIO/Rio.src/M000140.html +16 -0
  157. data/doc/rdoc/classes/RIO/Rio.src/M000141.html +16 -0
  158. data/doc/rdoc/classes/RIO/Rio.src/M000142.html +16 -0
  159. data/doc/rdoc/classes/RIO/Rio.src/M000143.html +16 -0
  160. data/doc/rdoc/classes/RIO/Rio.src/M000144.html +16 -0
  161. data/doc/rdoc/classes/RIO/Rio.src/M000145.html +16 -0
  162. data/doc/rdoc/classes/RIO/Rio.src/M000146.html +16 -0
  163. data/doc/rdoc/classes/RIO/Rio.src/M000147.html +16 -0
  164. data/doc/rdoc/classes/RIO/Rio.src/M000148.html +16 -0
  165. data/doc/rdoc/classes/RIO/Rio.src/M000149.html +16 -0
  166. data/doc/rdoc/classes/RIO/Rio.src/M000150.html +16 -0
  167. data/doc/rdoc/classes/RIO/Rio.src/M000151.html +16 -0
  168. data/doc/rdoc/classes/RIO/Rio.src/M000152.html +16 -0
  169. data/doc/rdoc/classes/RIO/Rio.src/M000153.html +16 -0
  170. data/doc/rdoc/classes/RIO/Rio.src/M000154.html +16 -0
  171. data/doc/rdoc/classes/RIO/Rio.src/M000155.html +16 -0
  172. data/doc/rdoc/classes/RIO/Rio.src/M000156.html +16 -0
  173. data/doc/rdoc/classes/RIO/Rio.src/M000157.html +16 -0
  174. data/doc/rdoc/classes/RIO/Rio.src/M000158.html +16 -0
  175. data/doc/rdoc/classes/RIO/Rio.src/M000159.html +16 -0
  176. data/doc/rdoc/classes/RIO/Rio.src/M000160.html +16 -0
  177. data/doc/rdoc/classes/RIO/Rio.src/M000161.html +16 -0
  178. data/doc/rdoc/classes/RIO/Rio.src/M000162.html +16 -0
  179. data/doc/rdoc/classes/RIO/Rio.src/M000163.html +16 -0
  180. data/doc/rdoc/classes/RIO/Rio.src/M000164.html +16 -0
  181. data/doc/rdoc/classes/RIO/Rio.src/M000165.html +16 -0
  182. data/doc/rdoc/classes/RIO/Rio.src/M000166.html +16 -0
  183. data/doc/rdoc/classes/RIO/Rio.src/M000167.html +16 -0
  184. data/doc/rdoc/classes/RIO/Rio.src/M000168.html +16 -0
  185. data/doc/rdoc/classes/RIO/Rio.src/M000169.html +16 -0
  186. data/doc/rdoc/classes/RIO/Rio.src/M000170.html +16 -0
  187. data/doc/rdoc/classes/RIO/Rio.src/M000171.html +16 -0
  188. data/doc/rdoc/classes/RIO/Rio.src/M000172.html +16 -0
  189. data/doc/rdoc/classes/RIO/Rio.src/M000173.html +16 -0
  190. data/doc/rdoc/classes/RIO/Rio.src/M000174.html +16 -0
  191. data/doc/rdoc/classes/RIO/Rio.src/M000175.html +16 -0
  192. data/doc/rdoc/classes/RIO/Rio.src/M000176.html +16 -0
  193. data/doc/rdoc/classes/RIO/Rio.src/M000177.html +16 -0
  194. data/doc/rdoc/classes/RIO/Rio.src/M000178.html +16 -0
  195. data/doc/rdoc/classes/RIO/Rio.src/M000179.html +16 -0
  196. data/doc/rdoc/classes/RIO/Rio.src/M000180.html +16 -0
  197. data/doc/rdoc/classes/RIO/Rio.src/M000181.html +16 -0
  198. data/doc/rdoc/classes/RIO/Rio.src/M000182.html +16 -0
  199. data/doc/rdoc/classes/RIO/Rio.src/M000183.html +16 -0
  200. data/doc/rdoc/classes/RIO/Rio.src/M000184.html +16 -0
  201. data/doc/rdoc/classes/RIO/Rio.src/M000185.html +16 -0
  202. data/doc/rdoc/classes/RIO/Rio.src/M000186.html +16 -0
  203. data/doc/rdoc/classes/RIO/Rio.src/M000187.html +16 -0
  204. data/doc/rdoc/classes/RIO/Rio.src/M000188.html +16 -0
  205. data/doc/rdoc/classes/RIO/Rio.src/M000189.html +16 -0
  206. data/doc/rdoc/classes/RIO/Rio.src/M000190.html +16 -0
  207. data/doc/rdoc/classes/RIO/Rio.src/M000191.html +16 -0
  208. data/doc/rdoc/classes/RIO/Rio.src/M000192.html +16 -0
  209. data/doc/rdoc/classes/RIO/Rio.src/M000193.html +16 -0
  210. data/doc/rdoc/classes/RIO/Rio.src/M000194.html +16 -0
  211. data/doc/rdoc/classes/RIO/Rio.src/M000195.html +16 -0
  212. data/doc/rdoc/classes/RIO/Rio.src/M000196.html +16 -0
  213. data/doc/rdoc/classes/RIO/Rio.src/M000197.html +16 -0
  214. data/doc/rdoc/classes/RIO/Rio.src/M000198.html +16 -0
  215. data/doc/rdoc/classes/RIO/Rio.src/M000199.html +16 -0
  216. data/doc/rdoc/classes/RIO/Rio.src/M000200.html +16 -0
  217. data/doc/rdoc/classes/RIO/Rio.src/M000201.html +16 -0
  218. data/doc/rdoc/classes/RIO/Rio.src/M000202.html +16 -0
  219. data/doc/rdoc/classes/RIO/Rio.src/M000203.html +16 -0
  220. data/doc/rdoc/classes/RIO/Rio.src/M000204.html +16 -0
  221. data/doc/rdoc/classes/RIO/Rio.src/M000205.html +16 -0
  222. data/doc/rdoc/classes/RIO/Rio.src/M000206.html +16 -0
  223. data/doc/rdoc/classes/RIO/Rio.src/M000207.html +16 -0
  224. data/doc/rdoc/classes/RIO/Rio.src/M000208.html +16 -0
  225. data/doc/rdoc/classes/RIO/Rio.src/M000209.html +16 -0
  226. data/doc/rdoc/classes/RIO/Rio.src/M000210.html +16 -0
  227. data/doc/rdoc/classes/RIO/Rio.src/M000211.html +16 -0
  228. data/doc/rdoc/classes/RIO/Rio.src/M000212.html +16 -0
  229. data/doc/rdoc/classes/RIO/Rio.src/M000213.html +16 -0
  230. data/doc/rdoc/created.rid +1 -0
  231. data/doc/rdoc/files/README.html +243 -0
  232. data/doc/rdoc/files/lib/rio/constructor_rb.html +142 -0
  233. data/doc/rdoc/files/lib/rio/doc/HOWTO_rb.html +135 -0
  234. data/doc/rdoc/files/lib/rio/doc/INTRO_rb.html +135 -0
  235. data/doc/rdoc/files/lib/rio/doc/MISC_rb.html +135 -0
  236. data/doc/rdoc/files/lib/rio/doc/SYNOPSIS_rb.html +135 -0
  237. data/doc/rdoc/files/lib/rio/if/basic_rb.html +135 -0
  238. data/doc/rdoc/files/lib/rio/if/csv_rb.html +135 -0
  239. data/doc/rdoc/files/lib/rio/if/dir_rb.html +135 -0
  240. data/doc/rdoc/files/lib/rio/if/file_rb.html +135 -0
  241. data/doc/rdoc/files/lib/rio/if/fileordir_rb.html +135 -0
  242. data/doc/rdoc/files/lib/rio/if/grande_entry_rb.html +135 -0
  243. data/doc/rdoc/files/lib/rio/if/grande_rb.html +135 -0
  244. data/doc/rdoc/files/lib/rio/if/grande_stream_rb.html +135 -0
  245. data/doc/rdoc/files/lib/rio/if/internal_rb.html +135 -0
  246. data/doc/rdoc/files/lib/rio/if/path_rb.html +135 -0
  247. data/doc/rdoc/files/lib/rio/if/stream_rb.html +135 -0
  248. data/doc/rdoc/files/lib/rio/if/string_rb.html +135 -0
  249. data/doc/rdoc/files/lib/rio/if/temp_rb.html +135 -0
  250. data/doc/rdoc/files/lib/rio/if/test_rb.html +135 -0
  251. data/doc/rdoc/files/lib/rio/if/yaml_rb.html +135 -0
  252. data/doc/rdoc/files/lib/rio/kernel_rb.html +142 -0
  253. data/doc/rdoc/files/lib/rio_rb.html +154 -0
  254. data/doc/rdoc/fr_class_index.html +37 -0
  255. data/doc/rdoc/fr_file_index.html +49 -0
  256. data/doc/rdoc/fr_method_index.html +241 -0
  257. data/doc/rdoc/index.html +24 -0
  258. data/doc/rdoc/rdoc-style.css +384 -0
  259. data/lib/rio.rb +21 -5
  260. data/lib/rio/constructor.rb +13 -0
  261. data/lib/rio/context/copying.rb +56 -0
  262. data/lib/rio/context/methods.rb +1 -0
  263. data/lib/rio/cp.rb +53 -34
  264. data/lib/rio/doc/HOWTO.rb +9 -3
  265. data/lib/rio/doc/INTRO.rb +113 -3
  266. data/lib/rio/ext.rb +7 -1
  267. data/lib/rio/ext/csv.rb +17 -8
  268. data/lib/rio/ext/yaml.rb +182 -0
  269. data/lib/rio/factory.rb +11 -14
  270. data/lib/rio/filter/closeoneof.rb +12 -31
  271. data/lib/rio/filter/gzip.rb +7 -0
  272. data/lib/rio/if.rb +4 -1
  273. data/lib/rio/if/csv.rb +36 -35
  274. data/lib/rio/if/grande.rb +74 -5
  275. data/lib/rio/if/grande_stream.rb +11 -3
  276. data/lib/rio/if/path.rb +9 -8
  277. data/lib/rio/if/yaml.rb +218 -0
  278. data/lib/rio/ioh.rb +5 -3
  279. data/lib/rio/matchrecord.rb +9 -2
  280. data/lib/rio/ops/dir.rb +2 -1
  281. data/lib/rio/ops/either.rb +9 -9
  282. data/lib/rio/ops/file.rb +4 -1
  283. data/lib/rio/ops/path.rb +26 -20
  284. data/lib/rio/ops/stream.rb +1 -1
  285. data/lib/rio/ops/stream/input.rb +31 -9
  286. data/lib/rio/ops/stream/output.rb +7 -2
  287. data/lib/rio/ops/stream/read.rb +10 -10
  288. data/lib/rio/ops/stream/write.rb +10 -10
  289. data/lib/rio/path.rb +2 -2
  290. data/lib/rio/path/reset.rb +1 -1
  291. data/lib/rio/piper.rb +123 -0
  292. data/lib/rio/piper/cp.rb +81 -0
  293. data/lib/rio/rectype.rb +2 -2
  294. data/lib/rio/rl/base.rb +40 -17
  295. data/lib/rio/rl/builder.rb +8 -47
  296. data/lib/rio/rl/ioi.rb +3 -2
  297. data/lib/rio/rl/path.rb +101 -78
  298. data/lib/rio/rl/pathmethods.rb +95 -0
  299. data/lib/rio/rl/uri.rb +41 -51
  300. data/lib/rio/scheme/cmdio.rb +7 -1
  301. data/lib/rio/scheme/cmdpipe.rb +150 -0
  302. data/lib/rio/scheme/ftp.rb +0 -4
  303. data/lib/rio/scheme/http.rb +0 -2
  304. data/lib/rio/scheme/strio.rb +16 -0
  305. data/lib/rio/scheme/temp.rb +7 -7
  306. data/lib/rio/state.rb +23 -5
  307. data/lib/rio/stream.rb +4 -0
  308. data/lib/rio/stream/duplex.rb +1 -0
  309. data/lib/rio/stream/open.rb +8 -2
  310. data/lib/rio/version.rb +1 -1
  311. data/test/{runtests_gem.rb → gem_runtests.rb} +0 -0
  312. data/test/methods/path.rb +12 -0
  313. data/test/runtests.rb +2 -0
  314. data/test/tc/abs.rb +29 -27
  315. data/test/tc/all.rb +9 -3
  316. data/test/tc/base.rb +31 -0
  317. data/test/tc/cmdpipe.rb +146 -0
  318. data/test/tc/copydir.rb +2 -1
  319. data/test/tc/create.rb +10 -0
  320. data/test/tc/csv.rb +12 -12
  321. data/test/tc/csv2.rb +2 -2
  322. data/test/tc/csv_columns.rb +3 -3
  323. data/test/tc/each_break.rb +21 -8
  324. data/test/tc/expand_path.rb +21 -27
  325. data/test/tc/misc.rb +0 -1
  326. data/test/tc/noqae.rb +29 -21
  327. data/test/tc/overload.rb +14 -11
  328. data/test/tc/piper.rb +146 -0
  329. data/test/tc/riorl.rb +26 -17
  330. data/test/tc/route.rb +51 -0
  331. data/test/tc/skip.rb +8 -6
  332. data/test/tc/split.rb +70 -0
  333. data/test/tc/temp.rb +5 -5
  334. data/test/tc/testcase.rb +1 -0
  335. data/test/tc/yaml.rb +118 -0
  336. metadata +481 -229
  337. data/doc/README_MSWIN32.txt +0 -39
  338. data/ex/colx.rb +0 -8
  339. data/ex/findinruby +0 -23
  340. data/ex/findruby +0 -15
  341. data/ex/passwd_report.rb +0 -8
  342. data/ex/prompt.rb +0 -25
  343. data/ex/rgb.txt.gz +0 -0
  344. data/ex/riocat +0 -35
  345. data/ex/riogunzip +0 -31
  346. data/ex/riogzip +0 -24
  347. data/ex/rioprompt.rb +0 -6
  348. data/ex/tolf +0 -11
  349. data/test/mswin32.rb +0 -28
@@ -99,8 +99,9 @@ module RIO
99
99
  #
100
100
  # Returns the Rio
101
101
  #
102
- # If no args are provided, all records are selected. What constitutes a record is affected by Rio#lines,Rio#bytes,
103
- # and extensions such as Rio#csv.
102
+ # If no args are provided, all records are selected.
103
+ # What constitutes a record is affected by Rio#lines,Rio#bytes,
104
+ # and extensions such as Rio#csv and Rio#yaml.
104
105
  #
105
106
  # If args are provided they may be one or more of the following:
106
107
  # Regexp:: any matching record will be iterated over by Rio#each or returned by Rio#getrec
@@ -110,6 +111,13 @@ module RIO
110
111
  # Symbol:: a symbol which will _sent_ to each record, records are included unless nil or false is returned
111
112
  # Array:: an array of any of above. All must match for a line to be included
112
113
  #
114
+ # Any other argument type is compared with the record using its <tt>===</tt> method.
115
+ #
116
+ # If the argument is a ::Proc it may be called with one, two or three paramaters.
117
+ # 1. the record
118
+ # 2. the recno (optional)
119
+ # 3. the rio (optional)
120
+ #
113
121
  # Note in the following examples that since +lines+ is the default <tt>ario.records(*args)</tt>
114
122
  # is effectively the same as <tt>ario.lines(*args)</tt>.
115
123
  #
@@ -136,7 +144,7 @@ module RIO
136
144
  # See also Rio#records, Rio#skiplines, Rio#lines
137
145
  #
138
146
  # If no args are provided, no records are rejected. What constitutes a record is affected by Rio#lines,Rio#bytes,
139
- # and extensions such as Rio#csv.
147
+ # and extensions such as Rio#csv and Rio#yaml.
140
148
  #
141
149
  # If args are provided they may be one or more of the following:
142
150
  # Regexp:: any matching record will not be processed
@@ -40,13 +40,10 @@ module RIO
40
40
 
41
41
  # Returns the path for the Rio, which is defined differently for different types of Rios.
42
42
  #
43
- # For Rios representing paths on the underlying file system this returns
44
- # URI::FILE#path or URI::Generic#path depending on whether the Rio is absolute or not.
45
- # Note that this is not necessarily the same as Rio#fspath, but rather
46
- # a URL path as defined in RFC1738.
47
- #
48
- # For Rios that have a URI representation this returns URI#path
49
- #
43
+ # For Rios representing paths on the underlying file system this is an alias
44
+ # Rio#fspath. For Rios with paths that are not on the file system this is an
45
+ # alias for Rio#urlpath.
46
+ #
50
47
  # Otherwise this returns nil.
51
48
  #
52
49
  def path(*args) target.path(*args) end
@@ -72,6 +69,10 @@ module RIO
72
69
  # Returns nil if the Rio is not on the filesystem (i.e. stdin: or http: Rios)
73
70
  def fspath(*args) target.fspath(*args) end
74
71
 
72
+ # Returns the path portion of the URL representation of the rio
73
+ # Returns nil if the Rio URL has no path (i.e. stdin: or http: Rios)
74
+ def urlpath(*args) target.urlpath(*args) end
75
+
75
76
  # Proxy for File#expand_path
76
77
  #
77
78
  # Converts a pathname to an absolute pathname.
@@ -98,7 +99,7 @@ module RIO
98
99
  # rio('/tmp/afile').rel('/tmp') #=> rio('afile')
99
100
  # rio('zippy/afile').rel('zippy') #=> rio('afile')
100
101
  #
101
- def rel(other) target.rel(other) end
102
+ def rel(other=nil) target.rel(other) end
102
103
 
103
104
 
104
105
  # Returns a new Rio whose path is the base path that is used by
@@ -0,0 +1,218 @@
1
+ #--
2
+ # ===============================================================================
3
+ # Copyright (c) 2005, Christopher Kleckner
4
+ # All rights reserved
5
+ #
6
+ # This file is part of the Rio library for ruby.
7
+ #
8
+ # Rio is free software; you can redistribute it and/or modify
9
+ # it under the terms of the GNU General Public License as published by
10
+ # the Free Software Foundation; either version 2 of the License, or
11
+ # (at your option) any later version.
12
+ #
13
+ # Rio is distributed in the hope that it will be useful,
14
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ # GNU General Public License for more details.
17
+ #
18
+ # You should have received a copy of the GNU General Public License
19
+ # along with Rio; if not, write to the Free Software
20
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
+ # ===============================================================================
22
+ #++
23
+ #
24
+ # To create the documentation for Rio run the command
25
+ # rake rdoc
26
+ # from the distribution directory. Then point your browser at the 'doc/rdoc' directory.
27
+ #
28
+ # Suggested Reading
29
+ # * RIO::Doc::SYNOPSIS
30
+ # * RIO::Doc::INTRO
31
+ # * RIO::Doc::HOWTO
32
+ # * RIO::Rio
33
+ #
34
+ # <b>Rio is pre-alpha software.
35
+ # The documented interface and behavior is subject to change without notice.</b>
36
+
37
+
38
+ module RIO
39
+ module IF
40
+ module YAML
41
+ #def file() target.file end
42
+ #def dir() target.dir end
43
+
44
+ # Puts a Rio in YAML mode.
45
+ #
46
+ #
47
+ # Rio uses the YAML class from the Ruby standard library to provide
48
+ # support for reading and writing YAML files. Normally using
49
+ # <tt>(skip)records</tt> is identical to <tt>(skip)lines</tt> because
50
+ # while +records+ only selects and does not specify the record-type,
51
+ # +lines+ is the default.
52
+ #
53
+ # The YAML extension distingishes between items selected using
54
+ # Rio#records, Rio#rows and Rio#lines. Rio returns objects loaded via
55
+ # YAML#load when +records+ is used; returns the YAML text as a String
56
+ # when +rows+ is used; and returns lines as Strings as normal when
57
+ # +lines+ is used. +records+ is the default. In yaml-mode,
58
+ # <tt>(skip)records</tt> can be called as <tt>(skip)objects</tt> and
59
+ # <tt>(skip)rows</tt> can be called as <tt>(skip)documents</tt>
60
+ #
61
+ # To read a single YAML document, Rio provides #getobj and #load For
62
+ # example, consider the following partial 'database.yml' from the rails
63
+ # distribution:
64
+ #
65
+ # development:
66
+ # adapter: mysql
67
+ # database: rails_development
68
+ #
69
+ # test:
70
+ # adapter: mysql
71
+ # database: rails_test
72
+ #
73
+ #
74
+ # To get the object represented in the yaml file:
75
+ #
76
+ # rio('database.yml').yaml.load
77
+ # ==>{"development"=>{"adapter"=>"mysql", "database"=>"rails_development"},
78
+ # "test"=>{"adapter"=>"mysql", "database"=>"rails_test"}}
79
+ #
80
+ # Or one could read parts of the file like so:
81
+ #
82
+ # rio('database.yml').yaml.getobj['development']['database']
83
+ # ==>"rails_development"
84
+ #
85
+ # Single objects can be written using #putobj and #putobj!
86
+ # which is aliased to #dump
87
+ #
88
+ # anobject = {
89
+ # 'production' => {
90
+ # 'adapter' => 'mysql',
91
+ # 'database' => 'rails_production',
92
+ # }
93
+ # }
94
+ # rio('afile.yaml').yaml.dump(anobject)
95
+ #
96
+ # The YAML extension changes the way the grande copy operators interpret
97
+ # their argument. Rio#< (copy-from) and Rio#<< (append-from) treat an
98
+ # array as an array of objects which are converted using their #to_yaml
99
+ # method before writing.
100
+ #
101
+ # rio('afile.yaml').yaml < [obj1, obj2, obj3]
102
+ #
103
+ # Because of this, copying an ::Array must be done like this:
104
+ #
105
+ # rio('afile.yaml').yaml < [anarray]
106
+ #
107
+ # If their argument is a Rio or ::IO it is iterate through as normal,
108
+ # with each record converted using its to_yaml method.
109
+ #
110
+ # For all other objects, the result of their +to_yaml+ operator is
111
+ # simply written.
112
+ #
113
+ # rio('afile.yaml').yaml < anobject
114
+ #
115
+ # Rio#> (copy-to) and Rio#>> (append-to) will fill an array with with
116
+ # all selected YAML documents in the Rio. For non-arrays, the yaml text
117
+ # is copied. (This may change if a useful reasonable alternative can be
118
+ # found) rio('afile.yaml').yaml > anarray # load all YAML documents from
119
+ # 'afile.yaml'
120
+ #
121
+ # Single objects can be written using Rio#putrec (aliased to Rio#putobj
122
+ # and Rio#dump)
123
+ #
124
+ # rio('afile.yaml').yaml.putobj(anobject)
125
+ #
126
+ # Single objects can be loaded using Rio#getrec (aliase to Rio#getobj
127
+ # and Rio#load)
128
+ #
129
+ # anobject = rio('afile.yaml').yaml.getobj
130
+ #
131
+ # Note that other than this redefinition of what a record is and how the
132
+ # copy operators interpret their argument, a Rio in yaml-mode is just
133
+ # like any other Rio. And all the things you can do with any Rio come
134
+ # for free. They can be iterated over using #each and read into an
135
+ # array using #[] just like any other Rio. All the selection criteria
136
+ # are identical also.
137
+ #
138
+ # Get the first three objects into an array:
139
+ #
140
+ # array_of_objects = rio('afile.yaml').yaml[0..2]
141
+ #
142
+ # Iterate over only YAML documents that are a kind_of ::Hash use:
143
+ #
144
+ # rio('afile.yaml').yaml(::Hash) {|ahash| ...}
145
+ #
146
+ # This takes advantage of the fact that the default for matching records
147
+ # is <tt>===</tt>
148
+ #
149
+ # Selecting records using a Proc can be used as normal:
150
+ #
151
+ # anarray = rio('afile.yaml').yaml(proc{|anobject| ...}).to_a
152
+ #
153
+ # One could even use the copy operator to convert a CSV file to a YAML
154
+ # representation of the same data:
155
+ #
156
+ # rio('afile.yaml').yaml < rio('afile.csv').csv
157
+ #
158
+ def yaml(&block)
159
+ target.yaml(&block);
160
+ self
161
+ end
162
+
163
+
164
+ # Queries if the Rio is in yaml-mode. See #yaml
165
+ def yaml?() target.yaml? end
166
+
167
+
168
+ # Select objects from a YAML file. See #yaml and RIO::Doc::INTRO
169
+ def objects(*selectors,&block) target.objects(*selectors,&block); self end
170
+
171
+
172
+ # Reject objects from a YAML file. See #yaml and RIO::Doc::INTRO
173
+ def skipobjects(*selectors,&block) target.skipobjects(*selectors,&block); self end
174
+
175
+
176
+ # Select documents from a YAML file. See #yaml and RIO::Doc::INTRO
177
+ def documents(*selectors,&block) target.documents(*selectors,&block); self end
178
+
179
+
180
+ # Reject documents from a YAML file. Calls #skiprows. See #yaml and RIO::Doc::INTRO
181
+ def skipdocuments(*selectors,&block) target.skipdocuments(*selectors,&block); self end
182
+
183
+ # Calls YAML.load.
184
+ #
185
+ # Loads a single YAML object from the stream referenced by the Rio
186
+ #
187
+ # rio('database.yml').yaml.getobj
188
+ #
189
+ # See #yaml and RIO::Doc::INTRO
190
+ #
191
+ def getobj() target.getobj() end
192
+
193
+ # Alias for #getobj
194
+ def load() target.load() end
195
+
196
+ # Alias for #getrec
197
+ #def getdoc() target.getdoc() end
198
+
199
+
200
+ # Calls YAML.dump, leaving the Rio open.
201
+ def putobj(obj) target.putobj(obj); self end
202
+
203
+ # Dumps an object to a Rio as with Rio#putobj, and closes the Rio.
204
+ #
205
+ # rio('afile.yaml').yaml.putobj!(anobject)
206
+ #
207
+ # is identical to
208
+ #
209
+ # rio('afile.yaml').yaml.putobj(anobject).close
210
+ #
211
+ def putobj!(obj) target.putobj!(obj); self end
212
+
213
+ # Alias for Rio#putobj!
214
+ def dump(obj) target.dump(obj); self end
215
+
216
+ end
217
+ end
218
+ end
@@ -44,10 +44,11 @@ module RIO
44
44
  def initialize(ios,*args)
45
45
  @ios = ios
46
46
  end
47
- def initialize_copy(*args)
48
- #p callstr('ioh:initialize_copy',*args)
47
+ def initialize_copy(other)
48
+ #p callstr('ioh:initialize_copy',other)
49
49
  super
50
- @ios = @ios.clone unless @ios.nil?
50
+ #p @ios
51
+ @ios = other.ios.clone unless other.ios.nil?
51
52
  end
52
53
  def callstr(func,*args)
53
54
  self.class.to_s+'['+self.to_s+']'+'.'+func.to_s+'('+args.join(',')+')'
@@ -96,6 +97,7 @@ module RIO
96
97
  :fileno,
97
98
  :close_read,:close_write,
98
99
  :fsync,:sync,:sync=,:fcntl,:ioctl)
100
+
99
101
  def method_missing(sym,*args,&block)
100
102
  #p callstr('method_missing',sym,*args)
101
103
  handle.__send__(sym,*args,&block)
@@ -84,7 +84,8 @@ module RIO
84
84
  end
85
85
  def match?(val,recno)
86
86
  #p "match?(#{val},#{recno}) select_arg=#{@select_arg}"
87
- @select_arg.call(val,recno,@therio)
87
+ args = [val,recno,@therio]
88
+ @select_arg.call(*args[0,@select_arg.arity])
88
89
  end
89
90
  end
90
91
  class Symbol < Base
@@ -107,6 +108,12 @@ module RIO
107
108
  @select_arg.all? { |sel| sel.match?(val,recno) }
108
109
  end
109
110
  end
111
+ class Case < Base
112
+ def match?(val,recno)
113
+ #p "match?(#{val},#{recno}) select_arg=#{@select_arg}"
114
+ @select_arg === val
115
+ end
116
+ end
110
117
  def create(therio,arg)
111
118
  case arg
112
119
  when ::Regexp
@@ -122,7 +129,7 @@ module RIO
122
129
  when ::Array
123
130
  Match::Record::And.new(arg,therio)
124
131
  else
125
- raise ArgumentError,"Argument must be a Regexp,Range,Fixnum,Proc, or Symbol"
132
+ Match::Record::Case.new(arg)
126
133
  end
127
134
  end
128
135
  module_function :create
@@ -38,6 +38,8 @@
38
38
  require 'extensions/object'
39
39
  require 'rio/grande'
40
40
  require 'rio/cp'
41
+ require 'rio/ops/either'
42
+
41
43
  module RIO
42
44
  module Impl
43
45
  module U
@@ -73,7 +75,6 @@ module RIO
73
75
  module Ops
74
76
  module Dir
75
77
  module ExistOrNot
76
- require 'rio/ops/either'
77
78
  include ::RIO::Ops::FileOrDir::ExistOrNot
78
79
  end
79
80
  end
@@ -53,7 +53,15 @@ module RIO
53
53
  end
54
54
  module Ops
55
55
  module FileOrDir
56
+ module ExistOrNot
57
+ end
58
+ module NonExisting
59
+ include ExistOrNot
60
+ end
61
+
56
62
  module Existing
63
+ include ExistOrNot
64
+
57
65
  def chmod(mod) rtn_self { Impl::U.chmod(mod,fspath) } end
58
66
  def chown(owner,group) rtn_self { Impl::U.chown(owner,group,fspath) } end
59
67
  def must_exist() self end
@@ -107,7 +115,7 @@ module RIO
107
115
  end
108
116
  end
109
117
 
110
- require 'Pathname'
118
+ require 'pathname'
111
119
  def realpath
112
120
  new_rio(Impl::U.realpath(fspath))
113
121
  end
@@ -117,14 +125,6 @@ module RIO
117
125
 
118
126
  end
119
127
 
120
- module ExistOrNot
121
- end
122
- module Existing
123
- include ExistOrNot
124
- end
125
- module NonExisting
126
- include ExistOrNot
127
- end
128
128
  end
129
129
  end
130
130
  end
@@ -36,6 +36,9 @@
36
36
 
37
37
 
38
38
  require 'rio/cp'
39
+ require 'rio/piper/cp'
40
+ require 'rio/ops/either'
41
+
39
42
  module RIO
40
43
  module Impl
41
44
  module U
@@ -58,7 +61,6 @@ module RIO
58
61
  module Ops
59
62
  module File
60
63
  module ExistOrNot
61
- require 'rio/ops/either'
62
64
  include FileOrDir::ExistOrNot
63
65
  end
64
66
  module Existing
@@ -66,6 +68,7 @@ module RIO
66
68
  include FileOrDir::Existing
67
69
  include Cp::File::Output
68
70
  include Cp::File::Input
71
+ include Piper::Cp::Input
69
72
 
70
73
  def selective?
71
74
  %w[stream_sel stream_nosel].any? { |k| cx.has_key?(k) }
@@ -81,7 +81,8 @@ module RIO
81
81
  module URI
82
82
  def abs(base=nil)
83
83
  if base.nil?
84
- new_rio(rl.abs)
84
+ nrio = new_rio(rl.abs)
85
+ nrio
85
86
  else
86
87
  new_rio(rl,ensure_rio(base).abs.to_uri).abs
87
88
  end
@@ -93,8 +94,15 @@ module RIO
93
94
  def route_from(other)
94
95
  new_rio(rl.abs.route_from(ensure_rio(other).rl.abs))
95
96
  end
96
- def rel(other)
97
- route_from(other)
97
+ def rel(other=nil)
98
+ if other.nil?
99
+ base = self.abs.dirname
100
+ else
101
+ new_rio(self.rl.abs.route_from(ensure_rio(other).rl.abs))
102
+ end
103
+ base = other.nil? ? self.abs : ensure_rio(other).dup
104
+ base += '/' if base.directory? and base.to_s[-1] != '/'
105
+ route_from(base)
98
106
  end
99
107
  # def rel(other=nil)
100
108
  # if other.nil?
@@ -131,15 +139,9 @@ module RIO
131
139
  end
132
140
  def split()
133
141
  require 'rio/to_rio'
134
- pth = rl.path_no_slash
135
- parts = pth.split(RIO::Local::SEPARATOR)
136
- if abs?
137
- rooturi = rl.uri.clone
138
- rooturi.path = '/'
139
- parts[0] = rooturi
140
- end
141
- # give each rio the correct base
142
- parts.inject([rio(parts.shift)]) { |ary,d| ary << rio(d,{ 'base' => ary[-1].abs.to_url+'/'} ) }.extend(ToRio::Array)
142
+ parts = self.rl.split
143
+ # map to rios and extend the array with to_array
144
+ parts.map { |arl| rio(arl) }.extend(ToRio::Array)
143
145
  end
144
146
  def basename(*args)
145
147
  unless args.empty?
@@ -148,22 +150,26 @@ module RIO
148
150
  end
149
151
  #p self.ext?.inspect
150
152
  fn = Impl::U.basename(rl.path_no_slash,self.ext?)
151
- new_rio(fn,{'base' => _calc_base()})
153
+ new_rio(fn,{:base => _calc_base()})
152
154
  end
153
155
  def filename()
154
156
  fn = Impl::U.basename(rl.path_no_slash)
155
- new_rio(fn,{'base' => _calc_base()})
157
+ new_rio(fn,{:base => _calc_base()})
156
158
  end
157
159
  def _calc_base()
158
160
  dn = Impl::U.dirname(rl.path_no_slash)
159
- if dn[0] == ?/
160
- dn
161
- else
162
- self.base.to_url + dn + '/'
163
- end
161
+ dn[0] == ?/ ? dn : self.base.to_url + dn + '/' #'
162
+ # if dn[0] == ?/
163
+ # dn
164
+ # else
165
+ # self.base.to_url + dn + '/'
166
+ # end
164
167
  end
168
+ private :_calc_base
169
+
165
170
  def dirname(*args)
166
- new_rio(Impl::U.dirname(rl.path_no_slash,*args))
171
+ #new_rio(Impl::U.dirname(rl.path_no_slash,*args))
172
+ new_rio(rl.dirname)
167
173
  end
168
174
 
169
175
  def sub(re,arg)