wishdev-rio 0.4.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (296) hide show
  1. data/COPYING +341 -0
  2. data/README +81 -0
  3. data/Rakefile +281 -0
  4. data/build_doc.rb +94 -0
  5. data/doc/ANNOUNCE +159 -0
  6. data/doc/RELEASE_NOTES +308 -0
  7. data/doc/RIOIS +215 -0
  8. data/doc/generators/template/html/rio.css +428 -0
  9. data/doc/generators/template/html/rio.rb +523 -0
  10. data/doc/generators/template/html/ugly.rb +132 -0
  11. data/doc/pkg_def.rb +60 -0
  12. data/doc/rfc1738.txt +1403 -0
  13. data/doc/rfc959.txt +3933 -0
  14. data/ex/catcsv.rb +64 -0
  15. data/ex/colx.rb +8 -0
  16. data/ex/findinruby +15 -0
  17. data/ex/findruby +14 -0
  18. data/ex/passwd_report.rb +8 -0
  19. data/ex/prompt.rb +25 -0
  20. data/ex/rgb.txt.gz +0 -0
  21. data/ex/riocat +42 -0
  22. data/ex/riogunzip +31 -0
  23. data/ex/riogzip +24 -0
  24. data/ex/rioprompt.rb +10 -0
  25. data/ex/targz2zip +17 -0
  26. data/ex/tonl +10 -0
  27. data/lib/rio/abstract_method.rb +56 -0
  28. data/lib/rio/argv.rb +56 -0
  29. data/lib/rio/arycopy.rb +43 -0
  30. data/lib/rio/assert.rb +114 -0
  31. data/lib/rio/base.rb +56 -0
  32. data/lib/rio/callstr.rb +46 -0
  33. data/lib/rio/const.rb +51 -0
  34. data/lib/rio/construct.rb +50 -0
  35. data/lib/rio/constructor.rb +258 -0
  36. data/lib/rio/context/autoclose.rb +72 -0
  37. data/lib/rio/context/copying.rb +55 -0
  38. data/lib/rio/context/cxx.rb +66 -0
  39. data/lib/rio/context/dir.rb +120 -0
  40. data/lib/rio/context/gzip.rb +50 -0
  41. data/lib/rio/context/methods.rb +182 -0
  42. data/lib/rio/context/skip.rb +66 -0
  43. data/lib/rio/context/stream.rb +229 -0
  44. data/lib/rio/context.rb +117 -0
  45. data/lib/rio/cp.rb +370 -0
  46. data/lib/rio/def.rb +53 -0
  47. data/lib/rio/dir.rb +144 -0
  48. data/lib/rio/doc/EXAMPLES.rb +299 -0
  49. data/lib/rio/doc/HOWTO.rb +737 -0
  50. data/lib/rio/doc/INDEX.rb +311 -0
  51. data/lib/rio/doc/INTRO.rb +1068 -0
  52. data/lib/rio/doc/OPTIONAL.rb +130 -0
  53. data/lib/rio/doc/SYNOPSIS.rb +183 -0
  54. data/lib/rio/doc.rb +45 -0
  55. data/lib/rio/entrysel.rb +246 -0
  56. data/lib/rio/exception/copy.rb +97 -0
  57. data/lib/rio/exception/notimplemented.rb +57 -0
  58. data/lib/rio/exception/notsupported.rb +46 -0
  59. data/lib/rio/exception/open.rb +61 -0
  60. data/lib/rio/exception/state.rb +73 -0
  61. data/lib/rio/exception.rb +41 -0
  62. data/lib/rio/ext/csv.rb +351 -0
  63. data/lib/rio/ext/if.rb +45 -0
  64. data/lib/rio/ext/mp3info.rb +80 -0
  65. data/lib/rio/ext/splitlines.rb +253 -0
  66. data/lib/rio/ext/yaml/doc.rb +133 -0
  67. data/lib/rio/ext/yaml/tie.rb +149 -0
  68. data/lib/rio/ext/yaml.rb +164 -0
  69. data/lib/rio/ext/zipfile/fs.rb +116 -0
  70. data/lib/rio/ext/zipfile/rl.rb +251 -0
  71. data/lib/rio/ext/zipfile/rootdir.rb +117 -0
  72. data/lib/rio/ext/zipfile/state.rb +161 -0
  73. data/lib/rio/ext/zipfile/wrap.rb +204 -0
  74. data/lib/rio/ext/zipfile.rb +110 -0
  75. data/lib/rio/ext.rb +138 -0
  76. data/lib/rio/factory.rb +436 -0
  77. data/lib/rio/file.rb +118 -0
  78. data/lib/rio/filter/closeoneof.rb +103 -0
  79. data/lib/rio/filter/gzip.rb +70 -0
  80. data/lib/rio/filter.rb +94 -0
  81. data/lib/rio/fs/base.rb +41 -0
  82. data/lib/rio/fs/impl.rb +122 -0
  83. data/lib/rio/fs/native.rb +75 -0
  84. data/lib/rio/fs/stream.rb +61 -0
  85. data/lib/rio/fs/url.rb +63 -0
  86. data/lib/rio/ftp/conncache.rb +101 -0
  87. data/lib/rio/ftp/dir.rb +94 -0
  88. data/lib/rio/ftp/fs.rb +180 -0
  89. data/lib/rio/ftp/ftpfile.rb +20 -0
  90. data/lib/rio/grande.rb +97 -0
  91. data/lib/rio/handle.rb +100 -0
  92. data/lib/rio/if/basic.rb +64 -0
  93. data/lib/rio/if/csv.rb +76 -0
  94. data/lib/rio/if/dir.rb +157 -0
  95. data/lib/rio/if/file.rb +89 -0
  96. data/lib/rio/if/fileordir.rb +268 -0
  97. data/lib/rio/if/grande.rb +729 -0
  98. data/lib/rio/if/grande_entry.rb +379 -0
  99. data/lib/rio/if/grande_stream.rb +693 -0
  100. data/lib/rio/if/internal.rb +125 -0
  101. data/lib/rio/if/path.rb +462 -0
  102. data/lib/rio/if/rubyio.rb +681 -0
  103. data/lib/rio/if/string.rb +83 -0
  104. data/lib/rio/if/temp.rb +45 -0
  105. data/lib/rio/if/test.rb +282 -0
  106. data/lib/rio/if/yaml.rb +206 -0
  107. data/lib/rio/if.rb +64 -0
  108. data/lib/rio/ioh.rb +162 -0
  109. data/lib/rio/iomode.rb +109 -0
  110. data/lib/rio/ios/fail.rb +106 -0
  111. data/lib/rio/ios/generic.rb +119 -0
  112. data/lib/rio/ios/mode.rb +60 -0
  113. data/lib/rio/ios/null.rb +119 -0
  114. data/lib/rio/iowrap.rb +128 -0
  115. data/lib/rio/kernel.rb +54 -0
  116. data/lib/rio/local.rb +62 -0
  117. data/lib/rio/match.rb +53 -0
  118. data/lib/rio/matchrecord.rb +283 -0
  119. data/lib/rio/no_warn.rb +49 -0
  120. data/lib/rio/nullio.rb +159 -0
  121. data/lib/rio/open3.rb +68 -0
  122. data/lib/rio/ops/construct.rb +61 -0
  123. data/lib/rio/ops/create.rb +77 -0
  124. data/lib/rio/ops/dir.rb +346 -0
  125. data/lib/rio/ops/either.rb +134 -0
  126. data/lib/rio/ops/file.rb +102 -0
  127. data/lib/rio/ops/path.rb +296 -0
  128. data/lib/rio/ops/stream/input.rb +267 -0
  129. data/lib/rio/ops/stream/output.rb +100 -0
  130. data/lib/rio/ops/stream/read.rb +86 -0
  131. data/lib/rio/ops/stream/write.rb +57 -0
  132. data/lib/rio/ops/stream.rb +87 -0
  133. data/lib/rio/ops/symlink.rb +80 -0
  134. data/lib/rio/path/reset.rb +69 -0
  135. data/lib/rio/path.rb +129 -0
  136. data/lib/rio/piper/cp.rb +80 -0
  137. data/lib/rio/piper.rb +122 -0
  138. data/lib/rio/prompt.rb +66 -0
  139. data/lib/rio/rectype.rb +88 -0
  140. data/lib/rio/rl/base.rb +118 -0
  141. data/lib/rio/rl/builder.rb +117 -0
  142. data/lib/rio/rl/chmap.rb +66 -0
  143. data/lib/rio/rl/fs2url.rb +82 -0
  144. data/lib/rio/rl/ioi.rb +78 -0
  145. data/lib/rio/rl/path.rb +110 -0
  146. data/lib/rio/rl/pathmethods.rb +116 -0
  147. data/lib/rio/rl/uri.rb +200 -0
  148. data/lib/rio/rl/withpath.rb +296 -0
  149. data/lib/rio/scheme/aryio.rb +88 -0
  150. data/lib/rio/scheme/cmdio.rb +80 -0
  151. data/lib/rio/scheme/cmdpipe.rb +118 -0
  152. data/lib/rio/scheme/fd.rb +65 -0
  153. data/lib/rio/scheme/ftp.rb +141 -0
  154. data/lib/rio/scheme/http.rb +78 -0
  155. data/lib/rio/scheme/null.rb +55 -0
  156. data/lib/rio/scheme/path.rb +98 -0
  157. data/lib/rio/scheme/stderr.rb +55 -0
  158. data/lib/rio/scheme/stdio.rb +71 -0
  159. data/lib/rio/scheme/strio.rb +87 -0
  160. data/lib/rio/scheme/sysio.rb +63 -0
  161. data/lib/rio/scheme/tcp.rb +75 -0
  162. data/lib/rio/scheme/temp.rb +200 -0
  163. data/lib/rio/state/error.rb +72 -0
  164. data/lib/rio/state.rb +242 -0
  165. data/lib/rio/stream/base.rb +54 -0
  166. data/lib/rio/stream/duplex.rb +79 -0
  167. data/lib/rio/stream/open.rb +202 -0
  168. data/lib/rio/stream.rb +181 -0
  169. data/lib/rio/symantics.rb +45 -0
  170. data/lib/rio/tempdir.rb +132 -0
  171. data/lib/rio/to_rio/all.rb +39 -0
  172. data/lib/rio/to_rio/array.rb +39 -0
  173. data/lib/rio/to_rio/io.rb +40 -0
  174. data/lib/rio/to_rio/object.rb +42 -0
  175. data/lib/rio/to_rio/string.rb +40 -0
  176. data/lib/rio/to_rio.rb +67 -0
  177. data/lib/rio/uri/file.rb +198 -0
  178. data/lib/rio/util.rb +48 -0
  179. data/lib/rio/version.rb +51 -0
  180. data/lib/rio.rb +162 -0
  181. data/setup.rb +1360 -0
  182. data/test/bin/count_lines.rb +11 -0
  183. data/test/bin/find_lines.rb +13 -0
  184. data/test/bin/list_dir.rb +14 -0
  185. data/test/ftp/all.rb +9 -0
  186. data/test/ftp/anon_copy_data.rb +36 -0
  187. data/test/ftp/anon_misc.rb +124 -0
  188. data/test/ftp/anon_read.rb +105 -0
  189. data/test/ftp/anon_special.rb +68 -0
  190. data/test/ftp/anon_write.rb +70 -0
  191. data/test/ftp/ftp2ftp.rb +51 -0
  192. data/test/ftp/initftpfiles.rb +14 -0
  193. data/test/ftp/testdef.rb +55 -0
  194. data/test/gem_runtests.rb +15 -0
  195. data/test/http/all.rb +4 -0
  196. data/test/http/copy-from-http.rb +141 -0
  197. data/test/http/uri-meta.rb +72 -0
  198. data/test/lib/temp_server.rb +46 -0
  199. data/test/runalltests.rb +17 -0
  200. data/test/runftptests.rb +14 -0
  201. data/test/runhttp.rb +11 -0
  202. data/test/runhttptests.rb +14 -0
  203. data/test/runtests.rb +52 -0
  204. data/test/tc/abs.rb +355 -0
  205. data/test/tc/all.rb +80 -0
  206. data/test/tc/base.rb +31 -0
  207. data/test/tc/base2.rb +87 -0
  208. data/test/tc/cd1.rb +113 -0
  209. data/test/tc/clearsel.rb +68 -0
  210. data/test/tc/clone.rb +208 -0
  211. data/test/tc/closeoncopy.rb +102 -0
  212. data/test/tc/closeoneof.rb +194 -0
  213. data/test/tc/cmdpipe.rb +149 -0
  214. data/test/tc/copy-dir-samevar.rb +91 -0
  215. data/test/tc/copy-from.rb +129 -0
  216. data/test/tc/copy-to.rb +91 -0
  217. data/test/tc/copy.rb +74 -0
  218. data/test/tc/copyarray.rb +188 -0
  219. data/test/tc/copydest.rb +50 -0
  220. data/test/tc/copydir.rb +166 -0
  221. data/test/tc/copydirlines.rb +121 -0
  222. data/test/tc/copylines.rb +46 -0
  223. data/test/tc/copynonex.rb +118 -0
  224. data/test/tc/copysymlink.rb +39 -0
  225. data/test/tc/create.rb +114 -0
  226. data/test/tc/csv.rb +226 -0
  227. data/test/tc/csv2.rb +138 -0
  228. data/test/tc/csv_columns.rb +37 -0
  229. data/test/tc/csvutil.rb +56 -0
  230. data/test/tc/dir.rb +76 -0
  231. data/test/tc/dir_iter.rb +383 -0
  232. data/test/tc/dirautoclose.rb +67 -0
  233. data/test/tc/dirent.rb +178 -0
  234. data/test/tc/dirss.rb +81 -0
  235. data/test/tc/each.rb +111 -0
  236. data/test/tc/each_break.rb +243 -0
  237. data/test/tc/edf.rb +81 -0
  238. data/test/tc/empty.rb +51 -0
  239. data/test/tc/emptyriodir.rb +129 -0
  240. data/test/tc/entary.rb +227 -0
  241. data/test/tc/entsel.rb +110 -0
  242. data/test/tc/eq.rb +101 -0
  243. data/test/tc/expand_path.rb +69 -0
  244. data/test/tc/ext.rb +136 -0
  245. data/test/tc/fileno.rb +94 -0
  246. data/test/tc/files_select.rb +92 -0
  247. data/test/tc/get.rb +152 -0
  248. data/test/tc/getrec.rb +137 -0
  249. data/test/tc/gzip.rb +109 -0
  250. data/test/tc/io_each_byte.rb +60 -0
  251. data/test/tc/io_read.rb +80 -0
  252. data/test/tc/iometh.rb +149 -0
  253. data/test/tc/likeio.rb +116 -0
  254. data/test/tc/line_record_row.rb +51 -0
  255. data/test/tc/lineno.rb +196 -0
  256. data/test/tc/lines.rb +66 -0
  257. data/test/tc/misc.rb +432 -0
  258. data/test/tc/nolines.rb +204 -0
  259. data/test/tc/noqae.rb +879 -0
  260. data/test/tc/null.rb +45 -0
  261. data/test/tc/once.rb +6 -0
  262. data/test/tc/overload.rb +140 -0
  263. data/test/tc/pa.rb +158 -0
  264. data/test/tc/path_parts.rb +175 -0
  265. data/test/tc/pathop.rb +60 -0
  266. data/test/tc/paths.rb +145 -0
  267. data/test/tc/pid.rb +31 -0
  268. data/test/tc/piper.rb +143 -0
  269. data/test/tc/programs_util.rb +24 -0
  270. data/test/tc/qae.rb +493 -0
  271. data/test/tc/qae_riovar.rb +499 -0
  272. data/test/tc/readline.rb +30 -0
  273. data/test/tc/records.rb +68 -0
  274. data/test/tc/rename.rb +233 -0
  275. data/test/tc/rename_assign.rb +45 -0
  276. data/test/tc/riorl.rb +181 -0
  277. data/test/tc/route.rb +51 -0
  278. data/test/tc/selnosel.rb +33 -0
  279. data/test/tc/skip.rb +89 -0
  280. data/test/tc/skiplines.rb +71 -0
  281. data/test/tc/split.rb +28 -0
  282. data/test/tc/splitlines.rb +65 -0
  283. data/test/tc/splitpath.rb +83 -0
  284. data/test/tc/sub.rb +46 -0
  285. data/test/tc/symlink.rb +176 -0
  286. data/test/tc/symlink0.rb +348 -0
  287. data/test/tc/symlink1.rb +114 -0
  288. data/test/tc/synopsis.rb +75 -0
  289. data/test/tc/temp.rb +152 -0
  290. data/test/tc/tempdir.rb +60 -0
  291. data/test/tc/tempfile.rb +66 -0
  292. data/test/tc/testcase.rb +170 -0
  293. data/test/tc/tonl.rb +37 -0
  294. data/test/tc/truncate.rb +39 -0
  295. data/test/tc/yaml.rb +275 -0
  296. metadata +387 -0
data/doc/RIOIS ADDED
@@ -0,0 +1,215 @@
1
+ Rio IS
2
+
3
+ === EASY
4
+
5
+ Anything that does I/O is a Rio:
6
+
7
+ File:
8
+ rio('aflile')
9
+ Directory:
10
+ rio('adir')
11
+ Web Page:
12
+ rio('http://ahost/adir/afile')
13
+ Any IO:
14
+ rio(any_io)
15
+
16
+ ... much more
17
+
18
+ Makes common tasks easy
19
+
20
+ rio('afile') > rio('copy of afile')
21
+ rio('adir') > rio('copy of adir')
22
+ rio('gzipped_file.gz').gzip > rio('ungzipped_file')
23
+ chomped_lines = rio('afile').chomp[]
24
+
25
+ ... much more
26
+
27
+ === Powerful
28
+
29
+ rb_files= rio('adir').files['*.rb']
30
+ rb_files_including_those_in_subdirectories = rio('adir').all.files['*.rb']
31
+ first_ten_lines_chomped = rio('afile').chomp[0..9]
32
+ first_ten_lines_chomped_from_gzipped_file = rio('afile.gz').gzip.chomp[0..9]
33
+ first_ten_lines_chomped_from_gzipped_file_on_ftp_server = rio('ftp://ahost/afile.gz').gzip.chomp[0..9]
34
+
35
+ ... much more
36
+
37
+ === Consistent
38
+
39
+ To iterate, add a block:
40
+ rio('afile').lines(/regular_expression/) { |line| ... }
41
+ rio('adir').files('
42
+ To return an array, use a subscript:
43
+ rio('afile').lines[/regular_expression/]
44
+ To copy use the copy-operator:
45
+ rio('afile').lines(/regular_expression/) > rio('destination_file')
46
+
47
+
48
+
49
+
50
+
51
+ = Rio - Ruby I/O Facilitator
52
+
53
+ fa-cil-i-tate: To make easy or easier [http://www.thefreedictionary.com/facilitate]
54
+
55
+ == Overview
56
+
57
+ Rio is a facade for most of the standard ruby classes that deal with I/O;
58
+ providing a simple, intuitive, succinct interface to the functionality
59
+ provided by IO, File, Dir, Pathname, FileUtils, Tempfile, StringIO, OpenURI
60
+ and others. Rio also provides an application level interface which allows many
61
+ common I/O idioms to be expressed succinctly.
62
+
63
+ == New
64
+
65
+ Enhanced support for FTP file-systems. All of Rio's most powerful
66
+ idioms are now supported seamlessly on FTP servers.
67
+
68
+ # copy a file from or to an FTP server
69
+ rio('ftp://ahost/adir/afile') > rio('localfile') # server -> local file
70
+ rio('ftp://ahost/adir/afile') < rio('localfile') # local file -> server
71
+
72
+ # copy an entire directory structure from or to an FTP server
73
+ rio('ftp://ahost/adir') > rio('localdir') # server -> local directory
74
+ rio('ftp://ahost/adir') < rio('localdir') # local directory -> server
75
+
76
+ All of Rio's grande selection and filtering options are available for
77
+ files and directories on FTP servers.
78
+
79
+ # create a gzipped copy of a web page on an ftp server
80
+ rio('ftp://ftphost/f.html.gz').gzip < rio('http://httphost/f.html')
81
+
82
+ # dump the first 10 lines of a gzipped log file on an FTP server to stdout
83
+ rio('ftp://ftphost/logfile.txt').lines(0...10) > ?-
84
+
85
+ # iterate through the entries of a directory on an FTP server
86
+ rio('ftp://ftphost/adir').entries { |entrio| ... }
87
+
88
+ # get an array of all .rb files on an ftp server
89
+ rb_files = rio('ftp://ftphost/').all.files['*.rb']
90
+
91
+
92
+ == SYNOPSIS
93
+
94
+ For the following assume:
95
+ astring = ""
96
+ anarray = []
97
+
98
+ Copy or append a file to a string
99
+ rio('afile') > astring # copy
100
+ rio('afile') >> astring # append
101
+
102
+ Copy or append a string to a file
103
+ rio('afile') < astring # copy
104
+ rio('afile') << astring # append
105
+
106
+ Copy or append the lines of a file to an array
107
+ rio('afile') > anarray
108
+ rio('afile') >> anarray
109
+
110
+ Copy or append a file to another file
111
+ rio('afile') > rio('another_file')
112
+ rio('afile') >> rio('another_file')
113
+
114
+ Copy a file to a directory
115
+ rio('adir') << rio('afile')
116
+
117
+ Copy a directory structure to another directory
118
+ rio('adir') >> rio('another_directory')
119
+
120
+ Copy a web-page to a file
121
+ rio('http://rubydoc.org/') > rio('afile')
122
+
123
+ Ways to get the chomped lines of a file into an array
124
+ anarray = rio('afile').chomp[] # subscript operator
125
+ rio('afile').chomp > anarray # copy-to operator
126
+ anarray = rio('afile').chomp.to_a # to_a
127
+ anarray = rio('afile').chomp.readlines # IO#readlines
128
+
129
+ Copy a gzipped file un-gzipping it
130
+ rio('afile.gz').gzip > rio('afile')
131
+
132
+ Copy a plain file, gzipping it
133
+ rio('afile.gz').gzip < rio('afile')
134
+
135
+ Copy a file from a ftp server into a local file un-gzipping it
136
+ rio('ftp://host/afile.gz').gzip > rio('afile')
137
+
138
+ Iterate over the entries in a directory
139
+ rio('adir').entries { |entrio| ... }
140
+
141
+ Iterate over only the files in a directory
142
+ rio('adir').files { |entrio| ... }
143
+
144
+ Iterate over only the .rb files in a directory
145
+ rio('adir').files('*.rb') { |entrio| ... }
146
+
147
+ Iterate over .rb files but not symlinks to .rb files
148
+ rio('adir').files('*.rb').skip(:symlink?) { |entrio| ... }
149
+
150
+ Iterate over only the _dot_ files in a directory
151
+ rio('adir').files(/^\./) { |entrio| ... }
152
+
153
+ Iterate over the files in a directory and its subdirectories, skipping
154
+ '.svn' and 'CVS' directories
155
+
156
+ rio('adir').norecurse(/^\.svn$/,'CVS').files { |entrio| ... }
157
+
158
+ Create an array of the .rb entries in a directory
159
+ anarray = rio('adir')['*.rb']
160
+
161
+ Create an array of the .rb entries in a directory and its
162
+ subdirectories.
163
+ anarray = rio('adir').all['*.rb']
164
+
165
+ Iterate over the .rb files in a directory and its subdirectories
166
+ rio('adir').all.files('*.rb') { |entrio| ... }
167
+
168
+ Iterate over the non-empty, non-comment chomped lines of a file
169
+ rio('afile').chomp.skip.lines(:empty?,/^\s*#/) { |line| ... }
170
+
171
+ Copy the output of th ps command into an array, skipping the header
172
+ line and the ps command entry
173
+ rio(?-,'ps -a').skip.lines(0,/ps$/) > anarray
174
+
175
+ Prompt for input and return what was typed
176
+ ans = rio(?-).print("Type Something: ").chomp.gets
177
+
178
+ Change the extension of all .htm files in a directory and its
179
+ subdirectories to .html
180
+ rio('adir').rename.all.files('*.htm') do |htmfile|
181
+ htmfile.extname = '.html'
182
+ end
183
+
184
+ Create a symbolic link 'asymlink' in 'adir' which refers to
185
+ 'adir/afile'
186
+ rio('adir/afile').symlink('adir/asymlink')
187
+
188
+ Copy a CSV file, changing the separator to a semicolon
189
+ rio('comma.csv').csv > rio('semicolon.csv').csv(';')
190
+
191
+ Iterate through a CSVfile with each line parsed into an array
192
+ rio('afile.csv').csv { |array_of_fields| ...}
193
+
194
+ Create a tab separated file of accounts in a UNIX passwd file,
195
+ listing only the username, uid, and realname fields
196
+ rio('/etc/passwd').csv(':').columns(0,2,4) > rio('rpt').csv("\t")
197
+
198
+ Pipe multiple commands
199
+ rio('afile') | rio(?-,'acmd') | 'another_cmd' | ?-
200
+
201
+ == Contact
202
+
203
+ Project:: http://rubyforge.org/projects/rio/
204
+ Documentation:: http://rio.rubyforge.org/
205
+ Bugs:: http://rubyforge.org/tracker/?group_id=821
206
+ Email:: rio4ruby@rubyforge.org
207
+
208
+ == Copyright
209
+ Copyright (c) 2005,2006,2007 Christopher Kleckner. All rights reserved
210
+
211
+ == License
212
+ Rio is released under the GNU General Public License
213
+ (http://www.gnu.org/licenses/gpl.html)
214
+
215
+ -Christopher Kleckner
@@ -0,0 +1,428 @@
1
+ /*
2
+ *
3
+ * = CSS2 RDoc HTML template
4
+ *
5
+ * This is a template for RDoc that uses XHTML 1.0 Transitional and dictates a
6
+ * bit more of the appearance of the output to cascading stylesheets than the
7
+ * default. It was designed for clean inline code display, and uses DHTMl to
8
+ * toggle the visbility of each method's source with each click on the '[source]'
9
+ * link.
10
+ *
11
+ * == Authors
12
+ *
13
+ * * Michael Granger <ged@FaerieMUD.org>
14
+ *
15
+ * Copyright (c) 2002, 2003 The FaerieMUD Consortium. Some rights reserved.
16
+ *
17
+ * This work is licensed under the Creative Commons Attribution License. To view
18
+ * a copy of this license, visit http://creativecommons.org/licenses/by/1.0/ or
19
+ * send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California
20
+ * 94305, USA.
21
+ *
22
+ *
23
+ * Modified by Christopher Kleckner
24
+ * Copyright (c) 2005,2006,2007. Some rights reserved.
25
+ * Licensed under the same terms as the original.
26
+ */
27
+
28
+ body {
29
+ font-family: Verdana,Arial,Helvetica,sans-serif;
30
+ font-size: 90%;
31
+ margin: 0;
32
+ margin-left: 0px;
33
+ padding: 0;
34
+ background: white;
35
+ }
36
+
37
+ h1,h2,h3,h4 { margin: 0; color: #8b4726; background: transparent; }
38
+ h1 { font-size: 150%; }
39
+ h2 { font-size: 140%; }
40
+ h3 { font-size: 130%; }
41
+ h4 { font-size: 120%; }
42
+ h2,h3,h4 { margin-top: 1em; }
43
+
44
+ a {
45
+ background: transparent;
46
+ color: #8b4500;
47
+ text-decoration: none;
48
+ }
49
+ a:hover {
50
+ color: #ffa500;
51
+ background: #8b4500;
52
+ }
53
+
54
+ /* Override the base stylesheet's Anchor inside a table cell */
55
+ td > a {
56
+ background: transparent;
57
+ color: #099;
58
+ text-decoration: none;
59
+ }
60
+
61
+ small {
62
+ font-size: 0.7em;
63
+ }
64
+ /* and inside a section title */
65
+ .section-title > a {
66
+ background: transparent;
67
+ color: #8b4500;
68
+ text-decoration: none;
69
+ }
70
+
71
+ /* === Structural elements =================================== */
72
+
73
+ div#index {
74
+ margin: 0;
75
+ margin-left: 0px;
76
+ padding: 0;
77
+ font-size: 90%;
78
+ background: #ffdead;
79
+ }
80
+
81
+
82
+ div#index a {
83
+ margin-left: 0.7em;
84
+ }
85
+ div#index-entries a {
86
+ background: transparent;
87
+ margin-left: 0.7em;
88
+ color: #8b4500;
89
+ }
90
+ div#index-entries a:hover {
91
+ background: transparent;
92
+ margin-left: 0.7em;
93
+ /* color: #ffdead; */
94
+ color: #ffdead;
95
+ background: #8b4500;
96
+ /*background: #ffdead;*/
97
+ }
98
+ .name-list a {
99
+ margin-left: 0.7em;
100
+ background: #ffdead;
101
+ color: #8b4500;
102
+ }
103
+ .name-list a:hover {
104
+ margin-left: 0.7em;
105
+ color: #ffdead;
106
+ background: #8b4500;
107
+ }
108
+ .section-bar {
109
+ color: #555;
110
+ /* background: #8b4500; */
111
+
112
+ border-bottom: 1px solid #999;
113
+ margin-left: 0px;
114
+ }
115
+
116
+ div#index .section-bar {
117
+ margin-left: 0px;
118
+ padding-left: 0.7em;
119
+ background: #8b4500;
120
+ color: #ffdead;
121
+ font-size: small;
122
+ }
123
+
124
+
125
+ .section-title {
126
+ /*background: #8b4500; */
127
+ background: #ffdead;
128
+ color: #eee;
129
+ padding: 3px;
130
+ margin-top: 2em;
131
+ margin-left: 0px;
132
+ border: 1px solid #999;
133
+ }
134
+
135
+ div#classHeader, div#fileHeader {
136
+ width: auto;
137
+ color: white;
138
+ padding: 0.5em 1.5em 0.5em 1.5em;
139
+ margin: 0;
140
+ margin-left: 0px;
141
+ border-bottom: 3px solid #006;
142
+ }
143
+
144
+ div#classHeader a, div#fileHeader a {
145
+ background: inherit;
146
+ color: white;
147
+ }
148
+
149
+ div#classHeader td, div#fileHeader td {
150
+ background: inherit;
151
+ color: white;
152
+ }
153
+
154
+
155
+ div#fileHeader {
156
+ background: #8b4500;
157
+
158
+ }
159
+ #fileHeader h1,#fileHeader h2,#fileHeader h3,#fileHeader h4 {
160
+ margin: 0;
161
+ color: #ffdead;
162
+ }
163
+
164
+ div#classHeader {
165
+ background: #8b4500;
166
+ }
167
+ td.class-header-space-col {
168
+ width: 2em;
169
+ }
170
+
171
+
172
+ .class-mod {
173
+ font-size: 110%;
174
+ font-weight: bold;
175
+ font-family: monospace;
176
+ text-transform: lowercase;
177
+ text-align: bottom;
178
+
179
+ }
180
+ .class-name-in-header {
181
+ font-size: 150%;
182
+ font-weight: bold;
183
+ font-family: monospace;
184
+ }
185
+ .in-url {
186
+ font-size: 80%
187
+ }
188
+
189
+ div#bodyContent {
190
+ padding: 0 1.5em 0 1.5em;
191
+ }
192
+
193
+
194
+ div#description {
195
+ padding: 0.5em 1.5em;
196
+ /* background: #efefef; */
197
+ background: #ffdead;
198
+ border: 1px dotted #999;
199
+ }
200
+
201
+ div#description h1,h2,h3,h4,h5,h6 {
202
+ color: #8b4500;
203
+ background: transparent;
204
+ }
205
+
206
+ div#validator-badges {
207
+ text-align: center;
208
+ }
209
+ div#validator-badges img { border: 0; }
210
+
211
+ div#copyright {
212
+ color: #333;
213
+ background: #efefef;
214
+ font: 0.75em sans-serif;
215
+ margin-top: 5em;
216
+ margin-bottom: 0;
217
+ padding: 0.5em 2em;
218
+ }
219
+
220
+
221
+ /* === Classes =================================== */
222
+
223
+ table.header-table {
224
+ color: white;
225
+ font-size: small;
226
+ }
227
+
228
+ .type-note {
229
+ font-size: small;
230
+ color: #DEDEDE;
231
+ }
232
+
233
+ .xxsection-bar {
234
+ background: #eee;
235
+ color: #333;
236
+ padding: 3px;
237
+ }
238
+
239
+
240
+
241
+ .section-title {
242
+ background: #79a;
243
+ color: #eee;
244
+ padding: 3px;
245
+ margin-top: 2em;
246
+ margin-left: 0px;
247
+ border: 1px solid #999;
248
+ }
249
+
250
+ .top-aligned-row { vertical-align: top }
251
+ .bottom-aligned-row { vertical-align: bottom }
252
+
253
+ span.include-name {
254
+ font-size: small;
255
+ }
256
+ .include-name a {
257
+ font-weight: bold;
258
+ }
259
+ ul.includes-ul {
260
+ list-style-type: none;
261
+ padding-left: 1em;
262
+ }
263
+
264
+
265
+ /* --- Context section classes ----------------------- */
266
+
267
+ .context-row { }
268
+ .context-item-name { font-family: monospace; font-weight: bold; color: black; }
269
+ .context-item-value { font-size: small; color: #448; }
270
+ .context-item-desc { color: #333; padding-left: 2em; }
271
+
272
+ /* --- Method classes -------------------------- */
273
+ .method-detail {
274
+ background: #ffdead;
275
+ padding: 0;
276
+ margin-top: 0.5em;
277
+ margin-bottom: 1em;
278
+ border: 1px dotted #ccc;
279
+ }
280
+ .method-heading {
281
+ font-family: monospace;
282
+ font-weight: bold;
283
+ font-size: 130%;
284
+ color: #191970;
285
+ /* background: #b0c4de; */
286
+ background: #ffa07a;
287
+ border-bottom: 1px solid #666;
288
+ padding: 0.2em 0.5em 0 0.5em;
289
+ }
290
+ .method-heading a {
291
+ text-decoration: none;
292
+ }
293
+ .method-heading a:hover {
294
+ text-decoration: underline;
295
+ background: inherit;
296
+ color: inherit;
297
+ }
298
+ .method-signature { color: black; background: inherit; }
299
+ .method-name { font-weight: bold; }
300
+ .method-args { font-style: italic; }
301
+
302
+ .method-description { padding: 0 0.5em 0 0.5em; }
303
+ pre.method-description
304
+ {
305
+ padding: 0 0.5em 0 0.5em;
306
+ color: #ee2222;
307
+ }
308
+
309
+ #description pre
310
+ {
311
+ padding: 0.2em 0 0.2em 0;
312
+ margin: 0.3em 0 0.3em 0;
313
+ background: #fff8dc;
314
+ /* background: #ffffff; */
315
+ border-left: 3px solid #8b6508;
316
+ border-bottom: 1px solid #8b6508;
317
+ border-top: 1px solid #8b6508;
318
+ }
319
+
320
+ .method-description pre
321
+ {
322
+ padding: 0.2em 0 0.2em 0;
323
+ margin: 0.3em 0 0.3em 0;
324
+ background: #fff8dc;
325
+ /* background: #ffffff; */
326
+ border-left: 3px solid #8b6508;
327
+ border-bottom: 1px solid #8b6508;
328
+ border-top: 1px solid #8b6508;
329
+ }
330
+
331
+
332
+ #description h1 {
333
+ color: #8b4500;
334
+ margin: 0.5em 0 0.2em 0;
335
+ /*border: 1px solid red;*/
336
+ }
337
+ #description h2 {
338
+ color: #8b4500;
339
+ margin: 0.5em 0 0.2em 0;
340
+ /*border: 1px solid red;*/
341
+ }
342
+ #description h3 {
343
+ color: #8b4500;
344
+ margin: 0.5em 0 0.2em 0;
345
+ /*border: 1px solid red;*/
346
+ }
347
+ #description h4 {
348
+ color: #8b4500;
349
+ margin: 0.5em 0 0.2em 0;
350
+ /*border: 1px solid red;*/
351
+ }
352
+ #description p {
353
+ margin: 0.5em 0 0.2em 0;
354
+ /*border: 1px solid red;*/
355
+ }
356
+ #description ul {
357
+ margin: 0.2em 0 0.5em 0;
358
+ /* border: 1px solid red; */
359
+ }
360
+ #description a {
361
+ background: #ffdead;
362
+ /* background: #eef; */
363
+ color: #8b4500;
364
+ text-decoration: none;
365
+ }
366
+ #description a:hover { text-decoration: underline; }
367
+ .method-description a {
368
+ background: #ffdead;
369
+ /* background: #eef; */
370
+ color: #8b4500;
371
+ text-decoration: none;
372
+ }
373
+ .method-description a:hover { text-decoration: underline; }
374
+
375
+ .method-description table
376
+ {
377
+ border-top: 1px solid brown;
378
+ border-bottom: 1px solid brown;
379
+ margin: 0.4em 2em 0.4em 2em;
380
+ }
381
+ .method-description li
382
+ {
383
+ padding: 0 0 0 0;
384
+ margin: 0 0 0 0;
385
+
386
+ }
387
+ .method-description p {
388
+ margin: 0.5em 0 0.2em 0;
389
+ /* border: 1px solid red; */
390
+ }
391
+ .method-description tt {
392
+ margin: 0.5em 0 0.2em 0;
393
+ font-weight: bold;
394
+ color: #000044;
395
+ }
396
+ .method-description ul {
397
+ margin: 0.2em 0 0.5em 0;
398
+ /* border: 1px solid red; */
399
+ }
400
+
401
+
402
+ /* --- Source code sections -------------------- */
403
+
404
+ a.source-toggle { font-size: 90%; }
405
+ div.method-source-code {
406
+ background: #262626;
407
+ color: #ffdead;
408
+ margin: 1em;
409
+ padding: 0.5em;
410
+ border: 1px dashed #999;
411
+ overflow: hidden;
412
+ }
413
+
414
+ div.method-source-code pre { color: #ffdead; overflow: hidden; }
415
+
416
+ /* --- Ruby keyword styles --------------------- */
417
+
418
+ .standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
419
+
420
+ .ruby-constant { color: #7fffd4; background: transparent; }
421
+ .ruby-keyword { color: #00ffff; background: transparent; }
422
+ .ruby-ivar { color: #eedd82; background: transparent; }
423
+ .ruby-operator { color: #00ffee; background: transparent; }
424
+ .ruby-identifier { color: #ffdead; background: transparent; }
425
+ .ruby-node { color: #ffa07a; background: transparent; }
426
+ .ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
427
+ .ruby-regexp { color: #ffa07a; background: transparent; }
428
+ .ruby-value { color: #7fffd4; background: transparent; }