rio 0.3.4 → 0.3.6

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 (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
@@ -0,0 +1,182 @@
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
+ require 'yaml'
39
+
40
+ module RIO
41
+ module Ext
42
+ module YAML
43
+ module Cx
44
+ def yaml(&block)
45
+ cxx('yaml',true,&block)
46
+ end
47
+ def yaml?() cxx?('yaml') end
48
+ def yaml_(fs=',',rs=nil)
49
+ cxx_('yaml',true)
50
+ end
51
+ protected :yaml_
52
+ def objects(*args) records(*args) end
53
+ def documents(*args) rows(*args) end
54
+ def skipobjects(*args) skiprecords(*args) end
55
+ def skipdocuments(*args) skiprows(*args) end
56
+ end
57
+ end
58
+ module YAML
59
+ module Input
60
+ def cpto_(arg)
61
+ #p callstr('cpto_',arg.inspect)
62
+
63
+ case arg
64
+ when ::Array,::String then super
65
+ when ::IO,::StringIO then cpto_io_(arg)
66
+ else super
67
+ end
68
+ end
69
+ def apto_(arg)
70
+ case arg
71
+ when ::Array,::String then super
72
+ when ::IO,::StringIO then cpto_io_(arg)
73
+ else super
74
+ end
75
+ end
76
+ def cpto_io_(arg)
77
+ self.each { |obj|
78
+ arg << obj.to_yaml + $/
79
+ }
80
+ end
81
+ def cpto_obj_(arg)
82
+ self.each { |obj|
83
+
84
+ }
85
+ end
86
+ def cpto_array_(array)
87
+ self.each { |el|
88
+ array << el
89
+ }
90
+ end
91
+ def cpto_string_(string)
92
+ self.each { |el|
93
+ string << el.to_yaml + $/
94
+ }
95
+ end
96
+ def get_(arg=nil)
97
+ case cx['stream_itertype']
98
+ when 'lines' then super
99
+ when 'records' then ::YAML.load(self.ioh)
100
+ when 'rows' then ::YAML.dump(::YAML.load(self.ioh))
101
+ else ::YAML.load(self.ioh)
102
+ end
103
+ end
104
+ def each_rec_(&block)
105
+ case cx['stream_itertype']
106
+ when 'lines' then super
107
+ when 'records' then ::YAML.load_documents(self.ioh,&block)
108
+ when 'rows' then ::YAML.load_documents(self.ioh) { |obj| yield obj.to_yaml }
109
+ else ::YAML.load_documents(self.ioh,&block)
110
+ end
111
+ self
112
+ end
113
+ def load()
114
+ getrec()
115
+ end
116
+ def getobj()
117
+ getrec()
118
+ end
119
+
120
+ def add_filters
121
+ cx['yaml_close_eof'],cx['closeoneof'] = cx['closeoneof'],false
122
+ super
123
+ end
124
+ def each_(&block)
125
+ #old_close_eof,cx['closeoneof'] = cx['closeoneof'],false
126
+ super
127
+ cx['closeoneof'] = cx.delete('yaml_close_eof')
128
+
129
+ if closeoneof?
130
+ add_filter(Filter::CloseOnEOF)
131
+ ioh.oncloseproc = proc { self.on_closeoneof }
132
+ end
133
+ closeoneof? ? ioh.close_on_eof_(self) : self
134
+ end
135
+ end
136
+ end
137
+
138
+ module YAML
139
+ module Output
140
+ protected
141
+
142
+ def cpfrom_(arg)
143
+ case arg
144
+ when ::Array then cpfrom_array_(arg)
145
+ when Rio,::IO,::StringIO then super
146
+ else self.put_(arg)
147
+ end
148
+ self
149
+ end
150
+ def cpfrom_array_(array)
151
+ array.each { |el|
152
+ self.put_(el)
153
+ }
154
+ self
155
+ end
156
+ def cpfrom_rio_(ario)
157
+ ario.each { |el|
158
+ self.put_(el)
159
+ }
160
+ self
161
+ end
162
+ def put_(obj)
163
+ #p callstr('put_',obj)
164
+ ioh.puts(obj.to_yaml)
165
+ end
166
+
167
+ public
168
+
169
+ def dump(obj)
170
+ putrec!(obj)
171
+ end
172
+ def putobj(obj)
173
+ putrec(obj)
174
+ end
175
+ def putobj!(obj)
176
+ putrec!(obj)
177
+ end
178
+ end
179
+ end
180
+ end
181
+ end
182
+ __END__
@@ -82,6 +82,9 @@ module RIO
82
82
  when 'strio'
83
83
  require 'rio/scheme/strio'
84
84
  StrIO
85
+ when 'cmdpipe'
86
+ require 'rio/scheme/cmdpipe'
87
+ CmdPipe
85
88
  when 'aryio'
86
89
  require 'rio/scheme/aryio'
87
90
  AryIO
@@ -116,20 +119,8 @@ module RIO
116
119
  def reset_state(rl)
117
120
  mod = subscheme_module(rl.scheme)
118
121
  mod.const_get(:RESET_STATE) unless mod.nil?
119
- #p st
120
- # @reset_class[st] ||= case st
121
- # when 'Path::Reset'
122
- # require 'rio/path/reset'
123
- # Path::Reset
124
- # when 'Stream::Open'
125
- # require 'rio/stream/open'
126
- # Stream::Open
127
- # else
128
- # raise ArgumentError,"Unknown RESET_STATE (#{st})"
129
- # end
130
-
131
-
132
122
  end
123
+
133
124
  STATE2FILE = {
134
125
  'Path::Reset' => 'rio/path/reset',
135
126
  'Path::Empty' => 'rio/path',
@@ -168,6 +159,12 @@ module RIO
168
159
  'StrIO::Stream::InOut' => 'rio/scheme/strio',
169
160
  'StrIO::Stream::Open' => 'rio/scheme/strio',
170
161
 
162
+ 'CmdPipe::Stream::Reset' => 'rio/scheme/cmdpipe',
163
+ # 'CmdPipe::Stream::Open' => 'rio/scheme/cmdpipe',
164
+ # 'CmdPipe::Stream::Input' => 'rio/scheme/cmdpipe',
165
+ # 'CmdPipe::Stream::Output' => 'rio/scheme/cmdpipe',
166
+ # 'CmdPipe::Stream::InOut' => 'rio/scheme/cmdpipe',
167
+
171
168
  'HTTP::Stream::Input' => 'rio/scheme/http',
172
169
  'HTTP::Stream::Open' => 'rio/scheme/http',
173
170
 
@@ -225,7 +222,7 @@ module RIO
225
222
  create_handle(state2class(reset_state(riorl)).new_r(riorl))
226
223
  end
227
224
  def clone_state(state)
228
- create_handle(state.clone)
225
+ create_handle(state.target.clone)
229
226
  end
230
227
  def create_handle(new_state)
231
228
  hndl = Handle.new(new_state)
@@ -57,6 +57,7 @@ module RIO
57
57
  rtn
58
58
  end
59
59
  def close_on_eof_(rtn)
60
+ #p callstr('close_on_eof_',rtn)
60
61
  # p @ios
61
62
  unless @autoclosed or closed?
62
63
  handle.close()
@@ -66,37 +67,17 @@ module RIO
66
67
  rtn
67
68
  end
68
69
 
69
- def copy_stream(dst)
70
- #p callstr('copy_stream',dst)
71
- close_on_eof(super)
72
- end
73
- def contents()
74
- close_on_eof(super)
75
- end
76
- def readlines(*args)
77
- close_on_eof(super)
78
- end
79
- def each_line(*args,&block)
80
- close_on_eof(super)
81
- end
82
- def each_byte(*args,&block)
83
- close_on_eof(super)
84
- end
85
- def each_bytes(nb,*args,&block)
86
- close_on_eof(super)
87
- end
88
- def readline(*args)
89
- close_on_eof(super)
90
- end
91
- def read(*args)
92
- close_on_eof(super)
93
- end
94
- def readchar(*args)
95
- close_on_eof(super)
96
- end
97
- def gets(*args)
98
- close_on_eof(super)
99
- end
70
+ def readlines(*args) close_on_eof(super) end
71
+ def each_line(*args,&block) close_on_eof(super) end
72
+ def each_byte(*args,&block) close_on_eof(super) end
73
+ def each_bytes(nb,*args,&block) close_on_eof(super) end
74
+ def readline(*args) close_on_eof(super) end
75
+ def read(*args) close_on_eof(super) end
76
+ def readchar(*args) close_on_eof(super) end
77
+ def gets(*args) close_on_eof(super) end
78
+
79
+ def copy_stream(dst) close_on_eof(super) end
80
+ def contents() close_on_eof(super) end
100
81
  end
101
82
  end
102
83
  end
@@ -39,10 +39,16 @@ require 'zlib'
39
39
 
40
40
  module RIO
41
41
  module Filter
42
+ module GZipMissing
43
+ def binmode()
44
+ self
45
+ end
46
+ end
42
47
  module GZipRead
43
48
  def self.extend_object(ioh_stream)
44
49
  super
45
50
  gz = Zlib::GzipReader.new(ioh_stream.ios)
51
+ gz.extend Filter::GZipMissing
46
52
  ioh_stream.iostack.push(gz)
47
53
  end
48
54
  end
@@ -50,6 +56,7 @@ module RIO
50
56
  def self.extend_object(ioh_stream)
51
57
  super
52
58
  gz = Zlib::GzipWriter.new(ioh_stream.ios)
59
+ gz.extend Filter::GZipMissing
53
60
  ioh_stream.iostack.push(gz)
54
61
  end
55
62
  end
@@ -37,6 +37,10 @@
37
37
 
38
38
  module RIO
39
39
  class Rio
40
+ require 'rio/if/csv'
41
+ include RIO::IF::CSV
42
+ require 'rio/if/yaml'
43
+ include RIO::IF::YAML
40
44
  end
41
45
  end
42
46
 
@@ -53,5 +57,4 @@ require 'rio/if/file'
53
57
  require 'rio/if/dir'
54
58
  require 'rio/if/stream'
55
59
  require 'rio/if/temp'
56
- require 'rio/if/csv'
57
60
  require 'rio/if/string'
@@ -36,41 +36,42 @@
36
36
 
37
37
 
38
38
  module RIO
39
- class Rio
40
- #def file() target.file end
41
- #def dir() target.dir end
42
-
43
- # Puts a Rio in CSV mode and sets the field and record separators.
44
- # In csv mode selecting with Rio#records will cause each line
45
- # read to be parsed into a line with the CSV standard library.
46
- # Specifying using Rio#lines to select will return unparsed strings
47
- # as normal.
48
- #
49
- # # copy a csv file, changing the field separator
50
- # rio('afile.csv').csv > rio('afile_semicolons.csv').csv(';')
51
- #
52
- # CSV mode also adds two methods Rio#columns and Rio#nocolumns which
53
- # allows selecting columns by column index using Fixnums or Ranges
54
- # in a way similar to how lines are selected.
55
- #
56
- # # iterate through every line but only get the first three columns
57
- # rio("afile.csv").csv.columns(0..2) { |array_of_fields| ... }
58
- #
59
- # # iterate through every line but skip the columns 2 and 3 through 5
60
- # rio("afile.csv").csv.nocolumns(2,3..5) { |array_of_fields| ... }
61
- #
62
- # # an array containg all but the first line returning columns 5,6 and 7
63
- # rio("afile.csv").csv.columns(5..7).skiplines[0]
64
- #
65
- # See RIO::Doc::INTRO for complete documentation on csv mode.
66
- def csv(field_separator=',',record_separator=nil,&block)
67
- target.csv(field_separator,record_separator,&block);
68
- self
39
+ module IF
40
+ module CSV
41
+ #def file() target.file end
42
+ #def dir() target.dir end
43
+
44
+ # Puts a Rio in CSV mode and sets the field and record separators.
45
+ # In csv mode selecting with Rio#records will cause each line
46
+ # read to be parsed into a line with the CSV standard library.
47
+ # Specifying using Rio#lines to select will return unparsed strings
48
+ # as normal.
49
+ #
50
+ # # copy a csv file, changing the field separator
51
+ # rio('afile.csv').csv > rio('afile_semicolons.csv').csv(';')
52
+ #
53
+ # CSV mode also adds two methods #columns and #skipcolumns which
54
+ # allows selecting columns by column index using Fixnums or Ranges
55
+ # in a way similar to how lines are selected.
56
+ #
57
+ # # iterate through every line but only get the first three columns
58
+ # rio("afile.csv").csv.columns(0..2) { |array_of_fields| ... }
59
+ #
60
+ # # iterate through every line but skip the columns 2 and 3 through 5
61
+ # rio("afile.csv").csv.skipcolumns(2,3..5) { |array_of_fields| ... }
62
+ #
63
+ # # an array containg all but the first line returning columns 5,6 and 7
64
+ # rio("afile.csv").csv.columns(5..7).skiplines[0]
65
+ #
66
+ # See RIO::Doc::INTRO for complete documentation on csv mode.
67
+ def csv(field_separator=',',record_separator=nil,&block)
68
+ target.csv(field_separator,record_separator,&block);
69
+ self
70
+ end
71
+ # Select columns from a CSV file. See #csv and RIO::Doc::INTRO.
72
+ def columns(*ranges,&block) target.columns(*ranges,&block); self end
73
+ # Reject columns from a CSV file. See #csv and RIO::Doc::INTRO.
74
+ def skipcolumns(*ranges,&block) target.skipcolumns(*ranges,&block); self end
69
75
  end
70
- # Select columns from a CSV file. See Rio#csv and RIO::Doc::INTRO.
71
- def columns(*ranges,&block) target.columns(*ranges,&block); self end
72
- # Reject columns from a CSV file. See Rio#csv and RIO::Doc::INTRO.
73
- def nocolumns(*ranges,&block) target.nocolumns(*ranges,&block); self end
74
76
  end
75
77
  end
76
-
@@ -37,6 +37,8 @@
37
37
 
38
38
  module RIO
39
39
  class Rio
40
+ # module IF
41
+ # module Grande
40
42
  # Returns the contents of the rio as an array.
41
43
  # Rio#to_a is implemented in terms of Rio#each so the the following are roughly equivelent
42
44
  #
@@ -404,6 +406,51 @@ module RIO
404
406
  # Alias for Rio#> (copy-to grande operator)
405
407
  def copy_to(destination) target.copy_to(destination); self end
406
408
 
409
+
410
+ # Grande Pipe Operator
411
+ #
412
+ # The Rio pipe operator is actually an alternative syntax for calling the copy-to operator, designed to
413
+ # allow several copy operation to be performed in one line of code, with behaviour that mimics
414
+ # the pipe operator commonly available in shells.
415
+ #
416
+ # If +destination+ is a +cmdio+, a <tt>cmdpipe</tt> Rio is returned, and none of the commands are run.
417
+ #
418
+ # Otherwise the +cmdpipe+ Rio is run with the output of the pipe being copied to the destination.
419
+ # In this case a Rio representing the +destination+ is returned.
420
+ #
421
+ # If destination is not a Rio it is passed to the Rio constructor as is done with the copy-to operator
422
+ # except that if +destination+ is a String it is assumed to be a command instead of a path.
423
+ #
424
+ # rio('afile') | rio(?-,'grep i') | rio(?-) # returns rio(?-)
425
+ # # equivelent to rio(?-, 'grep i') < rio('afile') > rio(?-)
426
+ #
427
+ # rio('infile') | rio(?-, 'acmd') | rio(?-, 'acmd2') | rio('outfile')
428
+ # # same as
429
+ # # acmd = rio(?-,'acmd')
430
+ # # acmd2 = rio(?-,'acmd2')
431
+ # # out = rio('outfile')
432
+ # # acmd < rio('infile')
433
+ # # acmd2 < acmd
434
+ # # out < acmd2
435
+ #
436
+ # rio('afile') | 'acmd' | 'acmd2' | rio('outfile') # same thing
437
+ #
438
+ # acmdpipe = rio(?-,'acmd') | 'acmd2'
439
+ # rio('afile') | acmdpipe | rio('outfile') # same thing
440
+ #
441
+ # acmdpipe1 = rio(?|,'acmd','acmd2')
442
+ # rio('afile') | acmdpipe1 | rio('outfile') # same thing
443
+ #
444
+ # acmdpipe2 = rio('afile') | 'acmd' | 'acmd2'
445
+ # acmdpipe2 | rio('outfile') # same thing
446
+ #
447
+ # The grande pipe operator can not be used to create a +cmdpipe+ Rio that includes a destination.
448
+ # This must be done using a Rio constructor
449
+ # cmd_with_output = rio(?|,'acmd',rio('outfile'))
450
+ # rio('afile') | cmd_with_output # same as above
451
+ #
452
+ def |(destination) target | destination end
453
+
407
454
  # Grande Append-To Operator
408
455
  #
409
456
  # The append-to grande-operator is the same as Rio#> (copy-to) except that it opens the destination
@@ -536,6 +583,24 @@ module RIO
536
583
  def copy_from(source) target.copy_from(source); self end
537
584
 
538
585
 
586
+ # Temporarily set the Rio to read records, and call #get
587
+ #
588
+ # See also Rio#records, Rio#lines, Rio#each, Rio#[]
589
+ #
590
+ def getrec() target.getrec() end
591
+
592
+ # Temporarily set the Rio to read rows, and call #get
593
+ #
594
+ # See also Rio#rows, Rio#lines, Rio#each, Rio#[]
595
+ #
596
+ def getrow() target.getrow() end
597
+
598
+ # Temporarily set the Rio to read lines, and call #get
599
+ #
600
+ # See also Rio#records, Rio#lines, Rio#each, Rio#[]
601
+ #
602
+ def getline() target.getline() end
603
+
539
604
  # Reads and returns the next record from a Rio, honoring the grande selection methods.
540
605
  #
541
606
  # Returns nil on end of file.
@@ -543,11 +608,15 @@ module RIO
543
608
  # See also Rio#records, Rio#lines, Rio#each, Rio#[]
544
609
  #
545
610
  # ario = rio('afile').lines(10..12)
546
- # line10 = ario.getrec
547
- # line11 = ario.getrec
548
- # line12 = ario.getrec
549
- # a_nil = ario.getrec
550
- def getrec() target.getrec() end
611
+ # line10 = ario.get
612
+ # line11 = ario.get
613
+ # line12 = ario.get
614
+ # a_nil = ario.get
615
+ def get() target.get() end
616
+
617
+ # Writes a single record to a Rio
618
+ def putrec(el) target.putrec(el) end
619
+
551
620
 
552
621
  # Grande Exclude method
553
622
  #