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
@@ -54,7 +54,7 @@ module RIO
54
54
  module Output
55
55
  def put_(rec,*args)
56
56
  #p callstr('put_',rec,*args)
57
- self.ioh.print(rec)
57
+ self.ioh.print(rec.to_s)
58
58
  end
59
59
  end
60
60
  end
@@ -77,7 +77,7 @@ module RIO
77
77
  end
78
78
  module Output
79
79
  def put_(rec,*args)
80
- p callstr('put_',rec,*args)
80
+ #p callstr('put_',rec,*args)
81
81
  print(rec)
82
82
  end
83
83
  end
@@ -50,6 +50,7 @@ module RIO
50
50
  '?' => 'temp',
51
51
  '[' => 'aryio',
52
52
  '`' => 'cmdio',
53
+ '|' => 'cmdpipe',
53
54
  '#' => 'fd',
54
55
 
55
56
  ?_ => 'sysio',
@@ -59,6 +60,7 @@ module RIO
59
60
  ?? => 'temp',
60
61
  ?[ => 'aryio',
61
62
  ?` => 'cmdio',
63
+ ?| => 'cmdpipe',
62
64
  ?# => 'fd',
63
65
  }.freeze
64
66
  end
@@ -67,26 +69,38 @@ module RIO
67
69
  module RL #:nodoc: all
68
70
  PESCAPE = Regexp.new("[^-_.!~*'()a-zA-Z0-9;?:@&=+$,]",false, 'N').freeze
69
71
  ESCAPE = Regexp.new("[^-_.!~*'()a-zA-Z0-9;\/?:@&=+$,]",false, 'N').freeze
72
+ def escape(pth,esc=ESCAPE)
73
+ ::URI.escape(pth,esc)
74
+ end
75
+ def unescape(pth)
76
+ ::URI.unescape(pth)
77
+ end
70
78
  def fs2url(pth)
71
- # Base.fs2url(pth)
72
- pth.sub!(/^[a-zA-Z]:/,'')
79
+ #pth.sub!(/^[a-zA-Z]:/,'')
73
80
  pth = URI.escape(pth,ESCAPE)
74
- # (Local::SEPARATOR == '/' ? pth : pth.gsub(Local::SEPARATOR,%r|/|))
81
+ pth = '/' + pth if pth =~ /^[a-zA-Z]:/
82
+ pth
83
+ # (Local::SEPARATOR == '/' ? pth : pth.gsub(Local::SEPARATOR,%r|/|))
75
84
  end
76
85
 
77
86
  def url2fs(pth)
78
87
  # pth = pth.chop if pth.length > 1 and pth[-1] == ?/ cwd = RIO::RL.fs2url(::Dir.getwd)
79
88
 
80
- pth = pth.chop if pth != '/' and pth[-1] == ?/
89
+ #pth = pth.chop if pth != '/' and pth[-1] == ?/
81
90
  pth = ::URI.unescape(pth)
91
+ if pth =~ %r#^/[a-zA-Z]:#
92
+ pth = pth[1..-1]
93
+ end
94
+ pth
82
95
  # (Local::SEPARATOR == '/' ? pth : pth.gsub(%r|/|,Local::SEPARATOR))
83
96
  end
84
97
 
85
98
  def getwd()
86
- ::URI::FILE.build({:path => fs2url(::Dir.getwd)+'/'})
99
+ #::URI::FILE.build({:path => fs2url(::Dir.getwd)+'/'})
100
+ ::URI::FILE.build({:path => fs2url(::Dir.getwd)})
87
101
  end
88
102
 
89
- module_function :url2fs,:fs2url,:getwd
103
+ module_function :url2fs,:fs2url,:getwd,:escape,:unescape
90
104
  end
91
105
  end
92
106
  module RIO
@@ -98,14 +112,14 @@ module RIO
98
112
  SUBSEPAR = ':'
99
113
 
100
114
  class Base
115
+ def initialize(*args)
116
+
117
+ end
118
+
101
119
  def self.subscheme(s)
102
- # sch,opq,whole = split_riorl(s)
103
- # sch
104
120
  /^rio:([^:]+):/.match(s)[1]
105
- # s[4...s.index(SUBSEPAR,4)]
106
- # e = s.index(SUBSEPAR,b)
107
- # s.split(SUBSEPAR,3)[1]
108
121
  end
122
+
109
123
  def self.split_riorl(s)
110
124
  body = s[SCHC.length...s.length]
111
125
  m = SPLIT_RIORL_RE.match(body)
@@ -122,27 +136,36 @@ module RIO
122
136
  new(*(parms+a))
123
137
  end
124
138
 
125
- def rl()
126
- SCHC+self.url
127
- end
128
- def riorl() SCHC+self.url end
139
+ def rl() SCHC+self.url end
140
+
141
+ # def riorl() SCHC+self.url end
129
142
 
130
143
  def to_s() self.fspath || '' end
131
144
  def ==(other) self.to_s == other.to_s end
132
145
  def ===(other) self == other end
133
146
  def =~(other) other =~ self.to_str end
134
147
  def length() self.to_s.length end
148
+
135
149
  def fspath() nil end
136
150
  def path() nil end
137
151
 
138
152
  def to_rl() self.rl end
139
153
 
140
154
  def url() self.scheme+SUBSEPAR+self.opaque end
155
+ def close() nil end
156
+
157
+ def fs2url(pth) RL.fs2url(pth) end
158
+ def url2fs(pth) RL.url2fs(pth) end
159
+ def escape(pth,esc=RL::ESCAPE)
160
+ RL.escape(pth,esc)
161
+ end
162
+ def unescape(pth)
163
+ RL.unescape(pth)
164
+ end
165
+
141
166
  def callstr(func,*args)
142
167
  self.class.to_s+'['+self.to_s+']'+'.'+func.to_s+'('+args.join(',')+')'
143
168
  end
144
- def close() nil end
145
-
146
169
  end
147
170
  end
148
171
  end
@@ -44,58 +44,18 @@ module RIO
44
44
  module RL
45
45
  class Builder
46
46
 
47
- def self.canon(a)
48
- #puts "canon: #{a.inspect}"
49
- case a[0]
50
- when ::String
51
- case a[0]
52
- when /^[a-z][a-z]+:/
53
- a[0] = 'rio:'+a[0] unless a[0] =~ /^rio:/
54
- a
55
- when %r|^/|
56
- a[0] = 'rio:file://'+a[0]
57
- a
58
- else
59
- a[0] = 'rio:path:'+a[0]
60
- a
61
- end
62
- when RIO::Rio
63
- a[0] = a[0].to_rl
64
- canon(a)
65
- when RL::Base
66
- a
67
- when ::URI
68
- a
69
- when ?? , ?= , ?_ , ?",?[,?#,?`
70
- a[0] = 'rio:'+CHMAP[a[0]]+':'
71
- a
72
- when ?-
73
- a[0] = ( a.size == 1 ? 'rio:'+CHMAP[a[0]]+':' : 'rio:cmdio:' )
74
- a
75
- when ?$
76
- a[0] = 'rio:strio:'
77
- a
78
- when ::IO
79
- a.unshift('rio:sysio:')
80
- a
81
- when ::StringIO
82
- a.unshift('rio:strio:')
83
- a
84
- else
85
- a[0] = a[0].to_s
86
- canon(a)
87
- end
88
- end
89
-
90
-
91
47
  def self.build(*a)
92
48
  #puts "build: #{a.inspect}"
93
49
  a.flatten!
94
50
  case a[0]
95
51
  when ::String
96
52
  case a[0]
53
+ when /^[a-zA-Z]:/
54
+ a[0] = 'rio:file:///'+a[0]
97
55
  when /^[a-z][a-z]+:/
98
56
  a[0] = 'rio:'+a[0] unless a[0] =~ /^rio:/
57
+ when %r|^//|
58
+ a[0] = 'rio:file:'+a[0]
99
59
  when %r|^/|
100
60
  a[0] = 'file://'+a[0]
101
61
  return Factory.instance.riorl_class('file').new(*a)
@@ -105,9 +65,10 @@ module RIO
105
65
  when RIO::Rio
106
66
  a[0] = a[0].to_rl
107
67
  when RL::Base
108
- #p 'heeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'
109
68
  a0 = a.shift
110
- return a0.class.new(a0.uri.dup,*a)
69
+ #p 'THERE',a0,a0.clone
70
+ return a0.clone
71
+ #return a0.class.new(a0.clone,*a)
111
72
  when ::URI
112
73
  a0 = a.shift
113
74
  cl = Factory.instance.riorl_class(a0.scheme)
@@ -115,7 +76,7 @@ module RIO
115
76
  return o
116
77
  when ::Symbol
117
78
  a[0] = 'rio:' + a[0].to_s + ':'
118
- when ?? , ?= , ?_ , ?", ?[, ?#, ?`
79
+ when ?? , ?= , ?_ , ?", ?[, ?#, ?`, ?|
119
80
  a[0] = 'rio:'+CHMAP[a[0]]+':'
120
81
  when ?-
121
82
  a[0] = ( a.size == 1 ? 'rio:'+CHMAP[a[0]]+':' : 'rio:cmdio:' )
@@ -45,8 +45,6 @@ module RIO
45
45
  def opaque() '' end
46
46
  def self.splitrl(s) nil end
47
47
  #def path() self.class.const_get(:RIOPATH) end
48
- def path() nil end
49
- def fspath() nil end
50
48
  def to_s() url() end
51
49
  end
52
50
  end
@@ -58,6 +56,9 @@ module RIO
58
56
  def initialize(ios=nil)
59
57
  @ios = ios
60
58
  end
59
+ def initialize_copy(*args)
60
+ @ios = @ios.clone unless @ios.nil?
61
+ end
61
62
  def open(*args)
62
63
  @ios
63
64
  end
@@ -36,77 +36,130 @@
36
36
 
37
37
 
38
38
  require 'rio/rl/uri'
39
+ require 'rio/rl/pathmethods'
40
+
39
41
  module RIO
40
42
  module RL
41
43
  class PathBase < Base
42
44
  RESET_STATE = 'Path::Reset'
43
45
 
44
46
  RIOSCHEME = 'path'
47
+ HOST = URI::REGEXP::PATTERN::HOST
48
+ SCHEME = URI::REGEXP::PATTERN::SCHEME
45
49
 
46
50
  def initialize(pth,*args)
47
- @host = nil
51
+
52
+ @host = nil # host or nil
53
+ @fspath = nil
48
54
  case pth
55
+ when ::Hash
56
+ @host = pth[:host]
57
+ @fspath = RL.url2fs(pth[:path])
58
+ @base = pth[:base]
59
+ when RL::Base
60
+ @host = pth.host
61
+ @fspath = RL.url2fs(pth.path)
62
+ @base = pth.base
49
63
  when ::URI
50
- @uri = pth.dup
51
- @uri.path = '/' if pth.absolute? and pth.path == ''
52
- @pth = @uri.path
53
- when %r|^file://(localhost)?(/.*)?$|
54
- @host = $1
55
- @pth = $2 || '/'
64
+ u = pth.dup
65
+ u.path = '/' if pth.absolute? and pth.path == ''
66
+ @fspath = RL.url2fs(u.path)
67
+ @host = u.host
68
+ when %r|^file://(#{HOST})?(/.*)?$|
69
+ @host = $1 || ''
70
+ @fspath = $2 ? RL.url2fs($2) : '/'
56
71
  else
57
- @pth = pth
58
- @uri= nil
72
+ self.fspath = pth
59
73
  end
60
- @pth.sub!(%r|/\.$|,'/')
61
- @wd = nil
62
- if !args.empty? and args[-1].kind_of?(::Hash) and (b = args.pop['base'])
63
- @wd = case b
64
- when %r%^file://(localhost)?(/.*)?$% then $2 || '/'
74
+ args = _get_base_from_args(args)
75
+ self.join(*args) unless args.empty?
76
+ unless self.absolute? or @base
77
+ @base = RL.fs2url(::Dir.getwd)+'/'
78
+ end
79
+ @fspath.sub!(%r|/\.$|,'/')
80
+ end
81
+ def pathroot()
82
+ return nil unless absolute?
83
+ rrl = self.clone
84
+ if self.urlpath =~ %r%^(/[a-zA-Z]):%
85
+ $1+':/'
86
+ else
87
+ '/'
88
+ end
89
+ end
90
+ include PathMethods
91
+
92
+ def _get_base_from_args(args)
93
+ @base = nil
94
+ if !args.empty? and args[-1].kind_of?(::Hash) and (b = args.pop[:base])
95
+ @base = case b
96
+ when %r%^file://(#{HOST})?(/.*)?$% then b
65
97
  when %r%^/% then b
66
98
  else RL.fs2url(::Dir.getwd)+'/'+b
67
99
  end
68
- @wd.squeeze('/')
100
+ @base.squeeze('/')
69
101
  end
70
- self.join(*args) unless args.empty?
71
- @wd = @pth if @pth[0] == ?/
72
- @wd = RL.fs2url(::Dir.getwd)+'/' unless @wd
102
+ args
73
103
  end
74
-
75
- def parse_url(str)
76
- ::URI.parse(::URI.escape(str,ESCAPE))
104
+ def base(arg=nil)
105
+ self.base = arg unless arg.nil?
106
+ if absolute?
107
+ #p self.dirname
108
+ urlpath
109
+ else
110
+ @base
111
+ end
77
112
  end
113
+ def base=(arg) @base = arg end
114
+
115
+ # def urlpath() @pth end
116
+ # def urlpath=(arg) @pth = arg end
117
+ def urlpath() RL.fs2url(@fspath) end
118
+ def urlpath=(arg) @fspath = RL.url2fs(arg) end
78
119
 
79
- def initialize_copy(*args)
80
- super
81
- @uri = nil
120
+ def path() self.fspath() end
121
+ def path=(arg) self.fspath = arg end
122
+ def path_no_slash() self.path.sub(/\/$/,'') end
123
+ def use_host?
124
+ !(@host.nil? || @host.empty? || @host == 'localhost')
82
125
  end
83
126
 
84
- def init_paths()
85
- @uri = nil
127
+ def fspath()
128
+ if use_host?
129
+ '//' + @host + @fspath
130
+ else
131
+ @fspath
132
+ end
86
133
  end
87
- def path=(pt)
88
- @uri = nil
89
- @pth = pt
134
+ def fspath=(pt)
135
+ if pt =~ %r|^//(#{HOST})(/.*)?$|
136
+ @host = $1
137
+ @fspath = $2 || '/'
138
+ else
139
+ @fspath = pt
140
+ end
90
141
  end
91
- def join(*args)
92
- return self if args.empty?
93
- sa = args.map(&:to_s).map { |s| ::URI.escape(s,ESCAPE) }
94
- sa.unshift(@pth) unless @pth.empty?
95
- @uri = nil
96
- @pth = sa.join('/').squeeze('/')
142
+
143
+ def opaque() (absolute? ? "//#{@host}#{self.urlpath}" : self.urlpath) end
144
+
145
+ def scheme() (absolute? ? 'file' : 'path') end
146
+ def host() @host end
147
+ def host=(arg) @host = arg end
148
+
149
+ def absolute?()
150
+ (@fspath =~ %r%^([a-zA-Z]:)?/% ? true : false)
97
151
  end
98
-
99
- def uri()
100
- @uri ||= (absolute? ? ::URI::FILE.new('file',nil,@host,nil,nil,@pth,nil,nil,nil) : ::URI.parse(@pth))
152
+ alias abs? absolute?
153
+
154
+ def abs()
155
+ return self if absolute?
156
+ self.class.new(@base, @fspath)
101
157
  end
102
- def url()
103
- if uri and uri.scheme
104
- self.uri.to_s
105
- else
106
- self.scheme+SUBSEPAR+self.opaque
107
- end
158
+
159
+ def uri()
160
+ (absolute? ?
161
+ ::URI::FILE.new('file',nil,@host,nil,nil,RL.fs2url(@fspath),nil,nil,nil) : ::URI.parse(RL.fs2url(@fspath)))
108
162
  end
109
- def to_s() RL.url2fs(@pth) end
110
163
 
111
164
  def self.splitrl(s)
112
165
  sch,opq,whole = split_riorl(s)
@@ -115,41 +168,11 @@ module RIO
115
168
  else [opq]
116
169
  end
117
170
  end
118
- def scheme() (absolute? ? 'file' : 'path') end
119
- def opaque() (absolute? ? "//#{@host}#{@pth}" : @pth) end
120
- def fspath() RL.url2fs(@pth) end
121
- def fs2url(pth) RL.fs2url(pth) end
122
- def url2fs(pth) RL.url2fs(pth) end
123
- def wd=(wd) @wd = wd end
124
- def route_from(other)
125
- rfrl = self.class.new(uri.route_from(other.uri))
126
- rfrl.wd = other.path
127
- rfrl
128
- end
129
- def route_to(other)
130
- rtrl = self.class.new(uri.route_to(other.uri))
131
- rtrl.wd = self.abs
132
- rtrl
133
- end
134
- def merge(other)
135
- self.class.new(uri.merge(other.uri))
136
- end
137
- def base(arg=nil)
138
- unless arg.nil?
139
- self.wd = arg
140
- end
141
- (absolute? ? @pth : @wd)
142
- end
143
171
 
144
- def abs()
145
- return self if absolute?
146
- self.class.new(@wd + @pth)
172
+
173
+ def dirname()
174
+ Impl::U.dirname(self.path_no_slash)
147
175
  end
148
- def path_no_slash() @pth.sub(/\/$/,'') end
149
- def path() @pth end
150
- def absolute?() @pth[0] == ?/ end
151
- def host() @host ||= uri.host end
152
- alias abs? absolute?
153
176
 
154
177
  end
155
178
  end