wishdev-rio 0.4.3.1

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 (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; }