rio 0.3.4 → 0.3.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (349) hide show
  1. data/ChangeLog +287 -0
  2. data/Rakefile +7 -9
  3. data/VERSION +1 -1
  4. data/doc/ANNOUNCE +20 -1
  5. data/doc/RELEASE_NOTES +41 -0
  6. data/doc/rdoc/classes/Kernel.html +181 -0
  7. data/doc/rdoc/classes/Kernel.src/M000214.html +18 -0
  8. data/doc/rdoc/classes/RIO.html +621 -0
  9. data/doc/rdoc/classes/RIO.src/M000001.html +18 -0
  10. data/doc/rdoc/classes/RIO.src/M000002.html +18 -0
  11. data/doc/rdoc/classes/RIO.src/M000003.html +18 -0
  12. data/doc/rdoc/classes/RIO/Doc.html +138 -0
  13. data/doc/rdoc/classes/RIO/Doc/HOWTO.html +1040 -0
  14. data/doc/rdoc/classes/RIO/Doc/INTRO.html +1613 -0
  15. data/doc/rdoc/classes/RIO/Doc/MISC.html +443 -0
  16. data/doc/rdoc/classes/RIO/Doc/SYNOPSIS.html +338 -0
  17. data/doc/rdoc/classes/RIO/IF.html +114 -0
  18. data/doc/rdoc/classes/RIO/IF/CSV.html +202 -0
  19. data/doc/rdoc/classes/RIO/IF/CSV.src/M000004.html +19 -0
  20. data/doc/rdoc/classes/RIO/IF/CSV.src/M000005.html +16 -0
  21. data/doc/rdoc/classes/RIO/IF/CSV.src/M000006.html +16 -0
  22. data/doc/rdoc/classes/RIO/IF/YAML.html +499 -0
  23. data/doc/rdoc/classes/RIO/IF/YAML.src/M000007.html +19 -0
  24. data/doc/rdoc/classes/RIO/IF/YAML.src/M000008.html +16 -0
  25. data/doc/rdoc/classes/RIO/IF/YAML.src/M000009.html +16 -0
  26. data/doc/rdoc/classes/RIO/IF/YAML.src/M000010.html +16 -0
  27. data/doc/rdoc/classes/RIO/IF/YAML.src/M000011.html +16 -0
  28. data/doc/rdoc/classes/RIO/IF/YAML.src/M000012.html +16 -0
  29. data/doc/rdoc/classes/RIO/IF/YAML.src/M000013.html +16 -0
  30. data/doc/rdoc/classes/RIO/IF/YAML.src/M000014.html +16 -0
  31. data/doc/rdoc/classes/RIO/IF/YAML.src/M000015.html +16 -0
  32. data/doc/rdoc/classes/RIO/IF/YAML.src/M000016.html +16 -0
  33. data/doc/rdoc/classes/RIO/IF/YAML.src/M000017.html +16 -0
  34. data/doc/rdoc/classes/RIO/Rio.html +7121 -0
  35. data/doc/rdoc/classes/RIO/Rio.src/M000018.html +18 -0
  36. data/doc/rdoc/classes/RIO/Rio.src/M000019.html +20 -0
  37. data/doc/rdoc/classes/RIO/Rio.src/M000020.html +27 -0
  38. data/doc/rdoc/classes/RIO/Rio.src/M000021.html +16 -0
  39. data/doc/rdoc/classes/RIO/Rio.src/M000023.html +19 -0
  40. data/doc/rdoc/classes/RIO/Rio.src/M000024.html +20 -0
  41. data/doc/rdoc/classes/RIO/Rio.src/M000025.html +16 -0
  42. data/doc/rdoc/classes/RIO/Rio.src/M000026.html +16 -0
  43. data/doc/rdoc/classes/RIO/Rio.src/M000027.html +16 -0
  44. data/doc/rdoc/classes/RIO/Rio.src/M000028.html +16 -0
  45. data/doc/rdoc/classes/RIO/Rio.src/M000029.html +16 -0
  46. data/doc/rdoc/classes/RIO/Rio.src/M000030.html +16 -0
  47. data/doc/rdoc/classes/RIO/Rio.src/M000031.html +16 -0
  48. data/doc/rdoc/classes/RIO/Rio.src/M000032.html +16 -0
  49. data/doc/rdoc/classes/RIO/Rio.src/M000033.html +16 -0
  50. data/doc/rdoc/classes/RIO/Rio.src/M000034.html +16 -0
  51. data/doc/rdoc/classes/RIO/Rio.src/M000035.html +16 -0
  52. data/doc/rdoc/classes/RIO/Rio.src/M000036.html +16 -0
  53. data/doc/rdoc/classes/RIO/Rio.src/M000037.html +16 -0
  54. data/doc/rdoc/classes/RIO/Rio.src/M000038.html +16 -0
  55. data/doc/rdoc/classes/RIO/Rio.src/M000039.html +16 -0
  56. data/doc/rdoc/classes/RIO/Rio.src/M000040.html +16 -0
  57. data/doc/rdoc/classes/RIO/Rio.src/M000041.html +16 -0
  58. data/doc/rdoc/classes/RIO/Rio.src/M000042.html +16 -0
  59. data/doc/rdoc/classes/RIO/Rio.src/M000043.html +16 -0
  60. data/doc/rdoc/classes/RIO/Rio.src/M000044.html +16 -0
  61. data/doc/rdoc/classes/RIO/Rio.src/M000045.html +16 -0
  62. data/doc/rdoc/classes/RIO/Rio.src/M000046.html +16 -0
  63. data/doc/rdoc/classes/RIO/Rio.src/M000047.html +16 -0
  64. data/doc/rdoc/classes/RIO/Rio.src/M000048.html +16 -0
  65. data/doc/rdoc/classes/RIO/Rio.src/M000049.html +16 -0
  66. data/doc/rdoc/classes/RIO/Rio.src/M000050.html +16 -0
  67. data/doc/rdoc/classes/RIO/Rio.src/M000051.html +16 -0
  68. data/doc/rdoc/classes/RIO/Rio.src/M000052.html +16 -0
  69. data/doc/rdoc/classes/RIO/Rio.src/M000053.html +16 -0
  70. data/doc/rdoc/classes/RIO/Rio.src/M000054.html +16 -0
  71. data/doc/rdoc/classes/RIO/Rio.src/M000055.html +16 -0
  72. data/doc/rdoc/classes/RIO/Rio.src/M000056.html +16 -0
  73. data/doc/rdoc/classes/RIO/Rio.src/M000057.html +16 -0
  74. data/doc/rdoc/classes/RIO/Rio.src/M000058.html +16 -0
  75. data/doc/rdoc/classes/RIO/Rio.src/M000059.html +16 -0
  76. data/doc/rdoc/classes/RIO/Rio.src/M000060.html +16 -0
  77. data/doc/rdoc/classes/RIO/Rio.src/M000061.html +16 -0
  78. data/doc/rdoc/classes/RIO/Rio.src/M000062.html +16 -0
  79. data/doc/rdoc/classes/RIO/Rio.src/M000063.html +16 -0
  80. data/doc/rdoc/classes/RIO/Rio.src/M000064.html +16 -0
  81. data/doc/rdoc/classes/RIO/Rio.src/M000065.html +16 -0
  82. data/doc/rdoc/classes/RIO/Rio.src/M000066.html +16 -0
  83. data/doc/rdoc/classes/RIO/Rio.src/M000067.html +16 -0
  84. data/doc/rdoc/classes/RIO/Rio.src/M000068.html +16 -0
  85. data/doc/rdoc/classes/RIO/Rio.src/M000069.html +16 -0
  86. data/doc/rdoc/classes/RIO/Rio.src/M000070.html +16 -0
  87. data/doc/rdoc/classes/RIO/Rio.src/M000071.html +16 -0
  88. data/doc/rdoc/classes/RIO/Rio.src/M000072.html +16 -0
  89. data/doc/rdoc/classes/RIO/Rio.src/M000073.html +16 -0
  90. data/doc/rdoc/classes/RIO/Rio.src/M000074.html +16 -0
  91. data/doc/rdoc/classes/RIO/Rio.src/M000075.html +16 -0
  92. data/doc/rdoc/classes/RIO/Rio.src/M000076.html +16 -0
  93. data/doc/rdoc/classes/RIO/Rio.src/M000077.html +16 -0
  94. data/doc/rdoc/classes/RIO/Rio.src/M000078.html +16 -0
  95. data/doc/rdoc/classes/RIO/Rio.src/M000079.html +16 -0
  96. data/doc/rdoc/classes/RIO/Rio.src/M000080.html +16 -0
  97. data/doc/rdoc/classes/RIO/Rio.src/M000081.html +16 -0
  98. data/doc/rdoc/classes/RIO/Rio.src/M000082.html +16 -0
  99. data/doc/rdoc/classes/RIO/Rio.src/M000083.html +16 -0
  100. data/doc/rdoc/classes/RIO/Rio.src/M000084.html +16 -0
  101. data/doc/rdoc/classes/RIO/Rio.src/M000085.html +16 -0
  102. data/doc/rdoc/classes/RIO/Rio.src/M000086.html +16 -0
  103. data/doc/rdoc/classes/RIO/Rio.src/M000087.html +16 -0
  104. data/doc/rdoc/classes/RIO/Rio.src/M000088.html +16 -0
  105. data/doc/rdoc/classes/RIO/Rio.src/M000089.html +16 -0
  106. data/doc/rdoc/classes/RIO/Rio.src/M000090.html +16 -0
  107. data/doc/rdoc/classes/RIO/Rio.src/M000091.html +16 -0
  108. data/doc/rdoc/classes/RIO/Rio.src/M000092.html +16 -0
  109. data/doc/rdoc/classes/RIO/Rio.src/M000093.html +16 -0
  110. data/doc/rdoc/classes/RIO/Rio.src/M000094.html +16 -0
  111. data/doc/rdoc/classes/RIO/Rio.src/M000095.html +16 -0
  112. data/doc/rdoc/classes/RIO/Rio.src/M000096.html +16 -0
  113. data/doc/rdoc/classes/RIO/Rio.src/M000097.html +16 -0
  114. data/doc/rdoc/classes/RIO/Rio.src/M000098.html +16 -0
  115. data/doc/rdoc/classes/RIO/Rio.src/M000099.html +16 -0
  116. data/doc/rdoc/classes/RIO/Rio.src/M000100.html +16 -0
  117. data/doc/rdoc/classes/RIO/Rio.src/M000101.html +16 -0
  118. data/doc/rdoc/classes/RIO/Rio.src/M000102.html +16 -0
  119. data/doc/rdoc/classes/RIO/Rio.src/M000103.html +16 -0
  120. data/doc/rdoc/classes/RIO/Rio.src/M000104.html +16 -0
  121. data/doc/rdoc/classes/RIO/Rio.src/M000105.html +16 -0
  122. data/doc/rdoc/classes/RIO/Rio.src/M000106.html +16 -0
  123. data/doc/rdoc/classes/RIO/Rio.src/M000107.html +16 -0
  124. data/doc/rdoc/classes/RIO/Rio.src/M000108.html +16 -0
  125. data/doc/rdoc/classes/RIO/Rio.src/M000109.html +16 -0
  126. data/doc/rdoc/classes/RIO/Rio.src/M000110.html +16 -0
  127. data/doc/rdoc/classes/RIO/Rio.src/M000111.html +16 -0
  128. data/doc/rdoc/classes/RIO/Rio.src/M000112.html +16 -0
  129. data/doc/rdoc/classes/RIO/Rio.src/M000113.html +16 -0
  130. data/doc/rdoc/classes/RIO/Rio.src/M000114.html +16 -0
  131. data/doc/rdoc/classes/RIO/Rio.src/M000115.html +16 -0
  132. data/doc/rdoc/classes/RIO/Rio.src/M000116.html +16 -0
  133. data/doc/rdoc/classes/RIO/Rio.src/M000117.html +16 -0
  134. data/doc/rdoc/classes/RIO/Rio.src/M000118.html +16 -0
  135. data/doc/rdoc/classes/RIO/Rio.src/M000119.html +16 -0
  136. data/doc/rdoc/classes/RIO/Rio.src/M000120.html +16 -0
  137. data/doc/rdoc/classes/RIO/Rio.src/M000121.html +16 -0
  138. data/doc/rdoc/classes/RIO/Rio.src/M000122.html +16 -0
  139. data/doc/rdoc/classes/RIO/Rio.src/M000123.html +16 -0
  140. data/doc/rdoc/classes/RIO/Rio.src/M000124.html +16 -0
  141. data/doc/rdoc/classes/RIO/Rio.src/M000125.html +16 -0
  142. data/doc/rdoc/classes/RIO/Rio.src/M000126.html +16 -0
  143. data/doc/rdoc/classes/RIO/Rio.src/M000127.html +16 -0
  144. data/doc/rdoc/classes/RIO/Rio.src/M000128.html +16 -0
  145. data/doc/rdoc/classes/RIO/Rio.src/M000129.html +16 -0
  146. data/doc/rdoc/classes/RIO/Rio.src/M000130.html +16 -0
  147. data/doc/rdoc/classes/RIO/Rio.src/M000131.html +16 -0
  148. data/doc/rdoc/classes/RIO/Rio.src/M000132.html +16 -0
  149. data/doc/rdoc/classes/RIO/Rio.src/M000133.html +16 -0
  150. data/doc/rdoc/classes/RIO/Rio.src/M000134.html +16 -0
  151. data/doc/rdoc/classes/RIO/Rio.src/M000135.html +16 -0
  152. data/doc/rdoc/classes/RIO/Rio.src/M000136.html +16 -0
  153. data/doc/rdoc/classes/RIO/Rio.src/M000137.html +16 -0
  154. data/doc/rdoc/classes/RIO/Rio.src/M000138.html +16 -0
  155. data/doc/rdoc/classes/RIO/Rio.src/M000139.html +16 -0
  156. data/doc/rdoc/classes/RIO/Rio.src/M000140.html +16 -0
  157. data/doc/rdoc/classes/RIO/Rio.src/M000141.html +16 -0
  158. data/doc/rdoc/classes/RIO/Rio.src/M000142.html +16 -0
  159. data/doc/rdoc/classes/RIO/Rio.src/M000143.html +16 -0
  160. data/doc/rdoc/classes/RIO/Rio.src/M000144.html +16 -0
  161. data/doc/rdoc/classes/RIO/Rio.src/M000145.html +16 -0
  162. data/doc/rdoc/classes/RIO/Rio.src/M000146.html +16 -0
  163. data/doc/rdoc/classes/RIO/Rio.src/M000147.html +16 -0
  164. data/doc/rdoc/classes/RIO/Rio.src/M000148.html +16 -0
  165. data/doc/rdoc/classes/RIO/Rio.src/M000149.html +16 -0
  166. data/doc/rdoc/classes/RIO/Rio.src/M000150.html +16 -0
  167. data/doc/rdoc/classes/RIO/Rio.src/M000151.html +16 -0
  168. data/doc/rdoc/classes/RIO/Rio.src/M000152.html +16 -0
  169. data/doc/rdoc/classes/RIO/Rio.src/M000153.html +16 -0
  170. data/doc/rdoc/classes/RIO/Rio.src/M000154.html +16 -0
  171. data/doc/rdoc/classes/RIO/Rio.src/M000155.html +16 -0
  172. data/doc/rdoc/classes/RIO/Rio.src/M000156.html +16 -0
  173. data/doc/rdoc/classes/RIO/Rio.src/M000157.html +16 -0
  174. data/doc/rdoc/classes/RIO/Rio.src/M000158.html +16 -0
  175. data/doc/rdoc/classes/RIO/Rio.src/M000159.html +16 -0
  176. data/doc/rdoc/classes/RIO/Rio.src/M000160.html +16 -0
  177. data/doc/rdoc/classes/RIO/Rio.src/M000161.html +16 -0
  178. data/doc/rdoc/classes/RIO/Rio.src/M000162.html +16 -0
  179. data/doc/rdoc/classes/RIO/Rio.src/M000163.html +16 -0
  180. data/doc/rdoc/classes/RIO/Rio.src/M000164.html +16 -0
  181. data/doc/rdoc/classes/RIO/Rio.src/M000165.html +16 -0
  182. data/doc/rdoc/classes/RIO/Rio.src/M000166.html +16 -0
  183. data/doc/rdoc/classes/RIO/Rio.src/M000167.html +16 -0
  184. data/doc/rdoc/classes/RIO/Rio.src/M000168.html +16 -0
  185. data/doc/rdoc/classes/RIO/Rio.src/M000169.html +16 -0
  186. data/doc/rdoc/classes/RIO/Rio.src/M000170.html +16 -0
  187. data/doc/rdoc/classes/RIO/Rio.src/M000171.html +16 -0
  188. data/doc/rdoc/classes/RIO/Rio.src/M000172.html +16 -0
  189. data/doc/rdoc/classes/RIO/Rio.src/M000173.html +16 -0
  190. data/doc/rdoc/classes/RIO/Rio.src/M000174.html +16 -0
  191. data/doc/rdoc/classes/RIO/Rio.src/M000175.html +16 -0
  192. data/doc/rdoc/classes/RIO/Rio.src/M000176.html +16 -0
  193. data/doc/rdoc/classes/RIO/Rio.src/M000177.html +16 -0
  194. data/doc/rdoc/classes/RIO/Rio.src/M000178.html +16 -0
  195. data/doc/rdoc/classes/RIO/Rio.src/M000179.html +16 -0
  196. data/doc/rdoc/classes/RIO/Rio.src/M000180.html +16 -0
  197. data/doc/rdoc/classes/RIO/Rio.src/M000181.html +16 -0
  198. data/doc/rdoc/classes/RIO/Rio.src/M000182.html +16 -0
  199. data/doc/rdoc/classes/RIO/Rio.src/M000183.html +16 -0
  200. data/doc/rdoc/classes/RIO/Rio.src/M000184.html +16 -0
  201. data/doc/rdoc/classes/RIO/Rio.src/M000185.html +16 -0
  202. data/doc/rdoc/classes/RIO/Rio.src/M000186.html +16 -0
  203. data/doc/rdoc/classes/RIO/Rio.src/M000187.html +16 -0
  204. data/doc/rdoc/classes/RIO/Rio.src/M000188.html +16 -0
  205. data/doc/rdoc/classes/RIO/Rio.src/M000189.html +16 -0
  206. data/doc/rdoc/classes/RIO/Rio.src/M000190.html +16 -0
  207. data/doc/rdoc/classes/RIO/Rio.src/M000191.html +16 -0
  208. data/doc/rdoc/classes/RIO/Rio.src/M000192.html +16 -0
  209. data/doc/rdoc/classes/RIO/Rio.src/M000193.html +16 -0
  210. data/doc/rdoc/classes/RIO/Rio.src/M000194.html +16 -0
  211. data/doc/rdoc/classes/RIO/Rio.src/M000195.html +16 -0
  212. data/doc/rdoc/classes/RIO/Rio.src/M000196.html +16 -0
  213. data/doc/rdoc/classes/RIO/Rio.src/M000197.html +16 -0
  214. data/doc/rdoc/classes/RIO/Rio.src/M000198.html +16 -0
  215. data/doc/rdoc/classes/RIO/Rio.src/M000199.html +16 -0
  216. data/doc/rdoc/classes/RIO/Rio.src/M000200.html +16 -0
  217. data/doc/rdoc/classes/RIO/Rio.src/M000201.html +16 -0
  218. data/doc/rdoc/classes/RIO/Rio.src/M000202.html +16 -0
  219. data/doc/rdoc/classes/RIO/Rio.src/M000203.html +16 -0
  220. data/doc/rdoc/classes/RIO/Rio.src/M000204.html +16 -0
  221. data/doc/rdoc/classes/RIO/Rio.src/M000205.html +16 -0
  222. data/doc/rdoc/classes/RIO/Rio.src/M000206.html +16 -0
  223. data/doc/rdoc/classes/RIO/Rio.src/M000207.html +16 -0
  224. data/doc/rdoc/classes/RIO/Rio.src/M000208.html +16 -0
  225. data/doc/rdoc/classes/RIO/Rio.src/M000209.html +16 -0
  226. data/doc/rdoc/classes/RIO/Rio.src/M000210.html +16 -0
  227. data/doc/rdoc/classes/RIO/Rio.src/M000211.html +16 -0
  228. data/doc/rdoc/classes/RIO/Rio.src/M000212.html +16 -0
  229. data/doc/rdoc/classes/RIO/Rio.src/M000213.html +16 -0
  230. data/doc/rdoc/created.rid +1 -0
  231. data/doc/rdoc/files/README.html +243 -0
  232. data/doc/rdoc/files/lib/rio/constructor_rb.html +142 -0
  233. data/doc/rdoc/files/lib/rio/doc/HOWTO_rb.html +135 -0
  234. data/doc/rdoc/files/lib/rio/doc/INTRO_rb.html +135 -0
  235. data/doc/rdoc/files/lib/rio/doc/MISC_rb.html +135 -0
  236. data/doc/rdoc/files/lib/rio/doc/SYNOPSIS_rb.html +135 -0
  237. data/doc/rdoc/files/lib/rio/if/basic_rb.html +135 -0
  238. data/doc/rdoc/files/lib/rio/if/csv_rb.html +135 -0
  239. data/doc/rdoc/files/lib/rio/if/dir_rb.html +135 -0
  240. data/doc/rdoc/files/lib/rio/if/file_rb.html +135 -0
  241. data/doc/rdoc/files/lib/rio/if/fileordir_rb.html +135 -0
  242. data/doc/rdoc/files/lib/rio/if/grande_entry_rb.html +135 -0
  243. data/doc/rdoc/files/lib/rio/if/grande_rb.html +135 -0
  244. data/doc/rdoc/files/lib/rio/if/grande_stream_rb.html +135 -0
  245. data/doc/rdoc/files/lib/rio/if/internal_rb.html +135 -0
  246. data/doc/rdoc/files/lib/rio/if/path_rb.html +135 -0
  247. data/doc/rdoc/files/lib/rio/if/stream_rb.html +135 -0
  248. data/doc/rdoc/files/lib/rio/if/string_rb.html +135 -0
  249. data/doc/rdoc/files/lib/rio/if/temp_rb.html +135 -0
  250. data/doc/rdoc/files/lib/rio/if/test_rb.html +135 -0
  251. data/doc/rdoc/files/lib/rio/if/yaml_rb.html +135 -0
  252. data/doc/rdoc/files/lib/rio/kernel_rb.html +142 -0
  253. data/doc/rdoc/files/lib/rio_rb.html +154 -0
  254. data/doc/rdoc/fr_class_index.html +37 -0
  255. data/doc/rdoc/fr_file_index.html +49 -0
  256. data/doc/rdoc/fr_method_index.html +241 -0
  257. data/doc/rdoc/index.html +24 -0
  258. data/doc/rdoc/rdoc-style.css +384 -0
  259. data/lib/rio.rb +21 -5
  260. data/lib/rio/constructor.rb +13 -0
  261. data/lib/rio/context/copying.rb +56 -0
  262. data/lib/rio/context/methods.rb +1 -0
  263. data/lib/rio/cp.rb +53 -34
  264. data/lib/rio/doc/HOWTO.rb +9 -3
  265. data/lib/rio/doc/INTRO.rb +113 -3
  266. data/lib/rio/ext.rb +7 -1
  267. data/lib/rio/ext/csv.rb +17 -8
  268. data/lib/rio/ext/yaml.rb +182 -0
  269. data/lib/rio/factory.rb +11 -14
  270. data/lib/rio/filter/closeoneof.rb +12 -31
  271. data/lib/rio/filter/gzip.rb +7 -0
  272. data/lib/rio/if.rb +4 -1
  273. data/lib/rio/if/csv.rb +36 -35
  274. data/lib/rio/if/grande.rb +74 -5
  275. data/lib/rio/if/grande_stream.rb +11 -3
  276. data/lib/rio/if/path.rb +9 -8
  277. data/lib/rio/if/yaml.rb +218 -0
  278. data/lib/rio/ioh.rb +5 -3
  279. data/lib/rio/matchrecord.rb +9 -2
  280. data/lib/rio/ops/dir.rb +2 -1
  281. data/lib/rio/ops/either.rb +9 -9
  282. data/lib/rio/ops/file.rb +4 -1
  283. data/lib/rio/ops/path.rb +26 -20
  284. data/lib/rio/ops/stream.rb +1 -1
  285. data/lib/rio/ops/stream/input.rb +31 -9
  286. data/lib/rio/ops/stream/output.rb +7 -2
  287. data/lib/rio/ops/stream/read.rb +10 -10
  288. data/lib/rio/ops/stream/write.rb +10 -10
  289. data/lib/rio/path.rb +2 -2
  290. data/lib/rio/path/reset.rb +1 -1
  291. data/lib/rio/piper.rb +123 -0
  292. data/lib/rio/piper/cp.rb +81 -0
  293. data/lib/rio/rectype.rb +2 -2
  294. data/lib/rio/rl/base.rb +40 -17
  295. data/lib/rio/rl/builder.rb +8 -47
  296. data/lib/rio/rl/ioi.rb +3 -2
  297. data/lib/rio/rl/path.rb +101 -78
  298. data/lib/rio/rl/pathmethods.rb +95 -0
  299. data/lib/rio/rl/uri.rb +41 -51
  300. data/lib/rio/scheme/cmdio.rb +7 -1
  301. data/lib/rio/scheme/cmdpipe.rb +150 -0
  302. data/lib/rio/scheme/ftp.rb +0 -4
  303. data/lib/rio/scheme/http.rb +0 -2
  304. data/lib/rio/scheme/strio.rb +16 -0
  305. data/lib/rio/scheme/temp.rb +7 -7
  306. data/lib/rio/state.rb +23 -5
  307. data/lib/rio/stream.rb +4 -0
  308. data/lib/rio/stream/duplex.rb +1 -0
  309. data/lib/rio/stream/open.rb +8 -2
  310. data/lib/rio/version.rb +1 -1
  311. data/test/{runtests_gem.rb → gem_runtests.rb} +0 -0
  312. data/test/methods/path.rb +12 -0
  313. data/test/runtests.rb +2 -0
  314. data/test/tc/abs.rb +29 -27
  315. data/test/tc/all.rb +9 -3
  316. data/test/tc/base.rb +31 -0
  317. data/test/tc/cmdpipe.rb +146 -0
  318. data/test/tc/copydir.rb +2 -1
  319. data/test/tc/create.rb +10 -0
  320. data/test/tc/csv.rb +12 -12
  321. data/test/tc/csv2.rb +2 -2
  322. data/test/tc/csv_columns.rb +3 -3
  323. data/test/tc/each_break.rb +21 -8
  324. data/test/tc/expand_path.rb +21 -27
  325. data/test/tc/misc.rb +0 -1
  326. data/test/tc/noqae.rb +29 -21
  327. data/test/tc/overload.rb +14 -11
  328. data/test/tc/piper.rb +146 -0
  329. data/test/tc/riorl.rb +26 -17
  330. data/test/tc/route.rb +51 -0
  331. data/test/tc/skip.rb +8 -6
  332. data/test/tc/split.rb +70 -0
  333. data/test/tc/temp.rb +5 -5
  334. data/test/tc/testcase.rb +1 -0
  335. data/test/tc/yaml.rb +118 -0
  336. metadata +481 -229
  337. data/doc/README_MSWIN32.txt +0 -39
  338. data/ex/colx.rb +0 -8
  339. data/ex/findinruby +0 -23
  340. data/ex/findruby +0 -15
  341. data/ex/passwd_report.rb +0 -8
  342. data/ex/prompt.rb +0 -25
  343. data/ex/rgb.txt.gz +0 -0
  344. data/ex/riocat +0 -35
  345. data/ex/riogunzip +0 -31
  346. data/ex/riogzip +0 -24
  347. data/ex/rioprompt.rb +0 -6
  348. data/ex/tolf +0 -11
  349. data/test/mswin32.rb +0 -28
@@ -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