rio 0.3.9 → 0.4.0

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 (315) hide show
  1. data/README +14 -8
  2. data/Rakefile +7 -9
  3. data/doc/ANNOUNCE +61 -46
  4. data/doc/RELEASE_NOTES +12 -3
  5. data/doc/RIOIS +7 -7
  6. data/doc/generators/template/html/rio.rb +7 -8
  7. data/doc/generators/template/html/ugly.rb +4 -2
  8. data/doc/pkg_def.rb +4 -10
  9. data/doc/rdoc/classes/Kernel.html +133 -0
  10. data/doc/rdoc/classes/Kernel.src/M000233.html +18 -0
  11. data/doc/rdoc/classes/RIO.html +625 -0
  12. data/doc/rdoc/classes/RIO.src/M000001.html +18 -0
  13. data/doc/rdoc/classes/RIO.src/M000002.html +18 -0
  14. data/doc/rdoc/classes/RIO.src/M000003.html +18 -0
  15. data/doc/rdoc/classes/RIO/Doc.html +148 -0
  16. data/doc/rdoc/classes/RIO/Doc/EXAMPLES.html +432 -0
  17. data/doc/rdoc/classes/RIO/Doc/HOWTO.html +1075 -0
  18. data/doc/rdoc/classes/RIO/Doc/INDEX.html +368 -0
  19. data/doc/rdoc/classes/RIO/Doc/INTRO.html +1533 -0
  20. data/doc/rdoc/classes/RIO/Doc/OPTIONAL.html +221 -0
  21. data/doc/rdoc/classes/RIO/Doc/SYNOPSIS.html +337 -0
  22. data/doc/rdoc/classes/RIO/IF.html +165 -0
  23. data/doc/rdoc/classes/RIO/IF/CSV.html +203 -0
  24. data/doc/rdoc/classes/RIO/IF/CSV.src/M000116.html +19 -0
  25. data/doc/rdoc/classes/RIO/IF/CSV.src/M000117.html +16 -0
  26. data/doc/rdoc/classes/RIO/IF/CSV.src/M000118.html +16 -0
  27. data/doc/rdoc/classes/RIO/IF/Dir.html +343 -0
  28. data/doc/rdoc/classes/RIO/IF/Dir.src/M000045.html +16 -0
  29. data/doc/rdoc/classes/RIO/IF/Dir.src/M000046.html +16 -0
  30. data/doc/rdoc/classes/RIO/IF/Dir.src/M000047.html +16 -0
  31. data/doc/rdoc/classes/RIO/IF/Dir.src/M000048.html +16 -0
  32. data/doc/rdoc/classes/RIO/IF/Dir.src/M000049.html +16 -0
  33. data/doc/rdoc/classes/RIO/IF/Dir.src/M000050.html +16 -0
  34. data/doc/rdoc/classes/RIO/IF/Dir.src/M000051.html +16 -0
  35. data/doc/rdoc/classes/RIO/IF/File.html +223 -0
  36. data/doc/rdoc/classes/RIO/IF/File.src/M000212.html +16 -0
  37. data/doc/rdoc/classes/RIO/IF/File.src/M000213.html +16 -0
  38. data/doc/rdoc/classes/RIO/IF/File.src/M000214.html +16 -0
  39. data/doc/rdoc/classes/RIO/IF/File.src/M000215.html +16 -0
  40. data/doc/rdoc/classes/RIO/IF/FileOrDir.html +572 -0
  41. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000155.html +16 -0
  42. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000156.html +16 -0
  43. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000157.html +16 -0
  44. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000158.html +16 -0
  45. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000159.html +16 -0
  46. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000160.html +16 -0
  47. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000161.html +16 -0
  48. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000162.html +16 -0
  49. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000163.html +16 -0
  50. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000164.html +16 -0
  51. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000165.html +16 -0
  52. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000166.html +16 -0
  53. data/doc/rdoc/classes/RIO/IF/Grande.html +1349 -0
  54. data/doc/rdoc/classes/RIO/IF/Grande.src/M000088.html +16 -0
  55. data/doc/rdoc/classes/RIO/IF/Grande.src/M000089.html +16 -0
  56. data/doc/rdoc/classes/RIO/IF/Grande.src/M000090.html +16 -0
  57. data/doc/rdoc/classes/RIO/IF/Grande.src/M000091.html +16 -0
  58. data/doc/rdoc/classes/RIO/IF/Grande.src/M000092.html +16 -0
  59. data/doc/rdoc/classes/RIO/IF/Grande.src/M000093.html +21 -0
  60. data/doc/rdoc/classes/RIO/IF/Grande.src/M000094.html +16 -0
  61. data/doc/rdoc/classes/RIO/IF/Grande.src/M000095.html +16 -0
  62. data/doc/rdoc/classes/RIO/IF/Grande.src/M000096.html +16 -0
  63. data/doc/rdoc/classes/RIO/IF/Grande.src/M000097.html +16 -0
  64. data/doc/rdoc/classes/RIO/IF/Grande.src/M000098.html +16 -0
  65. data/doc/rdoc/classes/RIO/IF/Grande.src/M000099.html +16 -0
  66. data/doc/rdoc/classes/RIO/IF/Grande.src/M000100.html +21 -0
  67. data/doc/rdoc/classes/RIO/IF/Grande.src/M000101.html +16 -0
  68. data/doc/rdoc/classes/RIO/IF/Grande.src/M000102.html +16 -0
  69. data/doc/rdoc/classes/RIO/IF/Grande.src/M000103.html +16 -0
  70. data/doc/rdoc/classes/RIO/IF/Grande.src/M000104.html +16 -0
  71. data/doc/rdoc/classes/RIO/IF/Grande.src/M000105.html +16 -0
  72. data/doc/rdoc/classes/RIO/IF/GrandeEntry.html +810 -0
  73. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000106.html +16 -0
  74. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000107.html +16 -0
  75. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000108.html +16 -0
  76. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000109.html +16 -0
  77. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000110.html +16 -0
  78. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000111.html +16 -0
  79. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000112.html +16 -0
  80. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000113.html +16 -0
  81. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000114.html +16 -0
  82. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000115.html +16 -0
  83. data/doc/rdoc/classes/RIO/IF/GrandeStream.html +1513 -0
  84. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000052.html +16 -0
  85. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000053.html +16 -0
  86. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000054.html +16 -0
  87. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000055.html +16 -0
  88. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000056.html +16 -0
  89. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000057.html +16 -0
  90. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000058.html +16 -0
  91. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000059.html +16 -0
  92. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000060.html +16 -0
  93. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000061.html +16 -0
  94. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000062.html +16 -0
  95. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000063.html +16 -0
  96. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000064.html +16 -0
  97. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000065.html +16 -0
  98. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000066.html +16 -0
  99. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000067.html +16 -0
  100. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000068.html +19 -0
  101. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000069.html +16 -0
  102. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000070.html +16 -0
  103. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000071.html +16 -0
  104. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000072.html +16 -0
  105. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000073.html +16 -0
  106. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000074.html +16 -0
  107. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000075.html +16 -0
  108. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000076.html +16 -0
  109. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000077.html +16 -0
  110. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000078.html +16 -0
  111. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000079.html +16 -0
  112. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000080.html +16 -0
  113. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000081.html +16 -0
  114. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000082.html +16 -0
  115. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000083.html +16 -0
  116. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000084.html +16 -0
  117. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000085.html +16 -0
  118. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000086.html +16 -0
  119. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000087.html +16 -0
  120. data/doc/rdoc/classes/RIO/IF/Path.html +999 -0
  121. data/doc/rdoc/classes/RIO/IF/Path.src/M000180.html +16 -0
  122. data/doc/rdoc/classes/RIO/IF/Path.src/M000181.html +16 -0
  123. data/doc/rdoc/classes/RIO/IF/Path.src/M000182.html +16 -0
  124. data/doc/rdoc/classes/RIO/IF/Path.src/M000183.html +16 -0
  125. data/doc/rdoc/classes/RIO/IF/Path.src/M000184.html +16 -0
  126. data/doc/rdoc/classes/RIO/IF/Path.src/M000185.html +16 -0
  127. data/doc/rdoc/classes/RIO/IF/Path.src/M000186.html +16 -0
  128. data/doc/rdoc/classes/RIO/IF/Path.src/M000187.html +16 -0
  129. data/doc/rdoc/classes/RIO/IF/Path.src/M000188.html +16 -0
  130. data/doc/rdoc/classes/RIO/IF/Path.src/M000189.html +16 -0
  131. data/doc/rdoc/classes/RIO/IF/Path.src/M000190.html +16 -0
  132. data/doc/rdoc/classes/RIO/IF/Path.src/M000191.html +16 -0
  133. data/doc/rdoc/classes/RIO/IF/Path.src/M000192.html +16 -0
  134. data/doc/rdoc/classes/RIO/IF/Path.src/M000193.html +16 -0
  135. data/doc/rdoc/classes/RIO/IF/Path.src/M000194.html +16 -0
  136. data/doc/rdoc/classes/RIO/IF/Path.src/M000195.html +16 -0
  137. data/doc/rdoc/classes/RIO/IF/Path.src/M000196.html +16 -0
  138. data/doc/rdoc/classes/RIO/IF/Path.src/M000197.html +16 -0
  139. data/doc/rdoc/classes/RIO/IF/Path.src/M000198.html +16 -0
  140. data/doc/rdoc/classes/RIO/IF/Path.src/M000199.html +16 -0
  141. data/doc/rdoc/classes/RIO/IF/Path.src/M000200.html +16 -0
  142. data/doc/rdoc/classes/RIO/IF/Path.src/M000201.html +16 -0
  143. data/doc/rdoc/classes/RIO/IF/Path.src/M000202.html +18 -0
  144. data/doc/rdoc/classes/RIO/IF/Path.src/M000203.html +16 -0
  145. data/doc/rdoc/classes/RIO/IF/Path.src/M000204.html +16 -0
  146. data/doc/rdoc/classes/RIO/IF/Path.src/M000205.html +16 -0
  147. data/doc/rdoc/classes/RIO/IF/Path.src/M000206.html +16 -0
  148. data/doc/rdoc/classes/RIO/IF/Path.src/M000207.html +16 -0
  149. data/doc/rdoc/classes/RIO/IF/Path.src/M000208.html +16 -0
  150. data/doc/rdoc/classes/RIO/IF/Path.src/M000209.html +16 -0
  151. data/doc/rdoc/classes/RIO/IF/Path.src/M000210.html +16 -0
  152. data/doc/rdoc/classes/RIO/IF/Path.src/M000211.html +16 -0
  153. data/doc/rdoc/classes/RIO/IF/RubyIO.html +1414 -0
  154. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000004.html +16 -0
  155. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000005.html +16 -0
  156. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000006.html +16 -0
  157. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000007.html +16 -0
  158. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000008.html +16 -0
  159. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000009.html +16 -0
  160. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000010.html +16 -0
  161. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000011.html +16 -0
  162. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000012.html +16 -0
  163. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000013.html +16 -0
  164. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000014.html +16 -0
  165. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000015.html +16 -0
  166. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000016.html +16 -0
  167. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000017.html +16 -0
  168. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000018.html +16 -0
  169. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000019.html +16 -0
  170. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000020.html +16 -0
  171. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000021.html +16 -0
  172. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000022.html +16 -0
  173. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000023.html +16 -0
  174. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000024.html +16 -0
  175. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000025.html +16 -0
  176. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000026.html +16 -0
  177. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000027.html +16 -0
  178. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000028.html +16 -0
  179. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000029.html +16 -0
  180. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000030.html +16 -0
  181. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000031.html +16 -0
  182. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000032.html +16 -0
  183. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000033.html +16 -0
  184. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000034.html +16 -0
  185. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000035.html +16 -0
  186. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000036.html +16 -0
  187. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000037.html +16 -0
  188. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000038.html +16 -0
  189. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000039.html +16 -0
  190. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000040.html +16 -0
  191. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000041.html +16 -0
  192. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000042.html +16 -0
  193. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000043.html +16 -0
  194. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000044.html +16 -0
  195. data/doc/rdoc/classes/RIO/IF/String.html +203 -0
  196. data/doc/rdoc/classes/RIO/IF/String.src/M000216.html +16 -0
  197. data/doc/rdoc/classes/RIO/IF/String.src/M000217.html +16 -0
  198. data/doc/rdoc/classes/RIO/IF/String.src/M000218.html +16 -0
  199. data/doc/rdoc/classes/RIO/IF/Test.html +990 -0
  200. data/doc/rdoc/classes/RIO/IF/Test.src/M000119.html +16 -0
  201. data/doc/rdoc/classes/RIO/IF/Test.src/M000120.html +16 -0
  202. data/doc/rdoc/classes/RIO/IF/Test.src/M000121.html +16 -0
  203. data/doc/rdoc/classes/RIO/IF/Test.src/M000122.html +16 -0
  204. data/doc/rdoc/classes/RIO/IF/Test.src/M000123.html +16 -0
  205. data/doc/rdoc/classes/RIO/IF/Test.src/M000124.html +16 -0
  206. data/doc/rdoc/classes/RIO/IF/Test.src/M000125.html +16 -0
  207. data/doc/rdoc/classes/RIO/IF/Test.src/M000126.html +16 -0
  208. data/doc/rdoc/classes/RIO/IF/Test.src/M000127.html +16 -0
  209. data/doc/rdoc/classes/RIO/IF/Test.src/M000128.html +16 -0
  210. data/doc/rdoc/classes/RIO/IF/Test.src/M000129.html +16 -0
  211. data/doc/rdoc/classes/RIO/IF/Test.src/M000130.html +16 -0
  212. data/doc/rdoc/classes/RIO/IF/Test.src/M000131.html +16 -0
  213. data/doc/rdoc/classes/RIO/IF/Test.src/M000132.html +16 -0
  214. data/doc/rdoc/classes/RIO/IF/Test.src/M000133.html +16 -0
  215. data/doc/rdoc/classes/RIO/IF/Test.src/M000134.html +16 -0
  216. data/doc/rdoc/classes/RIO/IF/Test.src/M000135.html +16 -0
  217. data/doc/rdoc/classes/RIO/IF/Test.src/M000136.html +16 -0
  218. data/doc/rdoc/classes/RIO/IF/Test.src/M000137.html +16 -0
  219. data/doc/rdoc/classes/RIO/IF/Test.src/M000138.html +16 -0
  220. data/doc/rdoc/classes/RIO/IF/Test.src/M000139.html +16 -0
  221. data/doc/rdoc/classes/RIO/IF/Test.src/M000140.html +16 -0
  222. data/doc/rdoc/classes/RIO/IF/Test.src/M000141.html +16 -0
  223. data/doc/rdoc/classes/RIO/IF/Test.src/M000142.html +16 -0
  224. data/doc/rdoc/classes/RIO/IF/Test.src/M000143.html +16 -0
  225. data/doc/rdoc/classes/RIO/IF/Test.src/M000144.html +16 -0
  226. data/doc/rdoc/classes/RIO/IF/Test.src/M000145.html +16 -0
  227. data/doc/rdoc/classes/RIO/IF/Test.src/M000146.html +16 -0
  228. data/doc/rdoc/classes/RIO/IF/Test.src/M000147.html +16 -0
  229. data/doc/rdoc/classes/RIO/IF/Test.src/M000148.html +16 -0
  230. data/doc/rdoc/classes/RIO/IF/Test.src/M000149.html +16 -0
  231. data/doc/rdoc/classes/RIO/IF/Test.src/M000150.html +16 -0
  232. data/doc/rdoc/classes/RIO/IF/Test.src/M000151.html +16 -0
  233. data/doc/rdoc/classes/RIO/IF/Test.src/M000152.html +16 -0
  234. data/doc/rdoc/classes/RIO/IF/Test.src/M000153.html +16 -0
  235. data/doc/rdoc/classes/RIO/IF/Test.src/M000154.html +16 -0
  236. data/doc/rdoc/classes/RIO/IF/YAML.html +517 -0
  237. data/doc/rdoc/classes/RIO/IF/YAML.src/M000167.html +19 -0
  238. data/doc/rdoc/classes/RIO/IF/YAML.src/M000168.html +16 -0
  239. data/doc/rdoc/classes/RIO/IF/YAML.src/M000169.html +16 -0
  240. data/doc/rdoc/classes/RIO/IF/YAML.src/M000170.html +16 -0
  241. data/doc/rdoc/classes/RIO/IF/YAML.src/M000171.html +16 -0
  242. data/doc/rdoc/classes/RIO/IF/YAML.src/M000172.html +16 -0
  243. data/doc/rdoc/classes/RIO/IF/YAML.src/M000173.html +16 -0
  244. data/doc/rdoc/classes/RIO/IF/YAML.src/M000174.html +16 -0
  245. data/doc/rdoc/classes/RIO/IF/YAML.src/M000175.html +16 -0
  246. data/doc/rdoc/classes/RIO/IF/YAML.src/M000176.html +16 -0
  247. data/doc/rdoc/classes/RIO/IF/YAML.src/M000177.html +16 -0
  248. data/doc/rdoc/classes/RIO/IF/YAML.src/M000178.html +16 -0
  249. data/doc/rdoc/classes/RIO/IF/YAML.src/M000179.html +16 -0
  250. data/doc/rdoc/classes/RIO/Rio.html +508 -0
  251. data/doc/rdoc/classes/RIO/Rio.src/M000219.html +18 -0
  252. data/doc/rdoc/classes/RIO/Rio.src/M000220.html +20 -0
  253. data/doc/rdoc/classes/RIO/Rio.src/M000221.html +27 -0
  254. data/doc/rdoc/classes/RIO/Rio.src/M000222.html +16 -0
  255. data/doc/rdoc/classes/RIO/Rio.src/M000224.html +19 -0
  256. data/doc/rdoc/classes/RIO/Rio.src/M000225.html +20 -0
  257. data/doc/rdoc/classes/RIO/Rio.src/M000226.html +16 -0
  258. data/doc/rdoc/classes/RIO/Rio.src/M000227.html +16 -0
  259. data/doc/rdoc/classes/RIO/Rio.src/M000228.html +16 -0
  260. data/doc/rdoc/classes/RIO/Rio.src/M000229.html +16 -0
  261. data/doc/rdoc/classes/RIO/Rio.src/M000230.html +16 -0
  262. data/doc/rdoc/classes/RIO/Rio.src/M000231.html +16 -0
  263. data/doc/rdoc/classes/RIO/Rio.src/M000232.html +16 -0
  264. data/doc/rdoc/created.rid +1 -0
  265. data/doc/rdoc/files/README.html +229 -0
  266. data/doc/rdoc/files/lib/rio/constructor_rb.html +141 -0
  267. data/doc/rdoc/files/lib/rio/doc/EXAMPLES_rb.html +134 -0
  268. data/doc/rdoc/files/lib/rio/doc/HOWTO_rb.html +134 -0
  269. data/doc/rdoc/files/lib/rio/doc/INDEX_rb.html +134 -0
  270. data/doc/rdoc/files/lib/rio/doc/INTRO_rb.html +134 -0
  271. data/doc/rdoc/files/lib/rio/doc/OPTIONAL_rb.html +134 -0
  272. data/doc/rdoc/files/lib/rio/doc/SYNOPSIS_rb.html +134 -0
  273. data/doc/rdoc/files/lib/rio/if/basic_rb.html +134 -0
  274. data/doc/rdoc/files/lib/rio/if/csv_rb.html +134 -0
  275. data/doc/rdoc/files/lib/rio/if/dir_rb.html +134 -0
  276. data/doc/rdoc/files/lib/rio/if/file_rb.html +134 -0
  277. data/doc/rdoc/files/lib/rio/if/fileordir_rb.html +134 -0
  278. data/doc/rdoc/files/lib/rio/if/grande_entry_rb.html +134 -0
  279. data/doc/rdoc/files/lib/rio/if/grande_rb.html +141 -0
  280. data/doc/rdoc/files/lib/rio/if/grande_stream_rb.html +134 -0
  281. data/doc/rdoc/files/lib/rio/if/internal_rb.html +134 -0
  282. data/doc/rdoc/files/lib/rio/if/path_rb.html +134 -0
  283. data/doc/rdoc/files/lib/rio/if/rubyio_rb.html +134 -0
  284. data/doc/rdoc/files/lib/rio/if/string_rb.html +134 -0
  285. data/doc/rdoc/files/lib/rio/if/temp_rb.html +134 -0
  286. data/doc/rdoc/files/lib/rio/if/test_rb.html +134 -0
  287. data/doc/rdoc/files/lib/rio/if/yaml_rb.html +134 -0
  288. data/doc/rdoc/files/lib/rio/kernel_rb.html +142 -0
  289. data/doc/rdoc/files/lib/rio_rb.html +153 -0
  290. data/doc/rdoc/fr_class_index.html +49 -0
  291. data/doc/rdoc/fr_file_index.html +51 -0
  292. data/doc/rdoc/fr_method_index.html +259 -0
  293. data/doc/rdoc/index.html +30 -0
  294. data/doc/rdoc/rdoc-style.css +428 -0
  295. data/lib/rio/cp.rb +9 -8
  296. data/lib/rio/doc/HOWTO.rb +46 -32
  297. data/lib/rio/doc/INDEX.rb +311 -0
  298. data/lib/rio/doc/INTRO.rb +10 -10
  299. data/lib/rio/doc/OPTIONAL.rb +6 -9
  300. data/lib/rio/doc/SYNOPSIS.rb +54 -57
  301. data/lib/rio/ext/csv.rb +5 -1
  302. data/lib/rio/ext/yaml.rb +19 -40
  303. data/lib/rio/if/fileordir.rb +1 -1
  304. data/lib/rio/if/grande.rb +4 -4
  305. data/lib/rio/if/grande_entry.rb +6 -0
  306. data/lib/rio/if/grande_stream.rb +10 -8
  307. data/lib/rio/if/path.rb +1 -1
  308. data/lib/rio/if/rubyio.rb +4 -4
  309. data/lib/rio/if/yaml.rb +27 -13
  310. data/lib/rio/ops/stream/input.rb +0 -1
  311. data/lib/rio/stream.rb +1 -0
  312. data/lib/rio/version.rb +1 -1
  313. data/test/tc/synopsis.rb +75 -0
  314. data/test/tc/yaml.rb +150 -4
  315. metadata +314 -2
@@ -0,0 +1,1075 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Module: RIO::Doc::HOWTO</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <meta name="revisit-after" content="5 days">
12
+ <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
13
+ <script type="text/javascript">
14
+ // <![CDATA[
15
+
16
+ function popupCode( url ) {
17
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
18
+ }
19
+
20
+ function toggleCode( id ) {
21
+ if ( document.getElementById )
22
+ elem = document.getElementById( id );
23
+ else if ( document.all )
24
+ elem = eval( "document.all." + id );
25
+ else
26
+ return false;
27
+
28
+ elemStyle = elem.style;
29
+
30
+ if ( elemStyle.display != "block" ) {
31
+ elemStyle.display = "block"
32
+ } else {
33
+ elemStyle.display = "none"
34
+ }
35
+
36
+ return true;
37
+ }
38
+
39
+ // Make codeblocks hidden by default
40
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
41
+
42
+ // ]]>
43
+ </script>
44
+
45
+ </head>
46
+ <body>
47
+
48
+
49
+
50
+ <div id="classHeader">
51
+ <table class="header-table">
52
+ <tr class="top-aligned-row">
53
+ <td class="class-mod"><strong>Module</strong></td>
54
+ <td class="class-name-in-header">RIO::Doc::HOWTO</td>
55
+ <td rowspan="2" class="class-header-space-col"></td>
56
+ <td rowspan="2">
57
+ <a class="in-url" href="../../../files/lib/rio/doc/HOWTO_rb.html">
58
+ lib/rio/doc/HOWTO.rb
59
+ </a>
60
+ &nbsp;&nbsp;
61
+ </td>
62
+ </tr>
63
+
64
+ </table>
65
+ </div>
66
+ <!-- banner header -->
67
+
68
+ <div id="bodyContent">
69
+
70
+
71
+
72
+ <div id="contextContent">
73
+
74
+ <div id="description">
75
+ <h1>Rio - Ruby I/O Facilitator</h1>
76
+ <p>
77
+ Rio is a facade for most of the standard ruby classes that deal with I/O;
78
+ providing a simple, intuitive, succinct interface to the functionality
79
+ provided by IO, File, Dir, Pathname, FileUtils, Tempfile, StringIO, OpenURI
80
+ and others. Rio also provides an application level interface which allows
81
+ many common I/O idioms to be expressed succinctly.
82
+ </p>
83
+ <h2><a href="HOWTO.html">HOWTO</a>&#8230;</h2>
84
+ <h3>Read a single file</h3>
85
+ <pre>
86
+ ario = rio('afile')
87
+ string = &quot;&quot;
88
+ array = []
89
+ </pre>
90
+ <ul>
91
+ <li>Read a file into a string.
92
+
93
+ <pre>
94
+ # method 1
95
+ string = ario.contents
96
+ # method 2
97
+ ario &gt; string
98
+ </pre>
99
+ </li>
100
+ <li>Append a file onto a string.
101
+
102
+ <pre>
103
+ # method 1
104
+ ario &gt;&gt; string
105
+ # method 2
106
+ string += ario.contents
107
+ </pre>
108
+ </li>
109
+ <li>Read lines of a file into an array
110
+
111
+ <pre>
112
+ # method 1
113
+ array = ario[]
114
+ # method 2
115
+ ario &gt; array
116
+ # method 3
117
+ array = ario.to_a
118
+ # method 4
119
+ array = ario.readlines
120
+ </pre>
121
+ </li>
122
+ <li>Append lines of a file into an array
123
+
124
+ <pre>
125
+ # method 1
126
+ ario &gt;&gt; array
127
+ # method 2
128
+ array += ario.lines[]
129
+ </pre>
130
+ </li>
131
+ <li>Read the first 10 lines of a file into an array
132
+
133
+ <pre>
134
+ # method 1
135
+ array = ario[0...10]
136
+ # method 2
137
+ array = ario.lines[0...10]
138
+ # method 3
139
+ ario.lines(0...10) &gt; array
140
+ </pre>
141
+ </li>
142
+ <li>Read lines of a file into an array, with each line chomped
143
+
144
+ <pre>
145
+ # method 1
146
+ array = ario.chomp[]
147
+ # method 2
148
+ array = ario.chomp.lines[]
149
+ # method 3
150
+ ario.chomp &gt; array
151
+ </pre>
152
+ </li>
153
+ <li>Append the first 10 lines of a file into an array, with each line chomped
154
+
155
+ <pre>
156
+ # method 1
157
+ array += ario.chomp[0...10]
158
+ # method 2
159
+ array += ario.chomp.lines[0...10]
160
+ # method 3
161
+ ario.chomp.lines(0...10) &gt;&gt; array
162
+ </pre>
163
+ </li>
164
+ <li>Read all lines starting with &#8216;require&#8217; into an array, with each
165
+ line chomped
166
+
167
+ <pre>
168
+ # method 1
169
+ array = ario.chomp[/^\s*require/]
170
+ # method 2
171
+ array = ario.chomp.lines[/^\s*require/]
172
+ # method 3
173
+ ario.chomp.lines(/^\s*require/) &gt; array
174
+ </pre>
175
+ </li>
176
+ <li>Read a gzipped file into a string
177
+
178
+ <pre>
179
+ # method 1
180
+ rio('afile.gz').gzip &gt; string
181
+ # method 2
182
+ string = rio('afile.gz').gzip.contents
183
+ </pre>
184
+ </li>
185
+ <li>Append a gzipped file into a string
186
+
187
+ <pre>
188
+ # method 1
189
+ rio('afile.gz').gzip &gt;&gt; string
190
+ # method 2
191
+ string += rio('afile.gz').gzip.contents
192
+ </pre>
193
+ </li>
194
+ <li>Iterate through all the lines of a file
195
+
196
+ <pre>
197
+ # method 1
198
+ rio('afile').lines { |line| ... }
199
+ # method 2
200
+ rio('afile').each { |line| ... }
201
+ # method 3
202
+ rio('afile').each_line { |line| ... }
203
+ </pre>
204
+ </li>
205
+ <li>Iterate through the lines of a gzipped file
206
+
207
+ <pre>
208
+ rio('afile.gz').gzip { |line| ... }
209
+ </pre>
210
+ </li>
211
+ <li>Iterate through all non-empty lines of a gzipped file, with each line
212
+ chomped
213
+
214
+ <pre>
215
+ rio('afile.gz').gzip.chomp.skiplines(:empty?) { |line| ... }
216
+ </pre>
217
+ </li>
218
+ <li>Iterate through the first 100 lines of a file
219
+
220
+ <pre>
221
+ # method 1
222
+ rio('afile').lines(0...100) { |line| ... }
223
+ </pre>
224
+ </li>
225
+ <li>Iterate through the first line and all ruby comment lines in a gzipped file
226
+
227
+ <pre>
228
+ rio('afile.rb.gz').gzip.lines(0,/^\s*#/) { |line| ... }
229
+ </pre>
230
+ </li>
231
+ <li>Iterate through the lines of a ruby file that are neither empty nor
232
+ comments, with all lines chomped
233
+
234
+ <pre>
235
+ rio('afile.rb').chomp.skiplines(/^\s*#/,:empty?) { |line| ... }
236
+ </pre>
237
+ </li>
238
+ <li>Read all the comment lines from a ruby file into an array with all lines
239
+ chomped
240
+
241
+ <pre>
242
+ # method 1
243
+ array = rio('afile.rb').chomp[/^\s*#/]
244
+ # method 2
245
+ array = rio('afile.rb').chomp.lines[/^\s*#/]
246
+ # method 3
247
+ rio('afile.rb').chomp.lines(/^\s*#/) &gt; array
248
+ </pre>
249
+ </li>
250
+ <li>Read lines of a file into an array, with each line chomped, skipping any
251
+ lines longer than 1024 chars
252
+
253
+ <pre>
254
+ # method 1
255
+ array = ario.chomp[proc{ |line| line.length &lt;= 1024}]
256
+ # method 2
257
+ ario.chomp.lines(proc{ |line| line.length &lt;= 1024}) &gt; array
258
+ # method 3
259
+ array = ario.chomp.skiplines[proc{ |line| line.length &gt; 1024}]
260
+ # method 4
261
+ array = ario.chomp.lines(proc{ |line| line.length &lt;= 1024}).to_a
262
+ </pre>
263
+ </li>
264
+ </ul>
265
+ <hr size="1"></hr><h3>Write to a single file</h3>
266
+ <pre>
267
+ ario = rio('afile')
268
+ string = &quot;A String\n&quot;
269
+ array = [&quot;Line 0\n&quot;,&quot;Line 1\n&quot;]
270
+ </pre>
271
+ <ul>
272
+ <li>Write a string to a file, leaving the Rio open
273
+
274
+ <pre>
275
+ # method 1
276
+ ario.puts(string)
277
+ # method 2
278
+ ario.print(string)
279
+ # method 3
280
+ ario.noautoclose &lt; string
281
+ </pre>
282
+ </li>
283
+ <li>Write a string to a file and close the file
284
+
285
+ <pre>
286
+ # method 1
287
+ rio('afile') &lt; string
288
+ # method 2
289
+ ario.print!(string)
290
+ # method 3
291
+ ario.print(string).close
292
+ </pre>
293
+ </li>
294
+ <li>Append a string to a file, leaving the Rio open
295
+
296
+ <pre>
297
+ # method 1
298
+ ario.a.puts(string)
299
+ # method 2
300
+ ario.a.print(string)
301
+ # method 3
302
+ ario.noautoclose &lt;&lt; string
303
+ </pre>
304
+ </li>
305
+ <li>Append a string to a file and close the file
306
+
307
+ <pre>
308
+ # method 1
309
+ rio('afile') &lt;&lt; string
310
+ # method 2
311
+ rio('afile').a.print!(string)
312
+ # method 3
313
+ rio('afile').a.print(string).close
314
+ </pre>
315
+ </li>
316
+ <li>Write an array to a file, leaving the Rio open
317
+
318
+ <pre>
319
+ # method 1
320
+ ario = rio('afile').nocloseoncopy
321
+ ario &lt;&lt; array
322
+ # method 2
323
+ ario.noautoclose &lt; array
324
+ </pre>
325
+ </li>
326
+ <li>Write an array to a file and close the file
327
+
328
+ <pre>
329
+ # method 1
330
+ rio('afile') &lt; array
331
+ </pre>
332
+ </li>
333
+ </ul>
334
+ <hr size="1"></hr><h3>Select records</h3>
335
+ <pre>
336
+ ario = rio('afile')
337
+ string = &quot;&quot;
338
+ array = []
339
+ </pre>
340
+ <ul>
341
+ <li>Put lines one thru ten and line 100 into an array
342
+
343
+ <pre>
344
+ # method 1
345
+ array = ario[0..9,99]
346
+ # method 2
347
+ array = ario.lines[0..9,99]
348
+ # method 3
349
+ ario.lines(0..9,99) &gt; array
350
+ </pre>
351
+ </li>
352
+ <li>Put lines one thru ten,line 100 and lines starting with
353
+ &#8216;rio4ruby&#8217; into an array
354
+
355
+ <pre>
356
+ # method 1
357
+ array = ario[0..9,99,/^rio4ruby/]
358
+ # method 2
359
+ array = ario.lines[0..9,99,/^rio4ruby/]
360
+ # method 3
361
+ ario.lines(0..9,99,/^rio4ruby/) &gt; array
362
+ </pre>
363
+ </li>
364
+ <li>Put lines that are longer than 128 bytes into an array
365
+
366
+ <pre>
367
+ # method 1
368
+ array = ario[proc{ |l| l.length &gt; 128}]
369
+ # method 2
370
+ array = ario.lines[proc{ |l| l.length &gt; 128}]
371
+ # method 3
372
+ array = ario.skiplines[proc{ |l| l.length &lt;= 128}]
373
+ # method 4
374
+ array = ario.skip.lines[proc{ |l| l.length &lt;= 128}]
375
+ </pre>
376
+ </li>
377
+ <li>Copy all lines that do not start with &#8216;rio4ruby&#8217; into another
378
+ file
379
+
380
+ <pre>
381
+ # method 1
382
+ ario.skiplines(/^rio4ruby/) &gt; rio('another_file')
383
+ # method 2
384
+ ario.lines.skiplines(/^rio4ruby/) &gt; rio('another_file')
385
+ # method 3
386
+ rio('another_file') &lt; ario.skiplines(/^rio4ruby/)
387
+ </pre>
388
+ </li>
389
+ <li>Copy the first 10 lines and lines starting with &#8216;rio4ruby&#8217;, but
390
+ exclude any lines longer than 128 bytes
391
+
392
+ <pre>
393
+ # method 1
394
+ ario.lines(0...10,/^rio4ruby/).skiplines(proc{ |l| l.length &gt; 128}] &gt; rio('another_file')
395
+ # method 2
396
+ rio('another_file') &lt; ario.lines(0...10,/^rio4ruby/).skiplines(proc{ |l| l.length &gt; 128})
397
+ </pre>
398
+ </li>
399
+ </ul>
400
+ <hr size="1"></hr><h3>Select directory entries</h3>
401
+ <pre>
402
+ ario = rio('adir')
403
+ string = &quot;&quot;
404
+ array = []
405
+ </pre>
406
+ <ul>
407
+ <li>Put all entries with the extension &#8217;.txt&#8217; into an array
408
+
409
+ <pre>
410
+ # method 1
411
+ array = ario['*.txt']
412
+ # method 2
413
+ array = ario[/\.txt$/]
414
+ # method 3
415
+ array = ario.entries['*.txt']
416
+ </pre>
417
+ </li>
418
+ <li>Put all files with the extension &#8217;.txt&#8217; into an array
419
+
420
+ <pre>
421
+ # method 1
422
+ array = ario.files['*.txt']
423
+ # method 2
424
+ array = ario.files[/\.txt$/]
425
+ # method 3
426
+ array = ario.files['*.txt']
427
+ </pre>
428
+ </li>
429
+ <li>Put all entries with the extension &#8217;.txt&#8217; into an array,
430
+ including those in subdirectories
431
+
432
+ <pre>
433
+ # method 1
434
+ array = ario.all['*.txt']
435
+ # method 2
436
+ array = ario.all[/\.txt$/]
437
+ # method 3
438
+ array = ario.all.entries['*.txt']
439
+ </pre>
440
+ </li>
441
+ <li>Put all entries with the extension &#8217;.txt&#8217; into an array,
442
+ including those in subdirectories, except those in subdirectories name
443
+ &#8217;.svn&#8217;
444
+
445
+ <pre>
446
+ # method 1
447
+ array = ario.norecurse('.svn').all['*.txt']
448
+ # method 2
449
+ array = ario.norecurse(/^\.svn$/).all[/\.txt$/]
450
+ # method 3
451
+ array = ario.norecurse('.svn').entries['*.txt']
452
+ # method 4
453
+ array = ario.entries('*.txt').norecurse('.svn').to_a
454
+ # method 5
455
+ array = ario.norecurse('.svn')['*.txt']
456
+ </pre>
457
+ </li>
458
+ <li>Put all directories (recursively) into an array
459
+
460
+ <pre>
461
+ # method 1
462
+ array = ario.dirs[]
463
+ # method 2
464
+ array = ario.dirs.to_a
465
+ </pre>
466
+ </li>
467
+ <li>Put all entries (recursively) into an array, but limit the depth of
468
+ recursion to 2
469
+
470
+ <pre>
471
+ # method 1
472
+ array = ario.norecurse(3).to_a
473
+ </pre>
474
+ </li>
475
+ <li>Iterate through ruby files in a directory and subdirectories skipping those
476
+ in the &#8217;.svn&#8217;, and &#8216;pkg&#8217; directories
477
+
478
+ <pre>
479
+ # method 1
480
+ is_ruby_exe = proc{ |f| f.executable? and f[0][0] =~ /^#!.+ruby/ }
481
+ ario.norecurse('.svn','pkg').files('*.rb',is_ruby_exe) { |f| ... }
482
+ # method 2
483
+ is_ruby_exe = proc{ |f| f.executable? and f.gets =~ /^#!.+ruby/ }
484
+ ario.norecurse('.svn','pkg').files('*.rb',is_ruby_exe) { |f| ... }
485
+ </pre>
486
+ </li>
487
+ <li>Put all files excluding those that are symlinks to files in an array
488
+
489
+ <pre>
490
+ # method 1
491
+ array = ario.skipfiles[:symlink?]
492
+ # method 2
493
+ array = ario.skipfiles(:symlink?).files[]
494
+ # method 3
495
+ array = ario.skipfiles(:symlink?).to_a
496
+ # method 4
497
+ array = ario.files.skipfiles[:symlink?]
498
+ </pre>
499
+ </li>
500
+ <li>Put all entries that are not files (or symlinks to files) into an array
501
+
502
+ <pre>
503
+ # method 1
504
+ array = ario.skipfiles[]
505
+ # method 2
506
+ array = ario.skipfiles.to_a
507
+ </pre>
508
+ </li>
509
+ <li>Put all entries that are symlinks to files into an array
510
+
511
+ <pre>
512
+ # method 1
513
+ array = ario.files[proc{|f| f.file? and f.symlink?}]
514
+ # method 2
515
+ array = ario.files(proc{|f| f.file? and f.symlink?}).to_a
516
+ </pre>
517
+ </li>
518
+ <li>Put all directories except those named &#8217;.svn&#8217; into an array
519
+
520
+ <pre>
521
+ # method 1
522
+ array = ario.skipdirs['.svn']
523
+ # method 2
524
+ array = ario.skipdirs[/^\.svn$/]
525
+ # method 3
526
+ array = ario.skipdirs('.svn').to_a
527
+ # method 4
528
+ array = ario.skipdirs('.svn').dirs[]
529
+ # method 5
530
+ array = ario.skipdirs('.svn')[]
531
+ </pre>
532
+ </li>
533
+ </ul>
534
+ <hr size="1"></hr><h3>Read and writing files</h3>
535
+ <pre>
536
+ ario = rio('afile')
537
+ string = &quot;&quot;
538
+ array = []
539
+ </pre>
540
+ <ul>
541
+ <li>Copy the contents of one file into another file
542
+
543
+ <pre>
544
+ # method 1
545
+ rio('srcfile') &gt; rio('dstfile')
546
+ # method 2
547
+ rio('dstfile') &lt; rio('srcfile')
548
+ # method 3
549
+ rip('dstfile').print!(rio('srcfile').contents)
550
+ </pre>
551
+ </li>
552
+ <li>Append the contents of one file to another file
553
+
554
+ <pre>
555
+ # method 1
556
+ rio('srcfile') &gt;&gt; rio('dstfile')
557
+ # method 2
558
+ rio('dstfile') &lt;&lt; rio('srcfile')
559
+ # method 3
560
+ rip('dstfile').a.print!(rio('srcfile').contents)
561
+ </pre>
562
+ </li>
563
+ <li>Copy the first 10 lines of one file to another file
564
+
565
+ <pre>
566
+ # method 1
567
+ rio('srcfile').lines(0...10) &gt; rio('dstfile')
568
+ # method 2
569
+ rio('dstfile') &lt; rio('srcfile').lines(0...10)
570
+ # method 3
571
+ rio('dstfile') &lt; rio('srcfile').lines[0...10]
572
+ </pre>
573
+ </li>
574
+ <li>Concatenate several files into one
575
+
576
+ <pre>
577
+ # method 1
578
+ rio('dstfile') &lt; [ rio('src1'), rio('src2'), rio('src3') ]
579
+ # method 2
580
+ rio('dstfile') &lt; rio('src1') &lt;&lt; rio('src2') &lt;&lt; rio('src3')
581
+ </pre>
582
+ </li>
583
+ <li>Copy a web page into a file
584
+
585
+ <pre>
586
+ # method 1
587
+ rio('http://ruby-doc.org/') &gt; rio('afile')
588
+ # method 2
589
+ rio('afile') &lt; rio('http://ruby-doc.org/')
590
+ # method 3
591
+ rio('afile').print!(rio('http://ruby-doc.org/').contents)
592
+ </pre>
593
+ </li>
594
+ <li>Append the output of the daytime server running on the localhost to a file
595
+
596
+ <pre>
597
+ # method 1
598
+ rio(&quot;tcp://localhost:daytime&quot;) &gt;&gt; rio('afile')
599
+ # method 2
600
+ rio(&quot;tcp:&quot;,'localhost','daytime') &gt;&gt; rio('afile')
601
+ # method 3
602
+ rio('afile') &lt;&lt; rio(&quot;tcp://:daytime&quot;)
603
+ # method 4
604
+ rio('afile') &lt;&lt; rio(&quot;tcp://:13&quot;)
605
+ </pre>
606
+ </li>
607
+ <li>Copy the first line and all lines containing &#8216;http:&#8217; to a file
608
+
609
+ <pre>
610
+ # method 1
611
+ rio('srcfile').lines(0,/http:/) &gt; rio('dstfile')
612
+ # method 2
613
+ rio('dstfile') &lt; rio('srcfile').lines(0,/http:/)
614
+ # method 3
615
+ rio('dstfile') &lt; rio('srcfile').lines[0,/http:/]
616
+ # method 4
617
+ </pre>
618
+ </li>
619
+ <li>Create a gzipped copy of a file
620
+
621
+ <pre>
622
+ # method 1
623
+ rio('afile') &gt; rio('afile.gz').gzip
624
+ # method 2
625
+ rio('afile.gz').gzip &lt; rio('afile')
626
+ # method 3
627
+ rio('afile.gz').gzip.print!( rio('afile').contents )
628
+ </pre>
629
+ </li>
630
+ <li>Create an ungzipped copy of a gzipped file
631
+
632
+ <pre>
633
+ # method 1
634
+ rio('afile') &lt; rio('afile.gz').gzip
635
+ # method 2
636
+ rio('afile.gz').gzip &gt; rio('afile')
637
+ # method 3
638
+ rio('afile').print!( rio('afile.gz').gzip.contents )
639
+ </pre>
640
+ </li>
641
+ <li>Copy the first 100 lines of gzipped file on a webserver into a local file
642
+
643
+ <pre>
644
+ # method 1
645
+ rio('http://aserver/afile.gz').gzip.lines(0...100) &gt; rio('afile')
646
+ </pre>
647
+ </li>
648
+ <li>Create a file composed of a header from another file, the output of the
649
+ &#8216;ps&#8217; command, some text and its creation time pulled from the
650
+ daytime server running on your localhost
651
+
652
+ <pre>
653
+ # method 1
654
+ rio('out') &lt; [ rio('header'), rio(?-,'ps'), &quot;Created on &quot;, rio('tcp://:daytime') ]
655
+ # method 2
656
+ rio('out') &lt; rio('header') &lt;&lt; rio(?-,'ps') &lt;&lt; &quot;Created on: &quot; &lt;&lt; rio(&quot;tcp://:daytime&quot;)
657
+ </pre>
658
+ </li>
659
+ </ul>
660
+ <hr size="1"></hr><h3>Reading multiple files</h3>
661
+ <pre>
662
+ ario = rio('adir')
663
+ string = &quot;&quot;
664
+ array = []
665
+ </pre>
666
+ <ul>
667
+ <li>Count the lines of code in a directory tree of ruby source files
668
+
669
+ <pre>
670
+ # method 1
671
+ cnt = ario.all.files('*.rb').skiplines[/^\s*#/,/^\s*$/].size
672
+ # method 2
673
+ cnt = ario.all.files('*.rb').skiplines(/^\s*#/,/^\s*$/).inject(0) { |sum,l| sum += 1 }
674
+ </pre>
675
+ </li>
676
+ <li>Concatanate the contents of all .txt files in a directory into an array
677
+
678
+ <pre>
679
+ # method 1
680
+ array = ario.lines.files['*.txt']
681
+ # method 2
682
+ array = ario.files('*.txt').lines[]
683
+ # method 3
684
+ ario.files('*.txt').lines &gt; array
685
+ </pre>
686
+ </li>
687
+ <li>Concatanate the first line of all .txt files in a directory into an array
688
+
689
+ <pre>
690
+ # method 1
691
+ array = ario.lines(0).files['*.txt']
692
+ # method 2
693
+ array = ario.files('*.txt').lines[0]
694
+ # method 3
695
+ ario.files('*.txt').lines(0) &gt; array
696
+ </pre>
697
+ </li>
698
+ <li>Copy all .txt files (but only their first ten lines) in a directory into
699
+ another directiory
700
+
701
+ <pre>
702
+ # method 1
703
+ ario.files('*.txt').lines(0...10) &gt; rio('another_dir')
704
+ </pre>
705
+ </li>
706
+ </ul>
707
+ <hr size="1"></hr><h3>Read and write using Standard IO</h3>
708
+ <pre>
709
+ string = &quot;&quot;
710
+ array = []
711
+ </pre>
712
+ <ul>
713
+ <li>Prompt for input and return what was typed
714
+
715
+ <pre>
716
+ # method 1
717
+ ans = rio(?-).chomp.print(&quot;Type Something: &quot;).gets
718
+ # method 2
719
+ stdio = rio(?-).chomp
720
+ ans = stdio.print(&quot;Type Something: &quot;).gets
721
+ </pre>
722
+ </li>
723
+ <li>Create a Rio tied to stdin or stdout, depending on how it is used
724
+
725
+ <pre>
726
+ stdio = rio(?-)
727
+ </pre>
728
+ </li>
729
+ <li>Create a Rio tied to stderr
730
+
731
+ <pre>
732
+ stderr = rio(?=)
733
+ </pre>
734
+ </li>
735
+ <li>Write a string to stdout
736
+
737
+ <pre>
738
+ # method 1
739
+ rio(?-).puts(&quot;Hello World&quot;)
740
+ # method 2
741
+ rio(?-) &lt;&lt; &quot;Hello World\n&quot;
742
+ # method 3
743
+ rio(?-) &lt; &quot;Hello World\n&quot;
744
+ </pre>
745
+ </li>
746
+ <li>Read a string from stdin with the input chomped
747
+
748
+ <pre>
749
+ # method 1
750
+ ans = rio(?-).chomp.gets
751
+ # method 2
752
+ stdio = rio(?-).chomp
753
+ ans = stdio.gets
754
+ </pre>
755
+ </li>
756
+ <li>Read from stdin until end of file with the result going into a string
757
+
758
+ <pre>
759
+ # method 1
760
+ rio(?-) &gt;&gt; string
761
+ # method 2
762
+ rio(?-) &gt; string
763
+ </pre>
764
+ </li>
765
+ <li>Read from stdin until end of file with the chomped lines going into an
766
+ array
767
+
768
+ <pre>
769
+ # method 1
770
+ rio(?-).chomp &gt;&gt; array
771
+ # method 2
772
+ rio(?-).chomp &gt; array
773
+ </pre>
774
+ </li>
775
+ <li>Read from stdin until end of file with the result going into a file
776
+
777
+ <pre>
778
+ # method 1
779
+ rio(?-) &gt; rio('afile')
780
+ # method 2
781
+ rio('afile') &lt; rio(?-)
782
+ </pre>
783
+ </li>
784
+ <li>Read from stdin until end of file with the result appended to a file
785
+
786
+ <pre>
787
+ # method 1
788
+ rio(?-) &gt;&gt; rio('afile')
789
+ # method 2
790
+ rio('afile') &lt;&lt; rio(?-)
791
+ </pre>
792
+ </li>
793
+ <li>Write a message to stderr
794
+
795
+ <pre>
796
+ # method 1
797
+ rio(?=).puts(&quot;Hello Error&quot;)
798
+ # method 2
799
+ rio(?=) &lt;&lt; &quot;Hello Error\n&quot;
800
+ # method 3
801
+ rio(?=) &lt; &quot;Hello Error\n&quot;
802
+ </pre>
803
+ </li>
804
+ <li>Dump a file to stdout
805
+
806
+ <pre>
807
+ # method 1
808
+ rio('afile') &gt; ?-
809
+ # method 2
810
+ rio('afile') &gt; rio(?-)
811
+ # method 3
812
+ rio(?-) &lt;&lt; rio('afile')
813
+ # method 4
814
+ rio('afile') &gt;&gt; ?-
815
+ # method 5
816
+ rio(?-) &lt; rio('afile')
817
+ # method 6
818
+ rio(?-).print(rio('afile').contents)
819
+ </pre>
820
+ </li>
821
+ <li>Emulate a simplified unix &#8216;head&#8217; command which reads from stdin
822
+ and writes the first 10 lines to stdout
823
+
824
+ <pre>
825
+ # method 1
826
+ rio(?-).lines(0..9) &gt; ?-
827
+ </pre>
828
+ </li>
829
+ </ul>
830
+ <hr size="1"></hr><h3>Reading and writing from processes as one might do with popen</h3>
831
+ <ul>
832
+ <li>Read the output of the &#8216;ps&#8217; command into an array without the
833
+ header line or the line representing the &#8216;ps&#8217; command itself
834
+
835
+ <pre>
836
+ ps = rio(?-,'ps -a').skiplines[0,/ps$/]
837
+ </pre>
838
+ </li>
839
+ <li>Run an external program, copying its input from one location and its output
840
+ to another, and make it look very much like a shell command.
841
+
842
+ <pre>
843
+ infile = rio(?&quot;,&quot;Hello Kitty\n&quot;)
844
+ outfile = rio('out.txt')
845
+
846
+ # method 1
847
+ cat = rio(?-,'cat').w!
848
+ cat &lt;infile &gt;outfile
849
+
850
+ # method 2
851
+ infile | 'cat' | outfile
852
+ </pre>
853
+ </li>
854
+ </ul>
855
+ <hr size="1"></hr><h3>Renaming and moving files</h3>
856
+ <pre>
857
+ string = &quot;&quot;
858
+ array = []
859
+ </pre>
860
+ <ul>
861
+ <li>Rename the file &#8216;a&#8217; to &#8216;b&#8217;
862
+
863
+ <pre>
864
+ # method 1
865
+ rio('a').rename('b')
866
+ # method 2
867
+ rio('a').rename.filename = 'b'
868
+ </pre>
869
+ </li>
870
+ <li>Rename a file and leave the Rio referencing the files old name
871
+
872
+ <pre>
873
+ ario = rio('a')
874
+ # method 1
875
+ ario.rename('b')
876
+ </pre>
877
+ </li>
878
+ <li>Rename a file and change the Rio to reference the new file name
879
+
880
+ <pre>
881
+ ario = rio('a')
882
+ # method 1
883
+ ario.rename!('b')
884
+ </pre>
885
+ </li>
886
+ <li>Rename the file &#8216;index.htm&#8217; to &#8216;index.html&#8216;
887
+
888
+ <pre>
889
+ # method 1
890
+ rio('index.htm').rename('index.html')
891
+ # method 2
892
+ rio('index.htm').rename.extname = '.html'
893
+ </pre>
894
+ </li>
895
+ <li>Rename the file &#8216;index.html&#8217; to &#8216;welcome.html&#8216;
896
+
897
+ <pre>
898
+ # method 1
899
+ rio('index.html').rename('welecome.html')
900
+ # method 2
901
+ rio('index.htm').rename.basename = 'welcome'
902
+ </pre>
903
+ </li>
904
+ <li>Move a file from directory &#8216;src&#8217; to directory &#8216;dst&#8217;
905
+
906
+ <pre>
907
+ # method 1
908
+ rio('src/afile').rename('dst/afile')
909
+ # method 2
910
+ rio('src/afile').rename.dirname = 'dst'
911
+ </pre>
912
+ </li>
913
+ <li>Change a file to have the extension &#8217;.html&#8217; leaving the rest of
914
+ it as is
915
+
916
+ <pre>
917
+ # method 1
918
+ ario.rename.extname = '.html'
919
+ </pre>
920
+ </li>
921
+ <li>Change a files basename to &#8216;rio4ruby&#8217; without changing its
922
+ extension
923
+
924
+ <pre>
925
+ # method 1
926
+ ario.rename.basename = 'rio4ruby'
927
+ </pre>
928
+ </li>
929
+ <li>Change a file ending with &#8217;.tar.gz&#8217; to end with
930
+ &#8217;.tgz&#8217;
931
+
932
+ <pre>
933
+ # method 1
934
+ ario.rename.ext('.tar.gz').extname = '.tgz'
935
+ </pre>
936
+ </li>
937
+ <li>Change the extension of all files with the extension &#8217;.htm&#8217; in
938
+ a directory to have the extension &#8217;.html&#8217;
939
+
940
+ <pre>
941
+ # method 1
942
+ rio('adir').rename.files('*.htm') do |htmfile|
943
+ htmlfile.extname = '.html'
944
+ end
945
+ # method 2
946
+ rio('adir').files('*.htm') do |htmfile|
947
+ htmlfile.rename.extname = '.html'
948
+ end
949
+ </pre>
950
+ </li>
951
+ <li>Change the extension of all files with the extension &#8217;.htm&#8217; in
952
+ a directory and its subdirectories to have the extension
953
+ &#8217;.html&#8217;
954
+
955
+ <pre>
956
+ # method 1
957
+ rio('adir').rename.all.files('*.htm') do |htmfile|
958
+ htmfile.extname = '.html'
959
+ end
960
+ # method 2
961
+ rio('adir').all.files('*.htm') do |htmfile|
962
+ htmfile.rename.extname = '.html'
963
+ end
964
+ </pre>
965
+ </li>
966
+ <li>Move a file in an arbitrary directory into the current working directory.
967
+
968
+ <pre>
969
+ # method 1
970
+ rio('arb/i/trary/di/rec/tory/afile').rename.dirname = '.'
971
+ </pre>
972
+ </li>
973
+ </ul>
974
+ <hr size="1"></hr><h3>Manipulate a Rio&#8217;s path</h3>
975
+ <pre>
976
+ string = &quot;&quot;
977
+ array = []
978
+ </pre>
979
+ <ul>
980
+ <li>Create a Rio with an additional subdirectory appended
981
+
982
+ <pre>
983
+ ap = rio('adir')
984
+ # method 1
985
+ ap /= 'subdirectory'
986
+ # method 2
987
+ ap = ap.join('subdirectory')
988
+ # method 3
989
+ ap = rio(ap,'subdirectory')
990
+ </pre>
991
+ </li>
992
+ <li>Create a Rio from an array of subdirectories
993
+
994
+ <pre>
995
+ dirs = ['adir','subdir1','subdir2']
996
+ # method 1
997
+ ario = rio(dirs)
998
+ </pre>
999
+ </li>
1000
+ <li>Create an array of subdirectories from a Rio
1001
+
1002
+ <pre>
1003
+ # method 1
1004
+ anarray = rio('adir/subdir1/subdir2').split
1005
+ </pre>
1006
+ </li>
1007
+ <li>Append a string to a path
1008
+
1009
+ <pre>
1010
+ # method 1
1011
+ ario = rio('apath') + astring
1012
+ # method 2
1013
+ ario = rio('apath')
1014
+ ario += astring
1015
+ </pre>
1016
+ </li>
1017
+ <li>create a directory &#8216;links&#8217; with a symlink pointing to each .rb
1018
+ file in directory &#8216;lib&#8217; (including subdirectories)
1019
+
1020
+ <pre>
1021
+ lib = rio('lib')
1022
+ links = rio('links').delete!.mkdir
1023
+ lib.all.files(&quot;*.rb&quot;) do |f|
1024
+ f.symlink( f.dirname.sub(/^#{lib}/,links).mkdir )
1025
+ end
1026
+ </pre>
1027
+ </li>
1028
+ </ul>
1029
+ <hr size="2"></hr><p>
1030
+ Suggested Reading
1031
+ </p>
1032
+ <ul>
1033
+ <li><a href="SYNOPSIS.html">RIO::Doc::SYNOPSIS</a>
1034
+
1035
+ </li>
1036
+ <li><a href="INTRO.html">RIO::Doc::INTRO</a>
1037
+
1038
+ </li>
1039
+ <li><a href="../Rio.html">RIO::Rio</a>
1040
+
1041
+ </li>
1042
+ </ul>
1043
+
1044
+ </div>
1045
+
1046
+
1047
+ </div>
1048
+
1049
+
1050
+
1051
+
1052
+ <!-- if includes -->
1053
+
1054
+ <div id="section">
1055
+
1056
+
1057
+
1058
+
1059
+
1060
+
1061
+
1062
+
1063
+ <!-- if method_list -->
1064
+ </div>
1065
+
1066
+
1067
+ </div>
1068
+
1069
+
1070
+ <div id="validator-badges">
1071
+ <p><small>Copyright &copy; 2005,2006,2007 Christopher Kleckner. <a href="http://www.gnu.org/licenses/gpl.html">All rights reserved</a>.</small></p>
1072
+ </div>
1073
+
1074
+ </body>
1075
+ </html>