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,18 @@
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>
7
+ <head>
8
+ <title>rio (RIO)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre> <span class="ruby-comment cmt"># File lib/rio/constructor.rb, line 225</span>
14
+ 225: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">rio</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>,<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>) <span class="ruby-comment cmt"># :yields: self</span>
15
+ 226: <span class="ruby-constant">Rio</span>.<span class="ruby-identifier">rio</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>,<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
16
+ 227: <span class="ruby-keyword kw">end</span></pre>
17
+ </body>
18
+ </html>
@@ -0,0 +1,18 @@
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>
7
+ <head>
8
+ <title>cwd (RIO)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre> <span class="ruby-comment cmt"># File lib/rio/constructor.rb, line 235</span>
14
+ 235: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">cwd</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>,<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>) <span class="ruby-comment cmt"># :yields: self</span>
15
+ 236: <span class="ruby-constant">Rio</span>.<span class="ruby-identifier">new</span>.<span class="ruby-identifier">getwd</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>,<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
16
+ 237: <span class="ruby-keyword kw">end</span></pre>
17
+ </body>
18
+ </html>
@@ -0,0 +1,18 @@
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>
7
+ <head>
8
+ <title>root (RIO)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre> <span class="ruby-comment cmt"># File lib/rio/constructor.rb, line 242</span>
14
+ 242: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">root</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>,<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>) <span class="ruby-comment cmt"># :yields: self</span>
15
+ 243: <span class="ruby-constant">Rio</span>.<span class="ruby-identifier">new</span>.<span class="ruby-identifier">rootpath</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>,<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
16
+ 244: <span class="ruby-keyword kw">end</span></pre>
17
+ </body>
18
+ </html>
@@ -0,0 +1,148 @@
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</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</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/EXAMPLES_rb.html">
58
+ lib/rio/doc/EXAMPLES.rb
59
+ </a>
60
+ &nbsp;&nbsp;
61
+ <a class="in-url" href="../../files/lib/rio/doc/HOWTO_rb.html">
62
+ lib/rio/doc/HOWTO.rb
63
+ </a>
64
+ &nbsp;&nbsp;
65
+ <a class="in-url" href="../../files/lib/rio/doc/SYNOPSIS_rb.html">
66
+ lib/rio/doc/SYNOPSIS.rb
67
+ </a>
68
+ &nbsp;&nbsp;
69
+ <a class="in-url" href="../../files/lib/rio/doc/INDEX_rb.html">
70
+ lib/rio/doc/INDEX.rb
71
+ </a>
72
+ &nbsp;&nbsp;
73
+ <a class="in-url" href="../../files/lib/rio/doc/INTRO_rb.html">
74
+ lib/rio/doc/INTRO.rb
75
+ </a>
76
+ &nbsp;&nbsp;
77
+ <a class="in-url" href="../../files/lib/rio/doc/OPTIONAL_rb.html">
78
+ lib/rio/doc/OPTIONAL.rb
79
+ </a>
80
+ &nbsp;&nbsp;
81
+ </td>
82
+ </tr>
83
+
84
+ </table>
85
+ </div>
86
+ <!-- banner header -->
87
+
88
+ <div id="bodyContent">
89
+
90
+
91
+
92
+ <div id="contextContent">
93
+
94
+ <div id="description">
95
+ <p>
96
+ Copyright &#169; 2005,2006,2007 Christopher Kleckner. All rights reserved
97
+ </p>
98
+ <p>
99
+ This file is part of the Rio library for ruby. Rio is free software; you
100
+ can redistribute it and/or modify it under the terms of the <a
101
+ href="http://www.gnu.org/licenses/gpl.html">GNU General Public License</a>
102
+ as published by the Free Software Foundation; either version 2 of the
103
+ License, or (at your option) any later version.
104
+ </p>
105
+
106
+ </div>
107
+
108
+
109
+ </div>
110
+
111
+
112
+
113
+
114
+ <!-- if includes -->
115
+
116
+ <div id="section">
117
+
118
+ <div id="class-list">
119
+ <h3 class="section-bar">Classes and Modules</h3>
120
+
121
+ Module <a href="Doc/EXAMPLES.html" class="link">RIO::Doc::EXAMPLES</a><br />
122
+ Module <a href="Doc/HOWTO.html" class="link">RIO::Doc::HOWTO</a><br />
123
+ Module <a href="Doc/INDEX.html" class="link">RIO::Doc::INDEX</a><br />
124
+ Module <a href="Doc/INTRO.html" class="link">RIO::Doc::INTRO</a><br />
125
+ Module <a href="Doc/OPTIONAL.html" class="link">RIO::Doc::OPTIONAL</a><br />
126
+ Module <a href="Doc/SYNOPSIS.html" class="link">RIO::Doc::SYNOPSIS</a><br />
127
+
128
+ </div>
129
+
130
+
131
+
132
+
133
+
134
+
135
+
136
+ <!-- if method_list -->
137
+ </div>
138
+
139
+
140
+ </div>
141
+
142
+
143
+ <div id="validator-badges">
144
+ <p><small>Copyright &copy; 2005,2006,2007 Christopher Kleckner. <a href="http://www.gnu.org/licenses/gpl.html">All rights reserved</a>.</small></p>
145
+ </div>
146
+
147
+ </body>
148
+ </html>
@@ -0,0 +1,432 @@
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::EXAMPLES</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::EXAMPLES</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/EXAMPLES_rb.html">
58
+ lib/rio/doc/EXAMPLES.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
+ <p>
76
+ The following examples are provided without comment
77
+ </p>
78
+ <pre>
79
+ array = rio('afile').readlines
80
+
81
+ rio('afile') &gt; rio('acopy')
82
+
83
+ ary = rio('afile').chomp.lines[0...10]
84
+
85
+ rio('adir').rename.all.files('*.htm') do |file|
86
+ file.ext = '.html'
87
+ end
88
+ </pre>
89
+ <p>
90
+ A basic familiarity with ruby and shell operations should allow a casual
91
+ reader to guess what these examples will do. How they are being performed
92
+ may not be what a casual reader might expect. I will explain these example
93
+ to illustrate the Rio basics.
94
+ </p>
95
+ <p>
96
+ For many more examples please read the <a href="HOWTO.html">HOWTO</a>
97
+ document and the rdoc documentation.
98
+ </p>
99
+ <h2>Example 1.</h2>
100
+ <pre>
101
+ array = rio('afile').readlines
102
+ </pre>
103
+ <p>
104
+ This uses IO#readlines to read the lines of &#8216;afile&#8217; into an
105
+ array.
106
+ </p>
107
+ <h3>Creating a Rio</h3>
108
+ <p>
109
+ Rio extends the module <a href="../../Kernel.html">Kernel</a> by adding one
110
+ function <tt>rio</tt>, which acts as a constructor returning a Rio. This
111
+ constructor builds a description of the resource the Rio will access
112
+ (usually a path). It does not open the resource, check for its existance,
113
+ or do anything except remember its specifcation. <em>rio</em> returns the
114
+ Rio which can be chained to a Rio method as in this example or stored in a
115
+ variable. This coud have been written
116
+ </p>
117
+ <pre>
118
+ ario = rio('afile')
119
+ array = ario.readlines
120
+
121
+ ario = rio('afile')
122
+ </pre>
123
+ <p>
124
+ In this case the resource specified is a relative path. After the first
125
+ line the Rio does know or care whether it is a path to a file nor whether
126
+ it exists. Rio provides many methods that only deal with a resource at this
127
+ level, much as the standard library classes Pathname and URI. It should be
128
+ noted at this point that Rio paths stored internally as a URL as specified
129
+ in RFC 1738 and therefore use slashes as separators. A resource can also be
130
+ specified without separators, because <em>rio</em> interprets multiple
131
+ arguments as parts of a path to be joined, and an array as an array of
132
+ parts to be joined. So the following all specify the same resource.
133
+ </p>
134
+ <pre>
135
+ rio('adir/afile')
136
+ rio('adir','afile')
137
+ rio(%w/adir afile/)
138
+ </pre>
139
+ <p>
140
+ The rio constructor can be used to specify non-file-system resources, but
141
+ for this example we will restrict our discussion to paths to entities on
142
+ file-systems.
143
+ </p>
144
+ <pre>
145
+ array = ario.readlines
146
+ </pre>
147
+ <p>
148
+ Now that we have a Rio, we can call one of its methods; in this case
149
+ <em>readlines</em>. This is an example of using a Rio as a proxy for the
150
+ builtin IO#readlines. Given the method <em>readlines</em>, the Rio opens
151
+ &#8216;afile&#8217; for reading, calls readlines on the resulting IO
152
+ object, closes the IO object, and returns the lines read.
153
+ </p>
154
+ <h2>Example 2</h2>
155
+ <pre>
156
+ rio('afile') &gt; rio('acopy')
157
+ </pre>
158
+ <p>
159
+ This copies the file &#8216;afile&#8217; into the file &#8216;acopy&#8217;.
160
+ </p>
161
+ <p>
162
+ The first things that happen here are the creation of the Rios. As
163
+ described in Example 1, when created a Rio simply remembers the
164
+ specifcation of its resource. In this case, a relative path
165
+ &#8216;afile&#8217; on the left and a relative path &#8216;acopy&#8217; on
166
+ the right.
167
+ </p>
168
+ <p>
169
+ Next the Rio#> (copy-to) method is called on the &#8216;afile&#8217; Rio
170
+ with the &#8216;acopy&#8217; Rio as its argument. If that looks like a
171
+ greater-than operator to you, think Unix shell, with Rios
172
+ &#8217;&gt;&#8217; is the copy-to operator.
173
+ </p>
174
+ <p>
175
+ Upon seeing the copy-to operator, the Rio has all the information it needs
176
+ to proceed. It determines that it must be opened for reading, that its
177
+ argument must be opened for writing, and that it&#8217;s contents must be
178
+ copied to the resource referenced by it&#8217; argument &#8212; and that is
179
+ what it does. Then it closes itself and its argument.
180
+ </p>
181
+ <p>
182
+ Consider if we had written this example this way.
183
+ </p>
184
+ <pre>
185
+ afile = rio('afile')
186
+ acopy = rio('acopy')
187
+ afile &gt; acopy
188
+ </pre>
189
+ <p>
190
+ In this case we would still have variables referencing the Rios, and
191
+ perhaps we would like do things a little differently than described above.
192
+ Be assured that the selection of mode and automatic closing of files are
193
+ the default behaviour and can be changed. Say we wanted &#8216;afile&#8217;
194
+ to remain open so that we could rewind it and make a second copy, we might
195
+ do something like this:
196
+ </p>
197
+ <pre>
198
+ afile = rio('afile').nocloseoneof
199
+ afile &gt; rio('acopy1')
200
+ afile.rewind &gt; rio('acopy2')
201
+ afile.close
202
+ </pre>
203
+ <p>
204
+ Actually the &#8216;thinking process&#8217; of the Rio when it sees a
205
+ copy-to operator is much more complex than that described above. If its
206
+ argument had been a rio referencing a directory, it would not have opened
207
+ itself for reading, but instead used FileUtils#cp to copy itself; if its
208
+ argument had been a string, its contents would have ended up in the string;
209
+ If its argument had been an array, its lines would been elements of that
210
+ array; if its argument had been a socket, the its contents would have been
211
+ copied to the socket. See the documentation for details.
212
+ </p>
213
+ <h2>Example 3.</h2>
214
+ <pre>
215
+ array = rio('afile').chomp.lines[0...10]
216
+ </pre>
217
+ <p>
218
+ This fills <tt>array</tt> with the first ten lines of &#8216;afile&#8217;,
219
+ with each line chomped
220
+ </p>
221
+ <p>
222
+ The casual observer mentioned above might think that <tt>lines</tt> returns
223
+ an array of lines and that this is a simple rewording of <tt>array = <a
224
+ href="http://0...10">rio('afile').readlines</a></tt> or even of <tt>array =
225
+ <a href="http://0...10">File.new('afile').readlines</a></tt>. They would be
226
+ wrong.
227
+ </p>
228
+ <p>
229
+ <tt>chomp</tt> is a configuration method which turns on chomp-mode and
230
+ returns the Rio. Chomp-mode causes all line oriented read operations to
231
+ perform a String#chomp on each line
232
+ </p>
233
+ <h3>Reading files</h3>
234
+ <p>
235
+ Rio provides four methods to select which part of the file is read and how
236
+ the file is divided. They are <tt>lines</tt>, <tt>records</tt>,
237
+ <tt>rows</tt> and <tt>bytes</tt>. Briefly, <tt>lines</tt> specifies that
238
+ the file should be read line by line and <tt>bytes(n)</tt> specifies that
239
+ the file should be read in <em>n</em> byte chunks. All four take arguments
240
+ which can be used to filter lines or chunks in or out. For simple Rios
241
+ <tt>records</tt> and <tt>rows</tt> only specify the filter arguments and
242
+ are provided for use be extensions. For example, the CSV extension returns
243
+ an array of the columns in a line when <tt>records</tt> is used. In the
244
+ absence of an extension <tt>records</tt> and <tt>rows</tt> behave like
245
+ <tt>lines</tt>.
246
+ </p>
247
+ <p>
248
+ First lets rewrite our example as:
249
+ </p>
250
+ <pre>
251
+ array = rio('afile').chomp.lines(0...10).to_a
252
+ </pre>
253
+ <p>
254
+ The arguments to lines specify which records are to be read. Arguments are
255
+ interpreted based on their class as follows:
256
+ </p>
257
+ <ul>
258
+ <li>Range - interpreted as a range of record numbers to be read
259
+
260
+ </li>
261
+ <li>Integer - interpreted as a one-element range
262
+
263
+ </li>
264
+ <li>RegExp - only matching records are processed
265
+
266
+ </li>
267
+ <li>Symbol - sent to each record, which is processed unless the result is false
268
+ or nil
269
+
270
+ </li>
271
+ <li>Proc - called for each record, the record is processed unless the return
272
+ value is false or nil
273
+
274
+ </li>
275
+ </ul>
276
+ <p>
277
+ See the documentation for details and examples.
278
+ </p>
279
+ <p>
280
+ In our example we have specified the Range (0...10). The <tt>lines</tt>
281
+ method is just configuring the Rio, it does not trigger any IO operation.
282
+ The fact that it was called and the arguments it was called with are stored
283
+ away and the Rio is returned for further configuration or an actual IO
284
+ operation. When an IO operation is called the Range will be used to limit
285
+ processing to the first ten records. For example:
286
+ </p>
287
+ <pre>
288
+ rio('afile').lines(0...10).each { |line| ... } # block will be called for the first 10 records
289
+ rio('afile').lines(0...10).to_a # the first 10 records will be returned in an array
290
+ rio('afile').lines(0...10) &gt; rio('acopy') # the first 10 records will be copied to 'acopy'
291
+ </pre>
292
+ <p>
293
+ &quot;But wait&quot;, you say, &quot;In our original example the range was
294
+ an argument to the subscript operator, not to <tt>lines</tt>&quot;. This
295
+ works because the subscript operator processes its arguments as if they had
296
+ been arguments to the most-recently-called selection method and then calls
297
+ <tt>to_a</tt> on the rio. So our rewrite of the example does precisely the
298
+ same thing as the original
299
+ </p>
300
+ <p>
301
+ The big difference between the original example and the
302
+ casual-observer&#8217;s solution is that hers creates an array of the
303
+ entire contents and only returns the first 10 while the original only puts
304
+ 10 records into the array.
305
+ </p>
306
+ <p>
307
+ As a sidenote, Rios also have an optimization that can really help in
308
+ certain situations. If records are only selected using Ranges, it stops
309
+ iterating when it is beyond the point where it could possibly ever match.
310
+ This can make a dramatic difference when one is only interested in the
311
+ first few lines of very large files.
312
+ </p>
313
+ <h2>Example 4.</h2>
314
+ <pre>
315
+ rio('adir').rename.all.files('*.htm') do |file|
316
+ file.ext = '.html'
317
+ end
318
+ </pre>
319
+ <p>
320
+ This changes the extension of all .htm files below &#8216;adir&#8217; to
321
+ &#8217;.html&#8217;
322
+ </p>
323
+ <p>
324
+ First we create the rio as always.
325
+ </p>
326
+ <p>
327
+ Next we process the <tt>rename</tt> method. When used as it is here &#8212;
328
+ without arguments &#8212; it just turns on rename-mode and returns the Rio.
329
+ </p>
330
+ <p>
331
+ <tt>all</tt> is another configuration method, which causes directories to
332
+ be processed recursively
333
+ </p>
334
+ <p>
335
+ <tt>files</tt> is another configuration method. In example 3 we used
336
+ <tt>lines</tt> to select what to process when iterating through a file.
337
+ <tt>files</tt> is used to select what to process when iterating through
338
+ directories. The arguments to <tt>files</tt> can be the same as those for
339
+ <tt>lines</tt> except that Ranges can not be used and globs can.
340
+ </p>
341
+ <p>
342
+ In our example, the argument to <tt>files</tt> is a string which is treated
343
+ as a glob. As with <tt>lines</tt>, <tt>files</tt> does not trigger any IO,
344
+ it just configures the Rio.
345
+ </p>
346
+ <h3>There&#8217;s no action</h3>
347
+ <p>
348
+ The previous examples had something that triggered IO: <tt>readlines</tt>,
349
+ <tt>to_a</tt>, <tt>each</tt>, <tt>&gt; (copy-to)</tt>. This example does
350
+ not. This example illustrates Rio&#8217;s &#8216;implied each&#8217;. All
351
+ the configuration methods will call each for you if a block is given. So,
352
+ because a block follows the <tt>files</tt> method, it calls <tt>each</tt>
353
+ and passes it the block.
354
+ </p>
355
+ <p>
356
+ Let&#8217;s recap. At this point we have a Rio with a resource specified.
357
+ We have configured with a couple of modes, &#8216;rename&#8217;, and
358
+ &#8216;all&#8217;, and we have limited the elements we want to process to
359
+ entries that are files and match the glob &#8217;*.htm&#8217;.
360
+ <tt>each</tt> causes the Rio to open the directory and call the block for
361
+ each entry that is both a file and matches the glob. It was also configured
362
+ with <tt>all</tt>,so it descends into subdirectories to find further
363
+ matches and calles the block for each of them. The argument passed to the
364
+ block is a Rio referencing the entry on the file-system.
365
+ </p>
366
+ <p>
367
+ The <em>rename_mode</em> we set has had no effect on our iteration at all,
368
+ so why is it there? In general, configuration options that are not
369
+ applicable to a Rio are silently ignored, however, for directories some of
370
+ them are passed on to the Rios for each entry when iterating. Since
371
+ <tt>rename</tt> is one such option, The example could have been written:
372
+ </p>
373
+ <pre>
374
+ rio('adir').all.files('*.htm') do |file|
375
+ file.rename.ext = '.html'
376
+ end
377
+ </pre>
378
+ <p>
379
+ The rename-with-no-args method affects the behaviour of the <tt>ext=</tt>
380
+ option. In this case, setting it for the directory, rather than for each
381
+ file in the block seems to make the intent of the code more clear, but that
382
+ is a matter of personal taste. See the documentation for more information
383
+ on the rename-with-no-args method
384
+ </p>
385
+ <h2>Suggested Reading</h2>
386
+ <ul>
387
+ <li><a href="SYNOPSIS.html">RIO::Doc::SYNOPSIS</a>
388
+
389
+ </li>
390
+ <li><a href="INTRO.html">RIO::Doc::INTRO</a>
391
+
392
+ </li>
393
+ <li><a href="HOWTO.html">RIO::Doc::HOWTO</a>
394
+
395
+ </li>
396
+ <li><a href="../Rio.html">RIO::Rio</a>
397
+
398
+ </li>
399
+ </ul>
400
+
401
+ </div>
402
+
403
+
404
+ </div>
405
+
406
+
407
+
408
+
409
+ <!-- if includes -->
410
+
411
+ <div id="section">
412
+
413
+
414
+
415
+
416
+
417
+
418
+
419
+
420
+ <!-- if method_list -->
421
+ </div>
422
+
423
+
424
+ </div>
425
+
426
+
427
+ <div id="validator-badges">
428
+ <p><small>Copyright &copy; 2005,2006,2007 Christopher Kleckner. <a href="http://www.gnu.org/licenses/gpl.html">All rights reserved</a>.</small></p>
429
+ </div>
430
+
431
+ </body>
432
+ </html>