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/test/tc/route.rb ADDED
@@ -0,0 +1,51 @@
1
+ #!/usr/local/bin/ruby
2
+ if $0 == __FILE__
3
+ Dir.chdir File.dirname(__FILE__)+'/../'
4
+ $:.unshift File.expand_path('../lib/')
5
+ end
6
+
7
+ require 'rio'
8
+ require 'tc/testcase'
9
+
10
+ class TC_route < Test::RIO::TestCase
11
+ @@once = false
12
+ def self.once
13
+ @@once = true
14
+ end
15
+ def setup
16
+ super
17
+ self.class.once unless @@once
18
+ end
19
+ def test_rf_file
20
+ a = rio("file://ahost/a/")
21
+ extra = rio('b')/'c'
22
+ c = a/extra
23
+ rf = c.route_from(a)
24
+ assert_equal(extra,rf)
25
+ assert_equal(c,rf.abs)
26
+ end
27
+ def test_rf_drive
28
+ a = rio("q:/a/")
29
+ extra = rio('b')/'c'
30
+ c = a/extra
31
+ rf = c.route_from(a)
32
+ assert_equal(extra,rf)
33
+ assert_equal(c,rf.abs)
34
+ end
35
+ def test_rt_file
36
+ a = rio("file://ahost/a/")
37
+ extra = rio('b')/'c'
38
+ c = a/extra
39
+ r = a.route_to(c)
40
+ assert_equal(extra,r)
41
+ assert_equal(c,r.abs)
42
+ end
43
+ def test_rf_http
44
+ a = rio("http://ahost/a/")
45
+ extra = rio('b')/'c'
46
+ c = rio(a,extra)
47
+ rf = c.route_from(a)
48
+ assert_equal(extra,rf)
49
+ assert_equal(c,rf.abs)
50
+ end
51
+ end
@@ -0,0 +1,33 @@
1
+ #!/usr/local/bin/ruby
2
+ if $0 == __FILE__
3
+ Dir.chdir File.dirname(__FILE__)+'/../'
4
+ $:.unshift File.expand_path('../lib/')
5
+ end
6
+
7
+ require 'rio'
8
+ require 'tc/testcase'
9
+ require 'tmpdir'
10
+
11
+ class TC_selnosel < Test::RIO::TestCase
12
+ @@once = false
13
+ def self.once
14
+ @@once = true
15
+ rio('dir').delete!.mkpath.chdir {
16
+ rio('f1').touch
17
+ rio('f2').touch
18
+ rio('g1').touch
19
+ rio('g2').touch
20
+ }
21
+ end
22
+ def setup
23
+ super
24
+ self.class.once unless @@once
25
+ @dir = rio('dir')
26
+ end
27
+
28
+ def test_selnosel
29
+ ario = @dir.files('f*').skipfiles(/1/,:symlink?)
30
+ ans = ario.to_a
31
+ assert_equal(%w[dir/f2],smap(ans))
32
+ end
33
+ end
data/test/tc/skip.rb ADDED
@@ -0,0 +1,89 @@
1
+ #!/usr/local/bin/ruby
2
+ if $0 == __FILE__
3
+ Dir.chdir File.dirname(__FILE__)+'/../'
4
+ $:.unshift File.expand_path('../lib/')
5
+ end
6
+
7
+ require 'rio'
8
+ require 'tc/testcase'
9
+
10
+ class TC_skip < Test::RIO::TestCase
11
+ @@once = false
12
+ def self.once
13
+ @@once = true
14
+ rio('d0').rmtree.mkpath.chdir {
15
+ rio('f1') < (0..1).map { |i| "L#{i}:d0/f1\n" }
16
+ rio('f2') < (0..1).map { |i| "L#{i}:d0/f2\n" }
17
+ rio('g1') < (0..20).map { |i| "L#{i}:d0/g1\n" }
18
+ rio('g2') < (0..20).map { |i| "L#{i}:d0/g2\n" }
19
+ if $supports_symlink
20
+ rio('x1').symlink('n1')
21
+ rio('x2').symlink('n2')
22
+ rio('f1').symlink('l1')
23
+ rio('f2').symlink('l2')
24
+ rio('d1').symlink('c1')
25
+ rio('d2').symlink('c2')
26
+ end
27
+ }
28
+ end
29
+ def setup
30
+ super
31
+ self.class.once unless @@once
32
+ @d0 = rio('d0')
33
+ @g1 = @d0/'g1'
34
+ @g2 = @d0/'g2'
35
+ end
36
+
37
+ def test_ent_prefix_files
38
+ exprio = rio(@d0).skipfiles(/1/)
39
+ ansrio = rio(@d0).skip.files(/1/)
40
+ assert_equal(smap(exprio[]),smap(ansrio[]))
41
+ end
42
+ def test_ent_prefix_dirs
43
+ exprio = rio(@d0).skipdirs(/1/)
44
+ ansrio = rio(@d0).skip.dirs(/1/)
45
+ assert_equal(exprio[],ansrio[])
46
+ end
47
+ def test_ent_prefix_entries
48
+ exprio = rio(@d0).skipentries(/1/)
49
+ ansrio = rio(@d0).skip.entries(/1/)
50
+ assert_equal(exprio[],ansrio[])
51
+ end
52
+ def test_ent_alone
53
+ exprio = rio(@d0).skipentries(/1/)
54
+ ansrio = rio(@d0).skip(/1/)
55
+ assert_equal(exprio[],ansrio[])
56
+ end
57
+ def test_ent_alone_a
58
+ exp = rio(@d0).skipentries[/1/]
59
+ ans = rio(@d0).skip[/1/]
60
+ assert_equal(exp,ans)
61
+ end
62
+ def test_ent_postfix_a
63
+ exp = rio(@d0).files(/1/).skipfiles[:symlink?]
64
+ ans = rio(@d0).files(/1/).skip[:symlink?]
65
+
66
+ assert_equal(exp,ans)
67
+ end
68
+ def test_rec_prefix_a
69
+ exp = rio(@g2).skiplines[/1/]
70
+ ans = rio(@g2).skip.lines[/1/]
71
+
72
+ assert_equal(exp,ans)
73
+ end
74
+ def test_rec_postfix_a
75
+ exp = rio(@g1).lines[/2/]
76
+ #p exp
77
+ exp = rio(@g1).records(/2/).skip[/L2/]
78
+ #p exp
79
+ # ans = rio(@g1).lines(/2/).skip[0..5]
80
+ # p ans
81
+
82
+ # assert_equal(exp,ans)
83
+ end
84
+ def test_prefix_atend
85
+ # exprio = rio(@d0).skipentries(/1/)
86
+ ansrio = rio(@d0).skip[]
87
+ # assert_equal(exprio[],ansrio[])
88
+ end
89
+ end
@@ -0,0 +1,71 @@
1
+ #!/usr/local/bin/ruby
2
+ if $0 == __FILE__
3
+ Dir.chdir File.dirname(__FILE__)+'/../'
4
+ $:.unshift File.expand_path('../lib/')
5
+ end
6
+
7
+ require 'rio'
8
+ require 'tc/testcase'
9
+
10
+ class TC_skiplines < Test::RIO::TestCase
11
+ @@once = false
12
+ N_LINES = 25
13
+ def self.once
14
+ @@once = true
15
+ #rio('f1') < (0...N_LINES).map { |i| "L#{i}:f1" + $/ }
16
+ rio('f2') < (0...N_LINES).map { |i| "L#{i}:f2" + $/ }
17
+ #rio('g1') < (0...N_LINES).map { |i| "L#{i}:g1" + $/ }
18
+ #rio('g2') < (0...N_LINES).map { |i| "L#{i}:g2" + $/ }
19
+ end
20
+ def setup
21
+ super
22
+ self.class.once unless @@once
23
+
24
+ @lines = {}
25
+ #%w[f1 f2 g1 g2].each do |fname|
26
+ %w[f2].each do |fname|
27
+ @lines[fname] = rio(fname).to_a
28
+ end
29
+ end
30
+
31
+ def test_basic
32
+ fname = 'f2'
33
+
34
+ re = /1/
35
+ exp = @lines[fname].reject{ |l| l =~ re }
36
+
37
+ ans = []
38
+ rio(fname).skiplines(re) { |l| ans << l }
39
+ assert_equal(exp,ans,"skiplines using #each with regular expression")
40
+ ans = rio(fname).skiplines[re]
41
+ assert_equal(exp,ans,"skiplines using array operator with regular expression")
42
+
43
+ rng = (2..9)
44
+
45
+ exp = @lines[fname][0..rng.first-1] + @lines[fname][rng.last+1...N_LINES]
46
+
47
+ ans = []
48
+ rio(fname).skiplines(rng) { |l| ans << l }
49
+ assert_equal(exp,ans,"skiplines using #each with line range")
50
+ ans = rio(fname).skiplines[rng]
51
+ assert_equal(exp,ans,"skiplines using array operator with line range")
52
+
53
+
54
+ end
55
+ def test_prefix_lines
56
+ # exprio = rio(@d0).skipfiles(/1/)
57
+ # ansrio = rio(@d0).skip.files(/1/)
58
+ r = rio('f1').skip.lines(1)
59
+ # p r.cx
60
+ # p r.to_a
61
+ # assert_equal(smap(exprio[]),smap(ansrio[]))
62
+ end
63
+ def test_skip_param
64
+ # exprio = rio(@d0).skipfiles(/1/)
65
+ # ansrio = rio(@d0).skip.files(/1/)
66
+ r = rio('f1').lines(/^L/).skip(1..2)
67
+ # p r.to_a
68
+ # assert_equal(smap(exprio[]),smap(ansrio[]))
69
+ end
70
+
71
+ end
data/test/tc/split.rb ADDED
@@ -0,0 +1,28 @@
1
+ #!/usr/local/bin/ruby
2
+ if $0 == __FILE__
3
+ Dir.chdir File.dirname(__FILE__)+'/../'
4
+ $:.unshift File.expand_path('../lib/')
5
+ end
6
+
7
+ require 'rio'
8
+ require 'tc/testcase'
9
+
10
+ class TC_split < Test::RIO::TestCase
11
+ @@once = false
12
+ def self.once
13
+ @@once = true
14
+ end
15
+ def setup
16
+ super
17
+ self.class.once unless @@once
18
+ end
19
+ def test_type
20
+ rtn = rio('a/b/c').split
21
+ assert_kind_of(::Array,rtn)
22
+ for el in rtn
23
+ assert_kind_of(RIO::Rio,el)
24
+ end
25
+ rtn = rio('hw.txt')
26
+ assert_kind_of(RIO::Rio,rtn)
27
+ end
28
+ end
@@ -0,0 +1,65 @@
1
+ #!/usr/local/bin/ruby
2
+ if $0 == __FILE__
3
+ Dir.chdir File.dirname(__FILE__)+'/../'
4
+ $:.unshift File.expand_path('../lib/')
5
+ end
6
+
7
+ require 'rio'
8
+ require 'tc/testcase'
9
+
10
+ class TC_splitlines < Test::RIO::TestCase
11
+ @@once = false
12
+ def self.once
13
+ @@once = true
14
+ end
15
+ def setup
16
+ super
17
+ self.class.once unless @@once
18
+ @str = "a,b,c,d\n"
19
+ @infile = rio('infile') < @str * 3
20
+ end
21
+ def test_get
22
+ ans = rio(@infile).split(',').get
23
+ exp = @str.split(',')
24
+ assert_equal(exp,ans)
25
+ ans = rio(@infile).chomp.split(',').get
26
+ exp = @str.chop
27
+ exp = exp.split(',')
28
+ assert(exp,ans)
29
+ end
30
+ def test_each
31
+ exp = @str.chomp.split(',')
32
+ @infile.chomp.split(',') { |ary|
33
+ assert_equal(exp,ary)
34
+ }
35
+ end
36
+ def test_copy_array_in
37
+ expstr = @str.chomp.split(',').join(':')
38
+ exp = rio(?").puts(expstr).puts(expstr).puts!(expstr)
39
+ aoa = rio(@infile).split(',')[]
40
+ rio('ans').split(':') < aoa
41
+ ans = rio('ans')
42
+ assert_equal(exp.chomp[],ans.chomp[])
43
+ end
44
+ def test_copy_array_out
45
+ expary = @str.chomp.split(',')
46
+ exp = [expary,expary,expary]
47
+ aoa = []
48
+ rio(@infile).chomp.split(',') > aoa
49
+ assert_equal(exp,aoa)
50
+ end
51
+ def test_copy_left
52
+ expstr = @str.chomp.split(',').join(':')
53
+ exp = rio(?").puts(expstr).puts(expstr).puts!(expstr)
54
+ rio('ans').split(':') < rio(@infile).split(',')
55
+ ans = rio('ans')
56
+ assert_equal(exp.chomp[],ans.chomp[])
57
+ end
58
+ def test_copy_right
59
+ expstr = @str.chomp.split(',').join(':')
60
+ exp = rio(?").puts(expstr).puts(expstr).puts!(expstr)
61
+ rio(@infile).split(',') > rio('ans').split(':')
62
+ ans = rio('ans')
63
+ assert_equal(exp.chomp[],ans.chomp[])
64
+ end
65
+ end
@@ -0,0 +1,83 @@
1
+ #!/usr/local/bin/ruby
2
+ if $0 == __FILE__
3
+ Dir.chdir File.dirname(__FILE__)+'/../'
4
+ $:.unshift File.expand_path('../lib/')
5
+ end
6
+
7
+ require 'rio'
8
+ require 'tc/testcase'
9
+
10
+ class TC_splitpath < Test::RIO::TestCase
11
+ @@once = false
12
+ def self.once
13
+ @@once = true
14
+ end
15
+ def setup
16
+ super
17
+ self.class.once unless @@once
18
+ end
19
+ def test_basic
20
+ r = rio('b/c/d')
21
+ ary = r.split
22
+ assert_equal([rio('b'),rio('c'),rio('d')],ary)
23
+ assert_equal(r,ary.to_rio)
24
+ end
25
+ def test_abs_ne
26
+ r = rio('/a/b/c/d')
27
+ ary = r.split
28
+ assert_equal([rio('/'),rio('a'),rio('b'),rio('c'),rio('d')],ary)
29
+ assert_equal(r,ary.to_rio)
30
+ assert_equal(rio('d'),ary[-1])
31
+ assert_equal(r,ary[-1].abs)
32
+ assert_equal(ary[-1].abs.dirname,ary[-2].abs)
33
+ assert_equal(ary[-2].abs.dirname,ary[-3].abs)
34
+ end
35
+ def test_abs_drive
36
+ return unless $mswin32
37
+ r = rio('q:/a/b')
38
+ ary = r.split
39
+ exp = [rio('q:/'),rio('a'),rio('b')]
40
+ assert_equal(exp,ary)
41
+ assert_equal(r,ary.to_rio)
42
+ assert_equal(rio('b'),ary[-1])
43
+ assert_equal(r,ary[-1].abs)
44
+ assert_equal(ary[-1].abs.dirname.to_s,ary[-2].abs.to_s)
45
+ assert_equal(ary[-2].abs.dirname.to_s,ary[-3].abs.to_s)
46
+ end
47
+ def test_abs_host
48
+ r = rio('//ahost/a/b/c')
49
+ ary = r.split
50
+ exp = [rio('file://ahost/'),rio('a'),rio('b'),rio('c')]
51
+ #p "ary=#{ary.inspect} exp=#{exp.inspect}"
52
+ assert_equal(exp,ary)
53
+ assert_equal(r,ary.to_rio)
54
+ assert_equal(rio('c'),ary[-1])
55
+ assert_equal(r,ary[-1].abs)
56
+ #p ary[-1].abs
57
+ #p ary[-1].abs.dirname
58
+ assert_equal(ary[-1].abs.dirname.to_s,ary[-2].abs.to_s)
59
+ assert_equal(ary[-2].abs.dirname.to_s,ary[-3].abs.to_s)
60
+ end
61
+ def test_abs_url
62
+ r = rio('file://ahost/a/b/c')
63
+ ary = r.split
64
+ exp = [rio('file://ahost/'),rio('a'),rio('b'),rio('c')]
65
+ assert_equal(exp,ary)
66
+ assert_equal(r,ary.to_rio)
67
+ assert_equal(rio('c'),ary[-1])
68
+ assert_equal(r,ary[-1].abs)
69
+ assert_equal(ary[-1].abs.dirname.to_s,ary[-2].abs.to_s)
70
+ assert_equal(ary[-2].abs.dirname,ary[-3].abs)
71
+ end
72
+ def test_rel
73
+ r = rio('a/b/c')
74
+ ary = r.split
75
+ exp = [rio('a'),rio('b'),rio('c')]
76
+ assert_equal(exp,ary)
77
+ assert_equal(r,ary.to_rio)
78
+ assert_equal(rio('c'),ary[-1])
79
+ assert_equal(r.abs,ary[-1].abs)
80
+ assert_equal(ary[-1].abs.dirname,ary[-2].abs)
81
+ assert_equal(ary[-2].abs.dirname,ary[-3].abs)
82
+ end
83
+ end
data/test/tc/sub.rb ADDED
@@ -0,0 +1,46 @@
1
+ #!/usr/local/bin/ruby
2
+ if $0 == __FILE__
3
+ Dir.chdir File.dirname(__FILE__)+'/../'
4
+ $:.unshift File.expand_path('../lib/')
5
+ end
6
+
7
+ require 'rio'
8
+ require 'tc/testcase'
9
+ class TC_sub < Test::RIO::TestCase
10
+ @@once = false
11
+ def self.once
12
+ @@once = true
13
+ rio('a').rmtree.mkpath
14
+ rio('b').rmtree.mkpath
15
+ make_lines_file(3,'a/f0')
16
+ make_lines_file(2,'a/f1')
17
+ end
18
+ def setup
19
+ super
20
+ self.class.once unless @@once
21
+
22
+ @l = []; @f = []; @d = []
23
+ @d[0] = rio('a')
24
+ @d[1] = rio('b')
25
+ @f[0] = rio('a/f0')
26
+ @f[1] = rio('a/f1')
27
+ @l[0] = @f[0].readlines
28
+ @l[1] = @f[1].readlines
29
+ @d[1] < @d[0]
30
+ @d[1] < @d[0].files[]
31
+ end
32
+ def test_basic
33
+ ario = rio('apath')
34
+ p ario
35
+
36
+ ans = ario.sub(/^a/,'b')
37
+ assert_kind_of(RIO::Rio,ans)
38
+ assert_not_same(ario,ans)
39
+ assert_equal(rio('bpath'),ans)
40
+
41
+ ans = ario.sub!(/^a/,'b')
42
+ assert_kind_of(RIO::Rio,ans)
43
+ assert_same(ario,ans)
44
+ assert_equal(rio('bpath'),ans)
45
+ end
46
+ end