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,95 @@
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 'rio/rl/uri'
39
+ module RIO
40
+ module RL
41
+ module PathMethods
42
+ def urlroot()
43
+ return nil unless absolute?
44
+ cp = self.clone
45
+ cp.urlpath = self.pathroot
46
+ cp.url
47
+ end
48
+ def _parts()
49
+ pr = self.pathroot
50
+ ur = self.urlroot.sub(/#{pr}$/,'')
51
+ up = self.urlpath.sub(/^#{pr}/,'')
52
+
53
+ [ur,pr,up]
54
+ end
55
+ def split()
56
+ if absolute?
57
+ parts = self._parts
58
+ sparts = []
59
+ sparts << parts[0] + parts[1]
60
+ sparts += parts[2].split('/')
61
+ else
62
+ sparts = self.urlpath.split('/')
63
+ end
64
+ require 'rio/to_rio'
65
+ rlparts = sparts.map { |str| self.class.new(str) }
66
+ (1...sparts.length).each { |i|
67
+ rlparts[i].base = rlparts[i-1].abs.url + '/'
68
+ }
69
+ rlparts
70
+ end
71
+
72
+ def join(*args)
73
+ return self if args.empty?
74
+ sa = args.map { |arg| ::URI.escape(arg.to_s,ESCAPE) }
75
+ sa.unshift(self.urlpath) unless self.urlpath.empty?
76
+ self.urlpath = sa.join('/').squeeze('/')
77
+ end
78
+
79
+ def parse_url(str)
80
+ ::URI.parse(::URI.escape(str,ESCAPE))
81
+ end
82
+
83
+ def route_from(other)
84
+ self.class.new(uri.route_from(other.uri),{:base => other.url})
85
+ end
86
+ def route_to(other)
87
+ self.class.new(uri.route_to(other.uri),{:base => self.url})
88
+ end
89
+ def merge(other)
90
+ self.class.new(uri.merge(other.uri))
91
+ end
92
+
93
+ end
94
+ end
95
+ end
@@ -41,82 +41,72 @@ module RIO
41
41
  class URIBase < Base
42
42
  attr_reader :uri
43
43
  attr_writer :base
44
+ SCHEME = URI::REGEXP::PATTERN::SCHEME
44
45
  def initialize(u,*args)
45
46
  #p callstr('initialize',u,*args)
46
47
  # u should be a ::URI or something that can be parsed to one
47
- args = get_base(*args)
48
+ args = _get_base_from_args(args)
48
49
  @uri = _mkuri(u)
49
50
  self.join(*args)
50
51
  @uri.path = '/' if @uri.absolute? and @uri.path == ''
51
52
  end
52
53
  def initialize_copy(*args)
53
- #p callstr('initialize_copy',*args)
54
-
55
54
  super
56
55
  @uri = @uri.clone unless @uri.nil?
57
56
  @base = @base.clone unless @base.nil?
58
57
  end
59
- def _mkuri(arg)
60
- (arg.kind_of?(::URI) ? arg.dup : parse_url(arg.to_s))
61
- end
62
- def base(arg=nil)
63
- @base = _mkuri(arg) unless arg.nil? or @uri.absolute?
64
- (@base.nil? ? @uri : @base)
65
- end
66
- def join(*args)
67
- # self.class.joinuri(self.uri,*args)
68
- return @uri if args.empty?
69
- sa = args.map(&:to_s).map { |str| ::URI.escape(str,ESCAPE) }
70
- sa.unshift @uri.path unless @uri.path.empty?
71
- @uri.path = sa.join('/')
72
- @uri.path.gsub!(%r|/+|,'/')
73
- end
74
-
75
- def parse_url(str)
76
- ::URI.parse(::URI.escape(str,ESCAPE))
77
- end
78
-
79
- def url() self.uri.to_s end
80
- def fs2url(pth) RL.fs2url(pth) end
81
- def url2fs(pth) RL.url2fs(pth) end
82
- def fspath() RL.url2fs(@uri.path) end
83
-
84
- def route_from(other)
85
- self.class.new(@uri.route_from(other.uri),other)
86
- end
87
- def route_to(other)
88
- self.class.new(@uri.route_to(other.uri),self.abs)
89
- end
90
- def merge(other)
91
- self.class.new(@uri.merge(other.uri))
92
- end
93
- def get_base(*args)
58
+ def _get_base_from_args(args)
94
59
  # args.each { |a| p "get_base len=#{args.length} #{a.class}##{a.to_s}" }
95
60
  @base = nil
96
- if args.length > 0
97
- b = args.pop
61
+ if !args.empty? and args[-1].kind_of?(::Hash) and (b = args.pop[:base])
98
62
  @base = case b
99
63
  when URIBase then b.uri if b.uri.absolute?
100
64
  when ::URI then b if b.absolute?
101
- when ::String then ::URI.parse(b) if b =~ /^[a-z]+:/
65
+ when ::String then ::URI.parse(b) if b =~ /^#{SCHEME}:/
102
66
  end
103
- args.push b unless @base
104
67
  end
105
68
  args
106
69
  end
107
- def abs()
108
- return self if @uri.absolute?
109
- self.class.new(@base.merge(@uri),@base)
70
+ def pathroot() '/' end
71
+ def _mkuri(arg)
72
+ (arg.kind_of?(::URI) ? arg.dup : parse_url(arg.to_s))
110
73
  end
111
- def path_no_slash
112
- path.sub(/\/$/,'')
74
+ def base(arg=nil)
75
+ self.base = arg unless arg.nil? or @uri.absolute?
76
+ @base || @uri
113
77
  end
114
- def path=(pt)
115
- @uri.path = pt
78
+ def base=(arg) @base = _mkuri(arg) end
79
+ require 'rio/rl/pathmethods'
80
+ include PathMethods
81
+
82
+ def urlpath=(pt) @uri.path = pt end
83
+ def urlpath() @uri.path end
84
+
85
+ def path=(pt) self.urlpath = pt end
86
+ def path() self.urlpath end
87
+ def path_no_slash() self.path.sub(/\/$/,'') end
88
+
89
+ def opaque()
90
+ u = @uri.dup
91
+ u.scheme = nil
92
+ u.to_s
116
93
  end
117
- extend Forwardable
118
- def_instance_delegators(:@uri,:to_s,:path,:absolute?,:host)
94
+
95
+ def scheme() @uri.scheme end
96
+ def host() @uri.host end
97
+ def host=(arg) @uri.host = arg end
98
+
99
+ def absolute?() @uri.absolute? end
119
100
  alias abs? absolute?
101
+
102
+ def abs()
103
+ return self if absolute?
104
+ self.class.new(@base.merge(@uri),{:base => @base})
105
+ end
106
+
107
+ def url() @uri.to_s end
108
+ def to_s() self.url end
109
+
120
110
  end
121
111
  end
122
112
  end
@@ -43,8 +43,12 @@ module RIO
43
43
  class RL < RL::SysIOBase
44
44
  RIOSCHEME = 'cmdio'
45
45
  RIOPATH = RIO::RL::CHMAP.invert[RIOSCHEME].to_s.freeze
46
+ attr_reader :cmd
46
47
  def initialize(cmd="")
47
- @cmd = cmd
48
+ case cmd
49
+ when self.class then @cmd = cmd.cmd
50
+ else @cmd = cmd
51
+ end
48
52
  end
49
53
  def opaque()
50
54
  URI.escape(@cmd,RIO::RL::ESCAPE)
@@ -53,6 +57,8 @@ module RIO
53
57
  @cmd
54
58
  end
55
59
  def open(m)
60
+ #p "opening #{@cmd}"
61
+ #raise RuntimeError, "Should Not Open"
56
62
  ::IO.popen(@cmd,m.to_s)
57
63
  end
58
64
 
@@ -0,0 +1,150 @@
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 'rio/rl/ioi'
39
+ require 'rio/stream'
40
+ require 'rio/stream/open'
41
+ require 'rio/piper'
42
+
43
+ module RIO
44
+ module CmdPipe #:nodoc: all
45
+ RESET_STATE = 'CmdPipe::Stream::Reset'
46
+
47
+ class RL < RL::IOIBase
48
+ RIOSCHEME = 'cmdpipe'
49
+ RIOPATH = RIO::RL::CHMAP.invert[RIOSCHEME].to_s.freeze
50
+ attr_reader :piper
51
+
52
+ def initialize(*args)
53
+ case args[0]
54
+ when CmdPipe::RL
55
+ @piper = args[0].piper
56
+ when Piper::Base
57
+ @piper = args[0]
58
+ else
59
+ @piper = Piper::Base.new(*args)
60
+ end
61
+ end
62
+ def initialize_copy(*args)
63
+ @piper = @piper.clone
64
+ end
65
+ def opaque()
66
+ #p callstr('opaque')
67
+ @piper.rios.map{|cmd| URI.escape(cmd.to_s,RIO::RL::ESCAPE)}.join('|')
68
+ end
69
+ def to_s()
70
+ return "" if @piper.rios.nil? or @piper.rios.empty?
71
+ @piper.rios.map{|cmd| cmd.to_s}.join('|')
72
+ end
73
+ def open(m,*args)
74
+ @outp = rio(?")
75
+ rp = Piper::Base.new(@piper,@outp)
76
+ rp.run
77
+ @outp
78
+ end
79
+ SPLIT_RE = %r|(?:([^\|]+)(?:\|([^\|]+))*)?$|.freeze
80
+ def self.splitrl(s)
81
+ #p "S='#{s}'"
82
+ sub,opq,whole = split_riorl(s)
83
+ if opq.nil? or opq.empty?
84
+ []
85
+ elsif bm = SPLIT_RE.match(opq)
86
+ escaped_cmd = bm[1]
87
+ cmd = URI.unescape(escaped_cmd)
88
+ [cmd]
89
+ else
90
+ []
91
+ end
92
+ end
93
+ end
94
+ module Stream
95
+ class Reset < State::Base
96
+ include Ops::Path::URI
97
+ include Piper::Cp::Util
98
+ def check?() true end
99
+ def |(arg)
100
+ ario = ensure_cmd_rio(arg)
101
+ npiper = Piper::Base.new(self.rl.piper,ario)
102
+ process_pipe_arg_(npiper)
103
+ end
104
+ def piper
105
+ self.rl.piper
106
+ end
107
+ def has_output_dest?
108
+ piper.has_output_dest?
109
+ end
110
+ # def when_missing(sym,*args)
111
+ # #p callstr('when_missing',sym,*args)
112
+ # become 'CmdPipe::Stream::Open'
113
+ # end
114
+ end
115
+ class Open < RIO::Stream::Open
116
+ def input() stream_state('CmdPipe::Stream::Input') end
117
+ def output() stream_state('CmdPipe::Stream::Output') end
118
+ def inout() stream_state('CmdPipe::Stream::InOut') end
119
+ def open_(*args)
120
+ unless open?
121
+ ios = self.rl.open(mode?,*args)
122
+ self.ioh = ios #IOH::Stream.new(ios)
123
+ end
124
+ self
125
+ end
126
+ end
127
+
128
+ module Ops
129
+ end
130
+
131
+ class Input < RIO::Stream::Input
132
+ include Ops
133
+ def ior
134
+ ioh.rd
135
+ end
136
+ end
137
+
138
+ class Output < RIO::Stream::Output
139
+ include Ops
140
+ def iow
141
+ ioh.wr
142
+ end
143
+ end
144
+
145
+ class InOut < RIO::Stream::InOut
146
+ include Ops
147
+ end
148
+ end
149
+ end
150
+ end
@@ -50,8 +50,6 @@ module RIO
50
50
  sub,opq,whole = split_riorl(s)
51
51
  [whole]
52
52
  end
53
- def to_s() self.url end
54
- def scheme() self.uri.scheme end
55
53
  def open(*args)
56
54
  RIO::FTP::Conn.new(@uri)
57
55
  end
@@ -62,8 +60,6 @@ module RIO
62
60
  sub,opq,whole = split_riorl(s)
63
61
  [whole]
64
62
  end
65
- def to_s() self.url end
66
- def scheme() self.uri.scheme end
67
63
  def open(*args)
68
64
  @uri.open
69
65
  end
@@ -45,8 +45,6 @@ module RIO
45
45
  sub,opq,whole = split_riorl(s)
46
46
  [whole]
47
47
  end
48
- def to_s() self.url end
49
- def scheme() self.uri.scheme end
50
48
  require 'open-uri'
51
49
  def open(*args)
52
50
  self.uri.open
@@ -50,6 +50,22 @@ module RIO
50
50
  def initialize(str="")
51
51
  @str = str
52
52
  end
53
+
54
+ def opaque() sprintf('0x%08x',@str.object_id) end
55
+
56
+ # must be able to process both
57
+ # parse('rio:strio',string)
58
+ # parse('rio:strio:0xHEXIOS')
59
+ SPLIT_RE = %r|0x([0-9a-fA-F]+)$|
60
+ def self.splitrl(s)
61
+ sub,opq,whole = split_riorl(s)
62
+ if bm = SPLIT_RE.match(opq)
63
+ oid = bm[1].hex
64
+ str = ObjectSpace._id2ref(oid)
65
+ [str]
66
+ end
67
+ end
68
+
53
69
  def open(m,*args)
54
70
  ::StringIO.new(@str,m.to_s,*args)
55
71
  end
@@ -54,9 +54,9 @@ module RIO
54
54
  #def path() nil end
55
55
  def scheme() self.class.const_get(:RIOSCHEME) end
56
56
  def opaque()
57
- td = @tmpdir.to_s
57
+ td = self.escape(@tmpdir.to_s)
58
58
  td += '/' unless td.nil? or td.empty? or (td.ends_with?('/') and td != '/')
59
- td+@prefix
59
+ td + self.escape(@prefix)
60
60
  end
61
61
 
62
62
  SPLIT_RE = %r|(?:(.*)/)?([^/]*)$|.freeze
@@ -134,15 +134,15 @@ module RIO
134
134
  @tempobj = nil
135
135
  end
136
136
  def check?() true end
137
- def dir(prefix=rl.prefix,tmpdir=rl.tmpdir)
137
+ def mkdir(prefix=rl.prefix,tmpdir=rl.tmpdir)
138
138
  self.rl = RIO::Temp::Dir::RL.new(prefix, tmpdir)
139
139
  become 'Dir::Existing'
140
140
  end
141
- def mkdir()
142
- dir()
143
- end
141
+ # def mkdir()
142
+ # dir()
143
+ # end
144
144
  def chdir(&block)
145
- dir.chdir(&block)
145
+ self.mkdir.chdir(&block)
146
146
  end
147
147
  def file(prefix=rl.prefix,tmpdir=rl.tmpdir)
148
148
  self.rl = RIO::Temp::File::RL.new(prefix, tmpdir)