rio 0.3.2 → 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +49 -0
- data/VERSION +1 -1
- data/doc/ANNOUNCE +19 -2
- data/doc/RELEASE_NOTES +17 -0
- data/ex/colx.rb +3 -1
- data/ex/passwd_report.rb +12 -0
- data/lib/rio.rb +8 -9
- data/lib/rio/argv.rb +0 -4
- data/lib/rio/base.rb +3 -1
- data/lib/rio/doc/INTRO.rb +74 -1
- data/lib/rio/ext/csv.rb +34 -5
- data/lib/rio/factory.rb +2 -2
- data/lib/rio/if.rb +3 -0
- data/lib/rio/if/csv.rb +76 -0
- data/lib/rio/if/dir.rb +14 -6
- data/lib/rio/if/fileordir.rb +6 -0
- data/lib/rio/if/grande.rb +28 -0
- data/lib/rio/if/internal.rb +75 -2
- data/lib/rio/if/methods.rb +4 -3
- data/lib/rio/if/string.rb +46 -0
- data/lib/rio/if/temp.rb +46 -0
- data/lib/rio/matchcolumns.rb +266 -0
- data/lib/rio/rangemath.rb +44 -0
- data/lib/rio/scheme/temp.rb +4 -1
- data/lib/rio/version.rb +1 -1
- data/test/tc/all.rb +4 -1
- data/test/tc/copy-from.rb +1 -1
- data/test/tc/csv2.rb +135 -0
- data/test/tc/csv_columns.rb +37 -0
- data/test/tc/csvutil.rb +56 -0
- data/test/tc/ext.rb +1 -1
- data/test/tc/methods.rb +1 -1
- data/test/tc/tempfile.rb +17 -0
- metadata +11 -228
- data/doc/rdoc/classes/Kernel.html +0 -181
- data/doc/rdoc/classes/Kernel.src/M000182.html +0 -18
- data/doc/rdoc/classes/RIO.html +0 -543
- data/doc/rdoc/classes/RIO.src/M000001.html +0 -18
- data/doc/rdoc/classes/RIO.src/M000002.html +0 -18
- data/doc/rdoc/classes/RIO.src/M000003.html +0 -18
- data/doc/rdoc/classes/RIO/Doc.html +0 -138
- data/doc/rdoc/classes/RIO/Doc/HOWTO.html +0 -1035
- data/doc/rdoc/classes/RIO/Doc/INTRO.html +0 -1335
- data/doc/rdoc/classes/RIO/Doc/MISC.html +0 -443
- data/doc/rdoc/classes/RIO/Doc/SYNOPSIS.html +0 -355
- data/doc/rdoc/classes/RIO/Rio.html +0 -6358
- data/doc/rdoc/classes/RIO/Rio.src/M000004.html +0 -18
- data/doc/rdoc/classes/RIO/Rio.src/M000005.html +0 -20
- data/doc/rdoc/classes/RIO/Rio.src/M000006.html +0 -27
- data/doc/rdoc/classes/RIO/Rio.src/M000007.html +0 -27
- data/doc/rdoc/classes/RIO/Rio.src/M000008.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000009.html +0 -18
- data/doc/rdoc/classes/RIO/Rio.src/M000010.html +0 -20
- data/doc/rdoc/classes/RIO/Rio.src/M000011.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000012.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000013.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000014.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000015.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000016.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000017.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000018.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000019.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000020.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000021.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000022.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000023.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000024.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000025.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000026.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000027.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000028.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000029.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000030.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000031.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000032.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000033.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000034.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000035.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000036.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000037.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000038.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000039.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000040.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000041.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000042.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000043.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000044.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000045.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000046.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000047.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000048.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000049.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000050.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000051.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000052.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000053.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000054.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000055.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000056.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000057.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000058.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000059.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000060.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000061.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000062.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000063.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000064.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000065.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000066.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000067.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000068.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000069.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000070.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000071.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000072.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000073.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000074.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000075.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000076.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000077.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000078.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000079.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000080.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000081.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000082.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000083.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000084.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000085.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000086.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000087.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000088.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000089.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000090.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000091.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000092.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000093.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000094.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000095.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000096.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000097.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000098.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000099.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000100.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000101.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000102.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000103.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000104.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000105.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000106.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000107.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000108.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000109.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000110.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000111.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000112.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000113.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000114.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000115.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000116.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000117.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000118.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000119.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000120.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000121.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000122.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000123.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000124.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000125.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000126.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000127.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000128.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000129.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000130.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000131.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000132.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000133.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000134.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000135.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000136.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000137.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000138.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000139.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000140.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000141.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000142.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000143.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000144.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000145.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000146.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000147.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000148.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000149.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000150.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000151.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000152.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000153.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000154.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000155.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000156.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000157.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000158.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000159.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000160.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000161.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000162.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000163.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000164.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000165.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000166.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000167.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000168.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000169.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000170.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000171.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000172.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000173.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000174.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000175.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000176.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000177.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000178.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000179.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000180.html +0 -16
- data/doc/rdoc/classes/RIO/Rio.src/M000181.html +0 -16
- data/doc/rdoc/created.rid +0 -1
- data/doc/rdoc/files/README.html +0 -215
- data/doc/rdoc/files/lib/rio/constructor_rb.html +0 -142
- data/doc/rdoc/files/lib/rio/doc/HOWTO_rb.html +0 -135
- data/doc/rdoc/files/lib/rio/doc/INTRO_rb.html +0 -135
- data/doc/rdoc/files/lib/rio/doc/MISC_rb.html +0 -135
- data/doc/rdoc/files/lib/rio/doc/SYNOPSIS_rb.html +0 -135
- data/doc/rdoc/files/lib/rio/if/basic_rb.html +0 -135
- data/doc/rdoc/files/lib/rio/if/dir_rb.html +0 -135
- data/doc/rdoc/files/lib/rio/if/file_rb.html +0 -135
- data/doc/rdoc/files/lib/rio/if/fileordir_rb.html +0 -135
- data/doc/rdoc/files/lib/rio/if/grande_rb.html +0 -135
- data/doc/rdoc/files/lib/rio/if/internal_rb.html +0 -135
- data/doc/rdoc/files/lib/rio/if/methods_rb.html +0 -135
- data/doc/rdoc/files/lib/rio/if/path_rb.html +0 -135
- data/doc/rdoc/files/lib/rio/if/stream_rb.html +0 -135
- data/doc/rdoc/files/lib/rio/if/test_rb.html +0 -135
- data/doc/rdoc/files/lib/rio/kernel_rb.html +0 -142
- data/doc/rdoc/files/lib/rio_rb.html +0 -153
- data/doc/rdoc/fr_class_index.html +0 -34
- data/doc/rdoc/fr_file_index.html +0 -44
- data/doc/rdoc/fr_method_index.html +0 -209
- data/doc/rdoc/index.html +0 -24
- data/doc/rdoc/rdoc-style.css +0 -384
data/lib/rio/if/dir.rb
CHANGED
@@ -127,7 +127,15 @@ module RIO
|
|
127
127
|
#
|
128
128
|
def entries(*args,&block) target.entries(*args,&block); self end
|
129
129
|
|
130
|
+
# Grande Directory Entry Rejection Method
|
131
|
+
#
|
132
|
+
# No aguments rejects all entries.
|
133
|
+
#
|
134
|
+
# Behaves like Rio#entries, except that matching entries are excluded.
|
135
|
+
#
|
136
|
+
def noentries(*args,&block) target.noentries(*args,&block); self end
|
130
137
|
|
138
|
+
|
131
139
|
# Grande File Selection Method
|
132
140
|
#
|
133
141
|
# Sets the rio to return files. +args+ can be used to select which files are returned.
|
@@ -136,9 +144,9 @@ module RIO
|
|
136
144
|
# end
|
137
145
|
# No aguments selects all files.
|
138
146
|
#
|
139
|
-
#
|
147
|
+
# +args+ may be one or more of the following:
|
140
148
|
# Regexp:: selects matching files
|
141
|
-
# glob
|
149
|
+
# String:: treated as a glob, and selects matching files
|
142
150
|
# Proc:: called for each file. the file is processed unless the proc returns false
|
143
151
|
# Symbol:: sent to each file. Each file is processed unless the symbol returns false
|
144
152
|
#
|
@@ -153,7 +161,7 @@ module RIO
|
|
153
161
|
# rio('adir').files[/\.rb$/] # same thing using a regular expression
|
154
162
|
# rio('adir').files[:symlink?] # an array of symlinks to files
|
155
163
|
#
|
156
|
-
# For Rios that refer to files,
|
164
|
+
# For Rios that refer to files, <tt>files(*args)</tt> causes the file to be processed only if
|
157
165
|
# it meets the criteria specified by the args.
|
158
166
|
#
|
159
167
|
# rio('afile.z').files['*.z'] #=> [rio('afile.z')]
|
@@ -167,7 +175,7 @@ module RIO
|
|
167
175
|
# directories. For the purposes of this problem, a Ruby program is defined as a file ending with .rb or a file
|
168
176
|
# that is executable and whose shebang line contains 'ruby'
|
169
177
|
#
|
170
|
-
# rio(path).norecurse('.svn').files['*.rb',proc{ |f| f.executable? and f
|
178
|
+
# rio(path).norecurse('.svn').files['*.rb',proc{ |f| f.executable? and f.gets =~ /^#!.+ruby/ }]
|
171
179
|
#
|
172
180
|
# Explanation:
|
173
181
|
#
|
@@ -180,9 +188,9 @@ module RIO
|
|
180
188
|
# Limit to files ending with '.rb'
|
181
189
|
# rio(path).norecurse('.svn').files('*.rb')
|
182
190
|
# Also allow files that are both executable and whose first line is a shebang-ruby line
|
183
|
-
# rio(path).norecurse('.svn').files('*.rb',proc{ |f| f.executable? and f
|
191
|
+
# rio(path).norecurse('.svn').files('*.rb',proc{ |f| f.executable? and f.gets =~ /^#!.+ruby/ })
|
184
192
|
# Return an array rather than iterating thru them
|
185
|
-
# rio(path).norecurse('.svn').files['*.rb',proc{ |f| f.executable? and f
|
193
|
+
# rio(path).norecurse('.svn').files['*.rb',proc{ |f| f.executable? and f.gets =~ /^#!.+ruby/ }]
|
186
194
|
#
|
187
195
|
def files(*args,&block) target.files(*args,&block); self end
|
188
196
|
|
data/lib/rio/if/fileordir.rb
CHANGED
@@ -103,6 +103,12 @@ module RIO
|
|
103
103
|
#
|
104
104
|
def rename(*args,&block) target.rename(*args,&block); self end
|
105
105
|
|
106
|
+
|
107
|
+
# Behaves like Rio#rename, but also changes the calling Rio to
|
108
|
+
# refer to the renamed path
|
109
|
+
def rename!(*args,&block) target.rename!(*args,&block); self end
|
110
|
+
|
111
|
+
|
106
112
|
# For directories proxies Dir#read, otherwise proxies IO#read
|
107
113
|
#
|
108
114
|
# Proxy for IO#read
|
data/lib/rio/if/grande.rb
CHANGED
@@ -207,6 +207,31 @@ module RIO
|
|
207
207
|
# So the existance of a block after many methods is taken as an implied
|
208
208
|
# Rio#each
|
209
209
|
#
|
210
|
+
# For Rios that refer to files, the item passed to the block is a String containing
|
211
|
+
# the line or block as selected by Rio#lines, or Rio#bytes. +lines+ is the default.
|
212
|
+
# rio('afile').lines.each { |line| ...}
|
213
|
+
#
|
214
|
+
# The block passed to +each+ will also accept an optional second parameter which will contain
|
215
|
+
# the result of the matching function. What this variable contains depends on the argument
|
216
|
+
# to +lines+ that resulted in the match as follows:
|
217
|
+
#
|
218
|
+
# Regexp:: The MatchData that resulted from the match.
|
219
|
+
# Range:: The record number of the matching record.
|
220
|
+
# Fixnum:: The record number of the matching record.
|
221
|
+
# Proc:: The value returned by the proc.
|
222
|
+
# Symbol:: The value resulting from sending the symbol to the String.
|
223
|
+
#
|
224
|
+
# If no selection arguments were used, this variable will simply contain +true+.
|
225
|
+
#
|
226
|
+
# rio(??).puts(%w[0:zero 1:one]).rewind.lines(/(\d+):([a-z]+)/) do |line,match|
|
227
|
+
# puts("#{match[1]} is spelled '#{match[2]}'")
|
228
|
+
# end
|
229
|
+
#
|
230
|
+
# Produces:
|
231
|
+
# 0 is spelled 'zero'
|
232
|
+
# 1 is spelled 'one'
|
233
|
+
#
|
234
|
+
#
|
210
235
|
# For Rios that refer to directories, the item passed to the block is a Rio refering to
|
211
236
|
# the directory entry.
|
212
237
|
#
|
@@ -374,6 +399,9 @@ module RIO
|
|
374
399
|
#
|
375
400
|
def >(destination) target > destination; self end
|
376
401
|
|
402
|
+
# Alias for Rio#> (copy-to grande operator)
|
403
|
+
def copy(destination) target.copy(destination); self end
|
404
|
+
|
377
405
|
# Grande Append-To Operator
|
378
406
|
#
|
379
407
|
# The append-to grande-operator is the same as Rio#> (copy-to) except that it opens the destination
|
data/lib/rio/if/internal.rb
CHANGED
@@ -43,11 +43,84 @@ module RIO
|
|
43
43
|
|
44
44
|
# This is an internal function and should not normally be needed in client code.
|
45
45
|
# It closes a Rio and returns it to its 'reset' state.
|
46
|
-
def reset()
|
46
|
+
def reset() # :nodoc:
|
47
|
+
target.reset()
|
48
|
+
end
|
47
49
|
|
48
50
|
# This is an internal function and is not needed in client code.
|
49
51
|
# It returns the internal 'Rio Resource Locator' object.
|
50
|
-
def rl()
|
52
|
+
def rl() # :nodoc:
|
53
|
+
target.rl()
|
54
|
+
end
|
55
|
+
|
56
|
+
# This is an internal function and is not needed in client code.
|
57
|
+
# It returns the internal 'Rio Resource Locator' object.
|
58
|
+
def to_rl() # :nodoc:
|
59
|
+
target.to_rl()
|
60
|
+
end
|
61
|
+
|
62
|
+
# This is an internal function and is not needed in client code.
|
63
|
+
# It returns the internal 'Rio Context' object.
|
64
|
+
def cx() # :nodoc:
|
65
|
+
target.cx()
|
66
|
+
end
|
67
|
+
|
68
|
+
# This is an internal function and is not needed in client code.
|
69
|
+
def cx=(arg) # :nodoc:
|
70
|
+
target.cx = arg
|
71
|
+
end
|
72
|
+
|
73
|
+
# This is an internal function and is not needed in client code.
|
74
|
+
def copyclose() # :nodoc:
|
75
|
+
target.copyclose
|
76
|
+
end
|
77
|
+
|
78
|
+
# This is an internal function and is not needed in client code.
|
79
|
+
def nostreamenum() # :nodoc:
|
80
|
+
target.nostreamenum
|
81
|
+
end
|
82
|
+
|
83
|
+
# This is an internal function and is not needed in client code.
|
84
|
+
def cpclose(*args,&block) # :nodoc:
|
85
|
+
target.cpclose(*args,&block)
|
86
|
+
end
|
87
|
+
|
88
|
+
# This is an internal function and is not needed in client code.
|
89
|
+
def each_record(*args,&block) # :nodoc:
|
90
|
+
target.each_record(*args,&block)
|
91
|
+
end
|
92
|
+
|
93
|
+
# This is an internal function and is not needed in client code.
|
94
|
+
def each_row(*args,&block) # :nodoc:
|
95
|
+
target.each_row(*args,&block)
|
96
|
+
end
|
97
|
+
|
98
|
+
# This is an internal function and is not needed in client code.
|
99
|
+
def outputmode?() # :nodoc:
|
100
|
+
target.outputmode?
|
101
|
+
end
|
102
|
+
|
103
|
+
# This is an internal function and is not needed in client code.
|
104
|
+
def inputmode?() # :nodoc:
|
105
|
+
target.inputmode?
|
106
|
+
end
|
107
|
+
|
108
|
+
# This is an internal function and is not needed in client code.
|
109
|
+
def iostate(sym) # :nodoc:
|
110
|
+
target.iostate(sym)
|
111
|
+
end
|
112
|
+
|
113
|
+
# This is an internal function and is not needed in client code.
|
114
|
+
def getwd(*args) # :nodoc:
|
115
|
+
target.getwd(*args)
|
116
|
+
end
|
117
|
+
|
118
|
+
# This is an internal function and is not needed in client code.
|
119
|
+
def stream_iter?() # :nodoc:
|
120
|
+
target.stream_iter?
|
121
|
+
end
|
122
|
+
|
123
|
+
|
51
124
|
|
52
125
|
end
|
53
126
|
end
|
data/lib/rio/if/methods.rb
CHANGED
@@ -465,10 +465,11 @@ module RIO
|
|
465
465
|
#def autorewind?() target.autorewind?() end
|
466
466
|
|
467
467
|
|
468
|
-
# Rio
|
468
|
+
# Sets a Rio to 'autorewind'.
|
469
|
+
# autorewind is not a well thought out concept and probably will be
|
470
|
+
# removed. Do not use it.
|
469
471
|
#
|
470
|
-
|
471
|
-
#def autorewind(arg=true,&block) target.autorewind(arg,&block); self end
|
472
|
+
def autorewind(*args,&block) target.autorewind(*args,&block); self end
|
472
473
|
|
473
474
|
|
474
475
|
# Rio#noautorewind
|
@@ -0,0 +1,46 @@
|
|
1
|
+
#--
|
2
|
+
# ===============================================================================
|
3
|
+
# Copyright (c) 2005, Christopher Kleckner
|
4
|
+
# All rights reserved
|
5
|
+
#
|
6
|
+
# This file is part of the Rio library for ruby.
|
7
|
+
#
|
8
|
+
# Rio is free software; you can redistribute it and/or modify
|
9
|
+
# it under the terms of the GNU General Public License as published by
|
10
|
+
# the Free Software Foundation; either version 2 of the License, or
|
11
|
+
# (at your option) any later version.
|
12
|
+
#
|
13
|
+
# Rio is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
+
# GNU General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU General Public License
|
19
|
+
# along with Rio; if not, write to the Free Software
|
20
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
21
|
+
# ===============================================================================
|
22
|
+
#++
|
23
|
+
#
|
24
|
+
# To create the documentation for Rio run the command
|
25
|
+
# rake rdoc
|
26
|
+
# from the distribution directory. Then point your browser at the 'doc/rdoc' directory.
|
27
|
+
#
|
28
|
+
# Suggested Reading
|
29
|
+
# * RIO::Doc::SYNOPSIS
|
30
|
+
# * RIO::Doc::INTRO
|
31
|
+
# * RIO::Doc::HOWTO
|
32
|
+
# * RIO::Rio
|
33
|
+
#
|
34
|
+
# <b>Rio is pre-alpha software.
|
35
|
+
# The documented interface and behavior is subject to change without notice.</b>
|
36
|
+
|
37
|
+
|
38
|
+
module RIO
|
39
|
+
class Rio
|
40
|
+
# Returns the String associated with a Rio which references a StringIO object.
|
41
|
+
# For any other type of Rio, is undefined.
|
42
|
+
def string() target.string end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
data/lib/rio/if/temp.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
#--
|
2
|
+
# ===============================================================================
|
3
|
+
# Copyright (c) 2005, Christopher Kleckner
|
4
|
+
# All rights reserved
|
5
|
+
#
|
6
|
+
# This file is part of the Rio library for ruby.
|
7
|
+
#
|
8
|
+
# Rio is free software; you can redistribute it and/or modify
|
9
|
+
# it under the terms of the GNU General Public License as published by
|
10
|
+
# the Free Software Foundation; either version 2 of the License, or
|
11
|
+
# (at your option) any later version.
|
12
|
+
#
|
13
|
+
# Rio is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
+
# GNU General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU General Public License
|
19
|
+
# along with Rio; if not, write to the Free Software
|
20
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
21
|
+
# ===============================================================================
|
22
|
+
#++
|
23
|
+
#
|
24
|
+
# To create the documentation for Rio run the command
|
25
|
+
# rake rdoc
|
26
|
+
# from the distribution directory. Then point your browser at the 'doc/rdoc' directory.
|
27
|
+
#
|
28
|
+
# Suggested Reading
|
29
|
+
# * RIO::Doc::SYNOPSIS
|
30
|
+
# * RIO::Doc::INTRO
|
31
|
+
# * RIO::Doc::HOWTO
|
32
|
+
# * RIO::Rio
|
33
|
+
#
|
34
|
+
# <b>Rio is pre-alpha software.
|
35
|
+
# The documented interface and behavior is subject to change without notice.</b>
|
36
|
+
|
37
|
+
|
38
|
+
module RIO
|
39
|
+
class Rio
|
40
|
+
def file() target.file; self end
|
41
|
+
def dir() target.dir; self end
|
42
|
+
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
@@ -0,0 +1,266 @@
|
|
1
|
+
#--
|
2
|
+
# ===============================================================================
|
3
|
+
# Copyright (c) 2005, Christopher Kleckner
|
4
|
+
# All rights reserved
|
5
|
+
#
|
6
|
+
# This file is part of the Rio library for ruby.
|
7
|
+
#
|
8
|
+
# Rio is free software; you can redistribute it and/or modify
|
9
|
+
# it under the terms of the GNU General Public License as published by
|
10
|
+
# the Free Software Foundation; either version 2 of the License, or
|
11
|
+
# (at your option) any later version.
|
12
|
+
#
|
13
|
+
# Rio is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
+
# GNU General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU General Public License
|
19
|
+
# along with Rio; if not, write to the Free Software
|
20
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
21
|
+
# ===============================================================================
|
22
|
+
#++
|
23
|
+
#
|
24
|
+
# To create the documentation for Rio run the command
|
25
|
+
# rake rdoc
|
26
|
+
# from the distribution directory. Then point your browser at the 'doc/rdoc' directory.
|
27
|
+
#
|
28
|
+
# Suggested Reading
|
29
|
+
# * RIO::Doc::SYNOPSIS
|
30
|
+
# * RIO::Doc::INTRO
|
31
|
+
# * RIO::Doc::HOWTO
|
32
|
+
# * RIO::Rio
|
33
|
+
#
|
34
|
+
# <b>Rio is pre-alpha software.
|
35
|
+
# The documented interface and behavior is subject to change without notice.</b>
|
36
|
+
|
37
|
+
|
38
|
+
module RIO
|
39
|
+
module Match #:nodoc: all
|
40
|
+
module Column
|
41
|
+
|
42
|
+
class Base
|
43
|
+
def initialize(arg)
|
44
|
+
@select_arg = arg
|
45
|
+
end
|
46
|
+
def inspect
|
47
|
+
@select_arg.inspect
|
48
|
+
end
|
49
|
+
def val()
|
50
|
+
@select_arg
|
51
|
+
end
|
52
|
+
def match_all?() false end
|
53
|
+
def match_none?() false end
|
54
|
+
end
|
55
|
+
class All < Base
|
56
|
+
def match?(colno) true end
|
57
|
+
def match_all?() true end
|
58
|
+
def =~(colno) true end
|
59
|
+
end
|
60
|
+
class None < Base
|
61
|
+
def match?(colno) false end
|
62
|
+
def match_none?() true end
|
63
|
+
def =~(colno) false end
|
64
|
+
end
|
65
|
+
|
66
|
+
class Range < Base
|
67
|
+
def match?(colno)
|
68
|
+
#p "match?(#{val},#{recno}) select_arg=#{@select_arg}"
|
69
|
+
@select_arg === colno
|
70
|
+
end
|
71
|
+
def =~(colno)
|
72
|
+
#p "=~(#{record},#{record.recno}) select_arg=#{@select_arg}"
|
73
|
+
@select_arg === colno
|
74
|
+
end
|
75
|
+
end
|
76
|
+
class Fixnum < Base
|
77
|
+
def match?(val,recno)
|
78
|
+
#p "match?(#{val},#{recno}) select_arg=#{@select_arg}"
|
79
|
+
@select_arg === recno
|
80
|
+
end
|
81
|
+
def =~(record)
|
82
|
+
#p "=~(#{record},#{record.recno}) select_arg=#{@select_arg}"
|
83
|
+
@select_arg === record.recno
|
84
|
+
end
|
85
|
+
end
|
86
|
+
class Proc < Base
|
87
|
+
def initialize(arg,therio)
|
88
|
+
super(arg)
|
89
|
+
@therio = therio
|
90
|
+
end
|
91
|
+
def match?(val,recno)
|
92
|
+
#p "match?(#{val},#{recno}) select_arg=#{@select_arg}"
|
93
|
+
@select_arg.call(val,recno,@therio)
|
94
|
+
end
|
95
|
+
def =~(record)
|
96
|
+
@select_arg.call(record,record.recno,@therio)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
class Symbol < Base
|
100
|
+
def match?(val,recno)
|
101
|
+
#p "match?(#{val},#{recno}) select_arg=#{@select_arg}"
|
102
|
+
val.__send__(@select_arg)
|
103
|
+
end
|
104
|
+
def =~(record)
|
105
|
+
record.__send__(@select_arg)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
module Match
|
112
|
+
module Record
|
113
|
+
# for a sellist
|
114
|
+
# nil indicates no call was made, so nothing selected
|
115
|
+
# empty indicates a call was made, so all selected
|
116
|
+
# contents should be checked for matches
|
117
|
+
# if contents are removed the list should become nil, not empty
|
118
|
+
class SelList
|
119
|
+
def initialize(therio,args)
|
120
|
+
if args.nil?
|
121
|
+
@list = nil
|
122
|
+
else
|
123
|
+
@list = []
|
124
|
+
args.each do |arg|
|
125
|
+
@list << create_sel(therio,arg)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
#p "SelList(#{args.inspect},#{@list.inspect})"
|
129
|
+
end
|
130
|
+
def inspect
|
131
|
+
@list.inspect
|
132
|
+
end
|
133
|
+
def size() @list.size unless @list.nil? end
|
134
|
+
def only_one_fixnum?()
|
135
|
+
@list && @list.size == 1 && @list[0].kind_of?(Match::Record::Fixnum)
|
136
|
+
end
|
137
|
+
def delete_at(index)
|
138
|
+
@list.delete_at(index)
|
139
|
+
@list = nil if @list.empty?
|
140
|
+
end
|
141
|
+
def self.create(therio,args)
|
142
|
+
new(therio,args) unless args.nil?
|
143
|
+
end
|
144
|
+
def ranges()
|
145
|
+
@list.nil? ? [] : @list.select { |sel| sel.kind_of?(Record::Range) }
|
146
|
+
end
|
147
|
+
def remove_passed_ranges(n)
|
148
|
+
return nil if @list.nil?
|
149
|
+
return self if @list.empty?
|
150
|
+
newlist = []
|
151
|
+
@list.each do |sel|
|
152
|
+
newlist << sel unless sel.kind_of?(Match::Record::Range) and sel.val.max < n
|
153
|
+
end
|
154
|
+
@list = (newlist.empty? ? nil : newlist) if newlist.length != @list.length
|
155
|
+
@list.nil? ? nil : self
|
156
|
+
end
|
157
|
+
def create_sel(therio,arg)
|
158
|
+
case arg
|
159
|
+
when ::Regexp
|
160
|
+
Match::Record::RegExp.new(arg)
|
161
|
+
when ::Range
|
162
|
+
Match::Record::Range.new(arg)
|
163
|
+
when ::Proc
|
164
|
+
Match::Record::Proc.new(arg,therio)
|
165
|
+
when ::Symbol
|
166
|
+
Match::Record::Symbol.new(arg)
|
167
|
+
when ::Fixnum
|
168
|
+
Match::Record::Fixnum.new(arg)
|
169
|
+
else
|
170
|
+
raise ArgumentError,"Argument must be a Regexp,Range,Fixnum,Proc, or Symbol"
|
171
|
+
end
|
172
|
+
end
|
173
|
+
def match?(val,recno)
|
174
|
+
# !@list.nil? && (@list.empty? || @list.detect { |sel| sel.match?(val,recno) } || false) && true
|
175
|
+
return false if @list.nil?
|
176
|
+
return true if @list.empty?
|
177
|
+
as = nil
|
178
|
+
al = @list.detect { |sel| as = sel.match?(val,recno)
|
179
|
+
#p "1: #{$1} as[match?]: #{as.inspect}"
|
180
|
+
as
|
181
|
+
}
|
182
|
+
#p "[SelList.match?] as:#{as.inspect} al:#{al.inspect}"
|
183
|
+
return as if al
|
184
|
+
return false
|
185
|
+
end
|
186
|
+
def =~(el)
|
187
|
+
!@list.nil? && (@list.empty? || @list.detect { |sel| sel =~ el } || false) && true
|
188
|
+
end
|
189
|
+
def always?() !@list.nil? && @list.empty? end
|
190
|
+
def never?() @list.nil? end
|
191
|
+
end
|
192
|
+
|
193
|
+
|
194
|
+
class SelRej
|
195
|
+
def initialize(therio,sel_args,rej_args)
|
196
|
+
@sel = SelList.create(therio,sel_args)
|
197
|
+
@rej = SelList.create(therio,rej_args)
|
198
|
+
@always = init_always()
|
199
|
+
end
|
200
|
+
def only_one_fixnum?()
|
201
|
+
@rej.nil? && @sel && @sel.only_one_fixnum?
|
202
|
+
end
|
203
|
+
def init_always(reset=false)
|
204
|
+
if @sel.nil? and @rej.nil?
|
205
|
+
!reset
|
206
|
+
elsif @rej.nil? and @sel.always?
|
207
|
+
true
|
208
|
+
elsif @sel.nil?
|
209
|
+
false
|
210
|
+
elsif !@rej.nil? and @rej.always?
|
211
|
+
false
|
212
|
+
else
|
213
|
+
nil
|
214
|
+
end
|
215
|
+
end
|
216
|
+
def remove_passed_ranges(n)
|
217
|
+
@sel = @sel.remove_passed_ranges(n) unless @sel.nil?
|
218
|
+
@rej = @rej.remove_passed_ranges(n) unless @rej.nil?
|
219
|
+
@always = init_always(true)
|
220
|
+
self
|
221
|
+
end
|
222
|
+
def rangetops()
|
223
|
+
rtops = ranges.map { |r| r.val.max }.sort.uniq
|
224
|
+
rtops.empty? ? nil : rtops
|
225
|
+
end
|
226
|
+
def ranges()
|
227
|
+
(@sel.nil? ? [] : @sel.ranges) + (@rej.nil? ? [] : @rej.ranges)
|
228
|
+
end
|
229
|
+
def class_tail
|
230
|
+
self.class.to_s.sub(/^.+::/,'')
|
231
|
+
end
|
232
|
+
def inspect
|
233
|
+
sprintf("#<%s:0x%08x @always=%s @sel=%s @rej=%s>",self.class_tail,self.object_id,@always.inspect,
|
234
|
+
@sel.inspect,@rej.inspect)
|
235
|
+
end
|
236
|
+
def always?()
|
237
|
+
@always == true
|
238
|
+
end
|
239
|
+
def never?()
|
240
|
+
@always == false
|
241
|
+
end
|
242
|
+
def match?(val,recno)
|
243
|
+
#p "match?(#{val},#{recno}) #{self.inspect}"
|
244
|
+
return @always unless @always.nil?
|
245
|
+
as = nil
|
246
|
+
ok = ((!@sel.nil? && (as = @sel.match?(val,recno))) && !(!@rej.nil? && @rej.match?(val,recno)))
|
247
|
+
return (ok ? as : ok)
|
248
|
+
end
|
249
|
+
def =~(el)
|
250
|
+
return @always unless @always.nil?
|
251
|
+
(!@sel.nil? && (@sel =~ el)) && !(!@rej.nil? && (@rej =~ el))
|
252
|
+
|
253
|
+
#yes = (!@sel.nil? && (@sel =~ el))
|
254
|
+
#no = (!@rej.nil? && (@rej =~ el))
|
255
|
+
#p "yes=#{yes} no=#{no} el=#{el}"
|
256
|
+
#return yes && !no
|
257
|
+
#(@sel =~ el) && !(@rej =~ el)
|
258
|
+
end
|
259
|
+
end
|
260
|
+
end
|
261
|
+
end
|
262
|
+
end
|
263
|
+
|
264
|
+
|
265
|
+
|
266
|
+
|