rio 0.4.2 → 0.5.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 (641) hide show
  1. data/.gitignore +21 -0
  2. data/Gemfile +4 -0
  3. data/{COPYING → LICENSE} +3 -0
  4. data/README +20 -27
  5. data/Rakefile +48 -277
  6. data/lib/rio.rb +63 -24
  7. data/lib/rio/.document +5 -0
  8. data/lib/rio/abstract_method.rb +3 -14
  9. data/lib/rio/alturi.rb +507 -0
  10. data/lib/rio/alturi/algorithm.rb +313 -0
  11. data/lib/rio/alturi/cached_fields.rb +68 -0
  12. data/lib/rio/alturi/escape.rb +82 -0
  13. data/lib/rio/alturi/parse.rb +75 -0
  14. data/lib/rio/alturi/path_parts.rb +81 -0
  15. data/lib/rio/alturi/regex.rb +76 -0
  16. data/lib/rio/alturi/uri_parts.rb +512 -0
  17. data/lib/rio/argv.rb +3 -14
  18. data/lib/rio/arraynge.rb +146 -0
  19. data/lib/rio/arycopy.rb +3 -14
  20. data/lib/rio/assert.rb +87 -15
  21. data/lib/rio/base.rb +7 -30
  22. data/lib/rio/callstr.rb +3 -14
  23. data/lib/rio/const.rb +3 -14
  24. data/lib/rio/construct.rb +4 -15
  25. data/lib/rio/constructor.rb +4 -19
  26. data/lib/rio/context.rb +17 -14
  27. data/lib/rio/context/autoclose.rb +3 -14
  28. data/lib/rio/context/binmode.rb +63 -0
  29. data/lib/rio/context/copying.rb +3 -14
  30. data/lib/rio/context/cxx.rb +3 -14
  31. data/lib/rio/context/dir.rb +5 -15
  32. data/lib/rio/context/encoding.rb +84 -0
  33. data/lib/rio/context/gzip.rb +3 -14
  34. data/lib/rio/context/methods.rb +8 -17
  35. data/lib/rio/context/skip.rb +3 -14
  36. data/lib/rio/context/stream.rb +3 -14
  37. data/lib/rio/cp.rb +5 -20
  38. data/lib/rio/cxuri.rb +67 -0
  39. data/lib/rio/dbg/trace_states.rb +18 -0
  40. data/lib/rio/def.rb +3 -14
  41. data/lib/rio/dir.rb +9 -18
  42. data/lib/rio/doc.rb +3 -14
  43. data/lib/rio/doc/EXAMPLES.rb +256 -269
  44. data/lib/rio/doc/HOWTO.rb +685 -707
  45. data/lib/rio/doc/INDEX.rb +261 -282
  46. data/lib/rio/doc/INTRO.rb +1029 -1040
  47. data/lib/rio/doc/OPTIONAL.rb +77 -103
  48. data/lib/rio/doc/SYNOPSIS.rb +122 -143
  49. data/lib/rio/entrysel.rb +3 -14
  50. data/lib/rio/exception.rb +4 -14
  51. data/lib/rio/exception/copy.rb +3 -14
  52. data/lib/rio/exception/notimplemented.rb +3 -14
  53. data/lib/rio/exception/notsupported.rb +3 -14
  54. data/lib/rio/exception/open.rb +3 -14
  55. data/lib/rio/exception/state.rb +3 -14
  56. data/lib/rio/ext.rb +14 -17
  57. data/lib/rio/ext/csv.rb +25 -304
  58. data/lib/rio/ext/csv/csv-legacy.rb +344 -0
  59. data/lib/rio/ext/csv/csv.rb +359 -0
  60. data/lib/rio/ext/csv/filter.rb +209 -0
  61. data/lib/rio/ext/if.rb +3 -14
  62. data/lib/rio/ext/mp3info.rb +3 -14
  63. data/lib/rio/ext/splitlines.rb +3 -14
  64. data/lib/rio/ext/yaml.rb +3 -14
  65. data/lib/rio/ext/yaml/doc.rb +3 -14
  66. data/lib/rio/ext/yaml/tie.rb +3 -14
  67. data/lib/rio/ext/zipfile.rb +3 -14
  68. data/lib/rio/ext/zipfile/fs.rb +3 -14
  69. data/lib/rio/ext/zipfile/rl.rb +3 -14
  70. data/lib/rio/ext/zipfile/rootdir.rb +3 -14
  71. data/lib/rio/ext/zipfile/state.rb +3 -14
  72. data/lib/rio/ext/zipfile/wrap.rb +3 -14
  73. data/lib/rio/factory.rb +96 -213
  74. data/lib/rio/fibpipe.rb +373 -0
  75. data/lib/rio/file.rb +8 -17
  76. data/lib/rio/filter.rb +4 -15
  77. data/lib/rio/filter/closeoneof.rb +3 -14
  78. data/lib/rio/filter/gzip.rb +18 -27
  79. data/lib/rio/fs.rb +172 -0
  80. data/lib/rio/fs/base.rb +3 -14
  81. data/lib/rio/fs/impl.rb +3 -14
  82. data/lib/rio/fs/native.rb +3 -14
  83. data/lib/rio/fs/stream.rb +3 -14
  84. data/lib/rio/fs/url.rb +3 -14
  85. data/lib/rio/ftp/conncache.rb +16 -18
  86. data/lib/rio/ftp/dir.rb +4 -15
  87. data/lib/rio/ftp/fs.rb +62 -42
  88. data/lib/rio/fwd.rb +15 -0
  89. data/lib/rio/grande.rb +4 -15
  90. data/lib/rio/handle.rb +3 -45
  91. data/lib/rio/if.rb +15 -20
  92. data/lib/rio/if/basic.rb +3 -36
  93. data/lib/rio/if/csv.rb +7 -20
  94. data/lib/rio/if/dir.rb +9 -21
  95. data/lib/rio/if/file.rb +6 -19
  96. data/lib/rio/if/fileordir.rb +18 -29
  97. data/lib/rio/if/grande.rb +109 -120
  98. data/lib/rio/if/grande_entry.rb +5 -18
  99. data/lib/rio/if/grande_stream.rb +29 -42
  100. data/lib/rio/if/internal.rb +15 -16
  101. data/lib/rio/if/path.rb +35 -47
  102. data/lib/rio/if/rubyio.rb +35 -47
  103. data/lib/rio/if/string.rb +3 -16
  104. data/lib/rio/if/temp.rb +3 -16
  105. data/lib/rio/if/test.rb +8 -20
  106. data/lib/rio/if/yaml.rb +16 -29
  107. data/lib/rio/ioh.rb +35 -34
  108. data/lib/rio/iomode.rb +3 -14
  109. data/lib/rio/ios/fail.rb +3 -14
  110. data/lib/rio/ios/generic.rb +3 -14
  111. data/lib/rio/ios/mode.rb +3 -14
  112. data/lib/rio/ios/null.rb +3 -14
  113. data/lib/rio/iowrap.rb +3 -14
  114. data/lib/rio/kernel.rb +4 -17
  115. data/lib/rio/local.rb +3 -14
  116. data/lib/rio/match.rb +3 -14
  117. data/lib/rio/matchrecord.rb +8 -17
  118. data/lib/rio/no_warn.rb +3 -14
  119. data/lib/rio/nullio.rb +3 -14
  120. data/lib/rio/open3.rb +3 -16
  121. data/lib/rio/ops.rb +33 -0
  122. data/lib/rio/ops/construct.rb +3 -14
  123. data/lib/rio/ops/create.rb +11 -25
  124. data/lib/rio/ops/dir.rb +17 -24
  125. data/lib/rio/ops/either.rb +28 -31
  126. data/lib/rio/ops/file.rb +29 -26
  127. data/lib/rio/ops/path.rb +65 -34
  128. data/lib/rio/ops/stream.rb +13 -15
  129. data/lib/rio/ops/stream/input.rb +59 -28
  130. data/lib/rio/ops/stream/output.rb +4 -14
  131. data/lib/rio/ops/stream/read.rb +4 -15
  132. data/lib/rio/ops/stream/write.rb +3 -14
  133. data/lib/rio/ops/symlink.rb +6 -15
  134. data/lib/rio/path.rb +10 -17
  135. data/lib/rio/path/reset.rb +3 -14
  136. data/lib/rio/piper.rb +3 -27
  137. data/lib/rio/piper/cp.rb +50 -27
  138. data/lib/rio/prompt.rb +3 -14
  139. data/lib/rio/rectype.rb +8 -16
  140. data/lib/rio/rl/base.rb +12 -25
  141. data/lib/rio/rl/builder.rb +25 -24
  142. data/lib/rio/rl/chmap.rb +3 -16
  143. data/lib/rio/rl/fs2url.rb +5 -16
  144. data/lib/rio/rl/ioi.rb +3 -14
  145. data/lib/rio/rl/path.rb +14 -25
  146. data/lib/rio/rl/pathmethods.rb +3 -14
  147. data/lib/rio/rl/uri.rb +18 -35
  148. data/lib/rio/rl/withpath.rb +36 -53
  149. data/lib/rio/rrl/base.rb +75 -0
  150. data/lib/rio/rrl/builder.rb +122 -0
  151. data/lib/rio/rrl/chmap.rb +53 -0
  152. data/lib/rio/rrl/ioi.rb +78 -0
  153. data/lib/rio/rrl/path.rb +117 -0
  154. data/lib/rio/rrl/withpath.rb +269 -0
  155. data/lib/rio/scheme/aryio.rb +3 -14
  156. data/lib/rio/scheme/cmdio.rb +73 -42
  157. data/lib/rio/scheme/cmdpipe.rb +122 -59
  158. data/lib/rio/scheme/fd.rb +19 -33
  159. data/lib/rio/scheme/ftp.rb +34 -40
  160. data/lib/rio/scheme/http.rb +13 -22
  161. data/lib/rio/scheme/null.rb +6 -17
  162. data/lib/rio/scheme/path.rb +60 -71
  163. data/lib/rio/scheme/stderr.rb +9 -21
  164. data/lib/rio/scheme/stdio.rb +14 -26
  165. data/lib/rio/scheme/strio.rb +37 -38
  166. data/lib/rio/scheme/sysio.rb +20 -32
  167. data/lib/rio/scheme/tcp.rb +3 -14
  168. data/lib/rio/scheme/temp.rb +103 -92
  169. data/lib/rio/state.rb +85 -67
  170. data/lib/rio/state/data.rb +55 -0
  171. data/lib/rio/state/error.rb +7 -27
  172. data/lib/rio/stream.rb +46 -19
  173. data/lib/rio/stream/base.rb +14 -14
  174. data/lib/rio/stream/duplex.rb +64 -26
  175. data/lib/rio/stream/open.rb +9 -19
  176. data/lib/rio/symantics.rb +3 -14
  177. data/lib/rio/tempdir.rb +8 -17
  178. data/lib/rio/to_rio.rb +3 -16
  179. data/lib/rio/to_rio/all.rb +3 -14
  180. data/lib/rio/to_rio/array.rb +3 -14
  181. data/lib/rio/to_rio/io.rb +3 -14
  182. data/lib/rio/to_rio/object.rb +3 -14
  183. data/lib/rio/to_rio/string.rb +3 -14
  184. data/lib/rio/uri/file.rb +98 -153
  185. data/lib/rio/uriref.rb +144 -0
  186. data/lib/rio/util.rb +3 -14
  187. data/lib/rio/version.rb +4 -15
  188. data/misc/clean-heading-comments.rb +39 -0
  189. data/misc/fixdoclinks.rb +36 -0
  190. data/misc/update-copyright.rb +17 -0
  191. data/rio.gemspec +31 -0
  192. data/test/alturi/tc/create.rb +24 -0
  193. data/test/alturi/tc/empty.rb +13 -0
  194. data/test/alturi/tc/encoding.rb +73 -0
  195. data/test/alturi/tc/file_test.rb +335 -0
  196. data/test/alturi/tc/ftp_alturi.rb +147 -0
  197. data/test/alturi/tc/generic_test.rb +335 -0
  198. data/test/alturi/tc/http_test.rb +359 -0
  199. data/test/alturi/tc/path_parts_test.rb +215 -0
  200. data/test/alturi/tc/rfc_test.rb +83 -0
  201. data/test/alturi/tc/uri_parts_authority.rb +129 -0
  202. data/test/alturi/tc/uri_parts_test.rb +473 -0
  203. data/test/alturi/tc/uri_parts_userinfo.rb +140 -0
  204. data/test/alturi/tests.rb +27 -0
  205. data/test/base_test.rb +18 -0
  206. data/test/bin/demo_chdir.rb +60 -0
  207. data/test/bin/elipsis.rb +11 -0
  208. data/test/env.sh +4 -0
  209. data/test/ftp/initftpfiles.rb +1 -0
  210. data/test/ftp/tc/anon_copy_data.rb +31 -0
  211. data/test/ftp/tc/anon_misc.rb +109 -0
  212. data/test/ftp/tc/anon_read.rb +99 -0
  213. data/test/ftp/tc/anon_special.rb +37 -0
  214. data/test/ftp/tc/anon_write.rb +68 -0
  215. data/test/ftp/tc/copy.rb +35 -0
  216. data/test/ftp/tc/empty.rb +16 -0
  217. data/test/ftp/tc/ftp2ftp.rb +42 -0
  218. data/test/ftp/tc/ftp_fs.rb +333 -0
  219. data/test/ftp/testdef.rb +7 -2
  220. data/test/ftp/tests.rb +24 -0
  221. data/test/gem_runtests.rb +1 -1
  222. data/test/http/copy-from-http.rb +0 -1
  223. data/test/http/def.rb +20 -0
  224. data/test/http/tc/copy_from_http.rb +128 -0
  225. data/test/http/tc/empty.rb +14 -0
  226. data/test/http/tc/uri_meta.rb +52 -0
  227. data/test/http/tests.rb +19 -0
  228. data/test/lib/assertions.rb +7 -0
  229. data/test/lib/run_tests.rb +26 -0
  230. data/test/lib/temp_server.rb +7 -4
  231. data/test/methods/test_suite.rb +108 -0
  232. data/test/platform.rb +5 -0
  233. data/test/qpdir.rb +2 -0
  234. data/test/rio/scheme.rb +49 -0
  235. data/test/rio/tc/pathparts.rb +61 -0
  236. data/test/riotest/test_suite.rb +33 -0
  237. data/test/riotest/unit_test.rb +118 -0
  238. data/test/riotest/util.rb +23 -0
  239. data/test/runalltests.rb +1 -1
  240. data/test/runftptests.rb +2 -7
  241. data/test/runhttp.rb +4 -2
  242. data/test/runhttptests.rb +6 -5
  243. data/test/runtests.rb +66 -37
  244. data/test/srv/www/htdocs/riotest/dir/index.html +11 -0
  245. data/test/srv/www/htdocs/riotest/hw.html +8 -0
  246. data/test/srv/www/htdocs/riotest/lines.txt.gz +0 -0
  247. data/test/tc/abs2.rb +358 -0
  248. data/test/tc/all.rb +17 -10
  249. data/test/tc/base2.rb +8 -7
  250. data/test/tc/clearsel.rb +3 -2
  251. data/test/tc/closeoneof.rb +14 -15
  252. data/test/tc/cmdio.rb +193 -0
  253. data/test/tc/cmdpipe.rb +258 -63
  254. data/test/tc/copy.rb +3 -2
  255. data/test/tc/copyarray.rb +0 -4
  256. data/test/tc/copydest.rb +2 -3
  257. data/test/tc/copydir.rb +5 -1
  258. data/test/tc/copydir2.rb +68 -0
  259. data/test/tc/create.rb +4 -9
  260. data/test/tc/csv.rb +38 -119
  261. data/test/tc/csv2.rb +38 -57
  262. data/test/tc/csv_columns.rb +210 -8
  263. data/test/tc/csv_gzip.rb +78 -0
  264. data/test/tc/csv_headers.rb +134 -0
  265. data/test/tc/csvutil.rb +53 -16
  266. data/test/tc/dir.rb +3 -4
  267. data/test/tc/dir_iter.rb +3 -1
  268. data/test/tc/dirent.rb +8 -7
  269. data/test/tc/each.rb +62 -47
  270. data/test/tc/each_break.rb +67 -25
  271. data/test/tc/edf.rb +3 -2
  272. data/test/tc/empty.rb +6 -4
  273. data/test/tc/encoding.rb +30 -0
  274. data/test/tc/entary.rb +6 -5
  275. data/test/tc/eq.rb +2 -2
  276. data/test/tc/expand_path.rb +14 -14
  277. data/test/tc/ext.rb +7 -7
  278. data/test/tc/fileno.rb +3 -2
  279. data/test/tc/files_select.rb +1 -1
  280. data/test/tc/getrec.rb +2 -3
  281. data/test/tc/gzip.rb +5 -3
  282. data/test/tc/likeio.rb +5 -5
  283. data/test/tc/lineno.rb +1 -1
  284. data/test/tc/lines.rb +4 -4
  285. data/test/tc/misc.rb +29 -171
  286. data/test/tc/nolines.rb +4 -2
  287. data/test/tc/noqae.rb +12 -10
  288. data/test/tc/overload.rb +1 -2
  289. data/test/tc/pa.rb +25 -24
  290. data/test/tc/path_parts.rb +54 -20
  291. data/test/tc/paths.rb +3 -2
  292. data/test/tc/piper.rb +32 -31
  293. data/test/tc/programs_util.rb +9 -9
  294. data/test/tc/qae.rb +9 -8
  295. data/test/tc/qae_riovar.rb +9 -8
  296. data/test/tc/records.rb +3 -2
  297. data/test/tc/rename.rb +4 -4
  298. data/test/tc/riorl.rb +19 -19
  299. data/test/tc/rlparts.ans.yml +1161 -0
  300. data/test/tc/splitlines.rb +1 -1
  301. data/test/tc/splitpath.rb +9 -8
  302. data/test/tc/strio.rb +73 -0
  303. data/test/tc/symlink.rb +3 -2
  304. data/test/tc/symlink0.rb +4 -3
  305. data/test/tc/symlink1.rb +4 -3
  306. data/test/tc/temp.rb +40 -26
  307. data/test/tc/tempdir.rb +12 -12
  308. data/test/tc/testcase.rb +45 -31
  309. data/test/tc/tonl.rb +0 -1
  310. data/test/tc/truncate.rb +111 -13
  311. data/test/tc/yaml.rb +1 -1
  312. data/test/test_suite.rb +31 -0
  313. data/test/tests.rb +35 -0
  314. data/test/tsuite.rb +19 -0
  315. data/test/uriref/tc/basic.rb +171 -0
  316. data/test/uriref/tc/build.rb +30 -0
  317. data/test/uriref/tc/empty.rb +13 -0
  318. data/test/uriref/tc/route.rb +72 -0
  319. data/test/uriref/tests.rb +16 -0
  320. metadata +356 -424
  321. data/ChangeLog +0 -3122
  322. data/VERSION +0 -1
  323. data/build_doc.rb +0 -94
  324. data/doc/ANNOUNCE +0 -157
  325. data/doc/RELEASE_NOTES +0 -308
  326. data/doc/RIOIS +0 -215
  327. data/doc/generators/template/html/rio.css +0 -428
  328. data/doc/generators/template/html/rio.rb +0 -523
  329. data/doc/generators/template/html/ugly.rb +0 -132
  330. data/doc/pkg_def.rb +0 -60
  331. data/doc/rdoc/classes/Kernel.html +0 -133
  332. data/doc/rdoc/classes/Kernel.src/M000234.html +0 -18
  333. data/doc/rdoc/classes/RIO.html +0 -625
  334. data/doc/rdoc/classes/RIO.src/M000001.html +0 -18
  335. data/doc/rdoc/classes/RIO.src/M000002.html +0 -18
  336. data/doc/rdoc/classes/RIO.src/M000003.html +0 -18
  337. data/doc/rdoc/classes/RIO/Doc.html +0 -149
  338. data/doc/rdoc/classes/RIO/Doc/EXAMPLES.html +0 -432
  339. data/doc/rdoc/classes/RIO/Doc/HOWTO.html +0 -1084
  340. data/doc/rdoc/classes/RIO/Doc/INDEX.html +0 -368
  341. data/doc/rdoc/classes/RIO/Doc/INTRO.html +0 -1529
  342. data/doc/rdoc/classes/RIO/Doc/OPTIONAL.html +0 -221
  343. data/doc/rdoc/classes/RIO/Doc/SYNOPSIS.html +0 -336
  344. data/doc/rdoc/classes/RIO/IF.html +0 -165
  345. data/doc/rdoc/classes/RIO/IF/CSV.html +0 -203
  346. data/doc/rdoc/classes/RIO/IF/CSV.src/M000129.html +0 -19
  347. data/doc/rdoc/classes/RIO/IF/CSV.src/M000130.html +0 -16
  348. data/doc/rdoc/classes/RIO/IF/CSV.src/M000131.html +0 -16
  349. data/doc/rdoc/classes/RIO/IF/Dir.html +0 -343
  350. data/doc/rdoc/classes/RIO/IF/Dir.src/M000045.html +0 -16
  351. data/doc/rdoc/classes/RIO/IF/Dir.src/M000046.html +0 -16
  352. data/doc/rdoc/classes/RIO/IF/Dir.src/M000047.html +0 -16
  353. data/doc/rdoc/classes/RIO/IF/Dir.src/M000048.html +0 -16
  354. data/doc/rdoc/classes/RIO/IF/Dir.src/M000049.html +0 -16
  355. data/doc/rdoc/classes/RIO/IF/Dir.src/M000050.html +0 -16
  356. data/doc/rdoc/classes/RIO/IF/Dir.src/M000051.html +0 -16
  357. data/doc/rdoc/classes/RIO/IF/File.html +0 -223
  358. data/doc/rdoc/classes/RIO/IF/File.src/M000216.html +0 -16
  359. data/doc/rdoc/classes/RIO/IF/File.src/M000217.html +0 -16
  360. data/doc/rdoc/classes/RIO/IF/File.src/M000218.html +0 -16
  361. data/doc/rdoc/classes/RIO/IF/File.src/M000219.html +0 -16
  362. data/doc/rdoc/classes/RIO/IF/FileOrDir.html +0 -572
  363. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000117.html +0 -16
  364. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000118.html +0 -16
  365. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000119.html +0 -16
  366. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000120.html +0 -16
  367. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000121.html +0 -16
  368. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000122.html +0 -16
  369. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000123.html +0 -16
  370. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000124.html +0 -16
  371. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000125.html +0 -16
  372. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000126.html +0 -16
  373. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000127.html +0 -16
  374. data/doc/rdoc/classes/RIO/IF/FileOrDir.src/M000128.html +0 -16
  375. data/doc/rdoc/classes/RIO/IF/Grande.html +0 -1376
  376. data/doc/rdoc/classes/RIO/IF/Grande.src/M000052.html +0 -16
  377. data/doc/rdoc/classes/RIO/IF/Grande.src/M000053.html +0 -16
  378. data/doc/rdoc/classes/RIO/IF/Grande.src/M000054.html +0 -16
  379. data/doc/rdoc/classes/RIO/IF/Grande.src/M000055.html +0 -16
  380. data/doc/rdoc/classes/RIO/IF/Grande.src/M000056.html +0 -16
  381. data/doc/rdoc/classes/RIO/IF/Grande.src/M000057.html +0 -16
  382. data/doc/rdoc/classes/RIO/IF/Grande.src/M000058.html +0 -21
  383. data/doc/rdoc/classes/RIO/IF/Grande.src/M000059.html +0 -16
  384. data/doc/rdoc/classes/RIO/IF/Grande.src/M000060.html +0 -16
  385. data/doc/rdoc/classes/RIO/IF/Grande.src/M000061.html +0 -16
  386. data/doc/rdoc/classes/RIO/IF/Grande.src/M000062.html +0 -16
  387. data/doc/rdoc/classes/RIO/IF/Grande.src/M000063.html +0 -16
  388. data/doc/rdoc/classes/RIO/IF/Grande.src/M000064.html +0 -16
  389. data/doc/rdoc/classes/RIO/IF/Grande.src/M000065.html +0 -21
  390. data/doc/rdoc/classes/RIO/IF/Grande.src/M000066.html +0 -16
  391. data/doc/rdoc/classes/RIO/IF/Grande.src/M000067.html +0 -16
  392. data/doc/rdoc/classes/RIO/IF/Grande.src/M000068.html +0 -16
  393. data/doc/rdoc/classes/RIO/IF/Grande.src/M000069.html +0 -16
  394. data/doc/rdoc/classes/RIO/IF/Grande.src/M000070.html +0 -16
  395. data/doc/rdoc/classes/RIO/IF/GrandeEntry.html +0 -810
  396. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000107.html +0 -16
  397. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000108.html +0 -16
  398. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000109.html +0 -16
  399. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000110.html +0 -16
  400. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000111.html +0 -16
  401. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000112.html +0 -16
  402. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000113.html +0 -16
  403. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000114.html +0 -16
  404. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000115.html +0 -16
  405. data/doc/rdoc/classes/RIO/IF/GrandeEntry.src/M000116.html +0 -16
  406. data/doc/rdoc/classes/RIO/IF/GrandeStream.html +0 -1513
  407. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000071.html +0 -16
  408. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000072.html +0 -16
  409. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000073.html +0 -16
  410. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000074.html +0 -16
  411. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000075.html +0 -16
  412. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000076.html +0 -16
  413. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000077.html +0 -16
  414. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000078.html +0 -16
  415. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000079.html +0 -16
  416. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000080.html +0 -16
  417. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000081.html +0 -16
  418. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000082.html +0 -16
  419. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000083.html +0 -16
  420. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000084.html +0 -16
  421. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000085.html +0 -16
  422. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000086.html +0 -16
  423. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000087.html +0 -19
  424. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000088.html +0 -16
  425. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000089.html +0 -16
  426. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000090.html +0 -16
  427. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000091.html +0 -16
  428. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000092.html +0 -16
  429. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000093.html +0 -16
  430. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000094.html +0 -16
  431. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000095.html +0 -16
  432. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000096.html +0 -16
  433. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000097.html +0 -16
  434. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000098.html +0 -16
  435. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000099.html +0 -16
  436. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000100.html +0 -16
  437. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000101.html +0 -16
  438. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000102.html +0 -16
  439. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000103.html +0 -16
  440. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000104.html +0 -16
  441. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000105.html +0 -16
  442. data/doc/rdoc/classes/RIO/IF/GrandeStream.src/M000106.html +0 -16
  443. data/doc/rdoc/classes/RIO/IF/Path.html +0 -999
  444. data/doc/rdoc/classes/RIO/IF/Path.src/M000132.html +0 -16
  445. data/doc/rdoc/classes/RIO/IF/Path.src/M000133.html +0 -16
  446. data/doc/rdoc/classes/RIO/IF/Path.src/M000134.html +0 -16
  447. data/doc/rdoc/classes/RIO/IF/Path.src/M000135.html +0 -16
  448. data/doc/rdoc/classes/RIO/IF/Path.src/M000136.html +0 -16
  449. data/doc/rdoc/classes/RIO/IF/Path.src/M000137.html +0 -16
  450. data/doc/rdoc/classes/RIO/IF/Path.src/M000138.html +0 -16
  451. data/doc/rdoc/classes/RIO/IF/Path.src/M000139.html +0 -16
  452. data/doc/rdoc/classes/RIO/IF/Path.src/M000140.html +0 -16
  453. data/doc/rdoc/classes/RIO/IF/Path.src/M000141.html +0 -16
  454. data/doc/rdoc/classes/RIO/IF/Path.src/M000142.html +0 -16
  455. data/doc/rdoc/classes/RIO/IF/Path.src/M000143.html +0 -16
  456. data/doc/rdoc/classes/RIO/IF/Path.src/M000144.html +0 -16
  457. data/doc/rdoc/classes/RIO/IF/Path.src/M000145.html +0 -16
  458. data/doc/rdoc/classes/RIO/IF/Path.src/M000146.html +0 -16
  459. data/doc/rdoc/classes/RIO/IF/Path.src/M000147.html +0 -16
  460. data/doc/rdoc/classes/RIO/IF/Path.src/M000148.html +0 -16
  461. data/doc/rdoc/classes/RIO/IF/Path.src/M000149.html +0 -16
  462. data/doc/rdoc/classes/RIO/IF/Path.src/M000150.html +0 -16
  463. data/doc/rdoc/classes/RIO/IF/Path.src/M000151.html +0 -16
  464. data/doc/rdoc/classes/RIO/IF/Path.src/M000152.html +0 -16
  465. data/doc/rdoc/classes/RIO/IF/Path.src/M000153.html +0 -16
  466. data/doc/rdoc/classes/RIO/IF/Path.src/M000154.html +0 -18
  467. data/doc/rdoc/classes/RIO/IF/Path.src/M000155.html +0 -16
  468. data/doc/rdoc/classes/RIO/IF/Path.src/M000156.html +0 -16
  469. data/doc/rdoc/classes/RIO/IF/Path.src/M000157.html +0 -16
  470. data/doc/rdoc/classes/RIO/IF/Path.src/M000158.html +0 -16
  471. data/doc/rdoc/classes/RIO/IF/Path.src/M000159.html +0 -16
  472. data/doc/rdoc/classes/RIO/IF/Path.src/M000160.html +0 -16
  473. data/doc/rdoc/classes/RIO/IF/Path.src/M000161.html +0 -16
  474. data/doc/rdoc/classes/RIO/IF/Path.src/M000162.html +0 -16
  475. data/doc/rdoc/classes/RIO/IF/Path.src/M000163.html +0 -16
  476. data/doc/rdoc/classes/RIO/IF/RubyIO.html +0 -1416
  477. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000004.html +0 -16
  478. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000005.html +0 -16
  479. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000006.html +0 -16
  480. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000007.html +0 -16
  481. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000008.html +0 -16
  482. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000009.html +0 -16
  483. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000010.html +0 -16
  484. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000011.html +0 -16
  485. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000012.html +0 -16
  486. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000013.html +0 -16
  487. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000014.html +0 -16
  488. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000015.html +0 -16
  489. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000016.html +0 -16
  490. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000017.html +0 -16
  491. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000018.html +0 -16
  492. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000019.html +0 -16
  493. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000020.html +0 -16
  494. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000021.html +0 -16
  495. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000022.html +0 -16
  496. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000023.html +0 -16
  497. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000024.html +0 -16
  498. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000025.html +0 -16
  499. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000026.html +0 -16
  500. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000027.html +0 -16
  501. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000028.html +0 -16
  502. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000029.html +0 -16
  503. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000030.html +0 -16
  504. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000031.html +0 -16
  505. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000032.html +0 -16
  506. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000033.html +0 -16
  507. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000034.html +0 -16
  508. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000035.html +0 -16
  509. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000036.html +0 -16
  510. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000037.html +0 -16
  511. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000038.html +0 -16
  512. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000039.html +0 -16
  513. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000040.html +0 -16
  514. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000041.html +0 -16
  515. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000042.html +0 -16
  516. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000043.html +0 -16
  517. data/doc/rdoc/classes/RIO/IF/RubyIO.src/M000044.html +0 -16
  518. data/doc/rdoc/classes/RIO/IF/String.html +0 -203
  519. data/doc/rdoc/classes/RIO/IF/String.src/M000213.html +0 -16
  520. data/doc/rdoc/classes/RIO/IF/String.src/M000214.html +0 -16
  521. data/doc/rdoc/classes/RIO/IF/String.src/M000215.html +0 -16
  522. data/doc/rdoc/classes/RIO/IF/Test.html +0 -990
  523. data/doc/rdoc/classes/RIO/IF/Test.src/M000177.html +0 -16
  524. data/doc/rdoc/classes/RIO/IF/Test.src/M000178.html +0 -16
  525. data/doc/rdoc/classes/RIO/IF/Test.src/M000179.html +0 -16
  526. data/doc/rdoc/classes/RIO/IF/Test.src/M000180.html +0 -16
  527. data/doc/rdoc/classes/RIO/IF/Test.src/M000181.html +0 -16
  528. data/doc/rdoc/classes/RIO/IF/Test.src/M000182.html +0 -16
  529. data/doc/rdoc/classes/RIO/IF/Test.src/M000183.html +0 -16
  530. data/doc/rdoc/classes/RIO/IF/Test.src/M000184.html +0 -16
  531. data/doc/rdoc/classes/RIO/IF/Test.src/M000185.html +0 -16
  532. data/doc/rdoc/classes/RIO/IF/Test.src/M000186.html +0 -16
  533. data/doc/rdoc/classes/RIO/IF/Test.src/M000187.html +0 -16
  534. data/doc/rdoc/classes/RIO/IF/Test.src/M000188.html +0 -16
  535. data/doc/rdoc/classes/RIO/IF/Test.src/M000189.html +0 -16
  536. data/doc/rdoc/classes/RIO/IF/Test.src/M000190.html +0 -16
  537. data/doc/rdoc/classes/RIO/IF/Test.src/M000191.html +0 -16
  538. data/doc/rdoc/classes/RIO/IF/Test.src/M000192.html +0 -16
  539. data/doc/rdoc/classes/RIO/IF/Test.src/M000193.html +0 -16
  540. data/doc/rdoc/classes/RIO/IF/Test.src/M000194.html +0 -16
  541. data/doc/rdoc/classes/RIO/IF/Test.src/M000195.html +0 -16
  542. data/doc/rdoc/classes/RIO/IF/Test.src/M000196.html +0 -16
  543. data/doc/rdoc/classes/RIO/IF/Test.src/M000197.html +0 -16
  544. data/doc/rdoc/classes/RIO/IF/Test.src/M000198.html +0 -16
  545. data/doc/rdoc/classes/RIO/IF/Test.src/M000199.html +0 -16
  546. data/doc/rdoc/classes/RIO/IF/Test.src/M000200.html +0 -16
  547. data/doc/rdoc/classes/RIO/IF/Test.src/M000201.html +0 -16
  548. data/doc/rdoc/classes/RIO/IF/Test.src/M000202.html +0 -16
  549. data/doc/rdoc/classes/RIO/IF/Test.src/M000203.html +0 -16
  550. data/doc/rdoc/classes/RIO/IF/Test.src/M000204.html +0 -16
  551. data/doc/rdoc/classes/RIO/IF/Test.src/M000205.html +0 -16
  552. data/doc/rdoc/classes/RIO/IF/Test.src/M000206.html +0 -16
  553. data/doc/rdoc/classes/RIO/IF/Test.src/M000207.html +0 -16
  554. data/doc/rdoc/classes/RIO/IF/Test.src/M000208.html +0 -16
  555. data/doc/rdoc/classes/RIO/IF/Test.src/M000209.html +0 -16
  556. data/doc/rdoc/classes/RIO/IF/Test.src/M000210.html +0 -16
  557. data/doc/rdoc/classes/RIO/IF/Test.src/M000211.html +0 -16
  558. data/doc/rdoc/classes/RIO/IF/Test.src/M000212.html +0 -16
  559. data/doc/rdoc/classes/RIO/IF/YAML.html +0 -517
  560. data/doc/rdoc/classes/RIO/IF/YAML.src/M000164.html +0 -19
  561. data/doc/rdoc/classes/RIO/IF/YAML.src/M000165.html +0 -16
  562. data/doc/rdoc/classes/RIO/IF/YAML.src/M000166.html +0 -16
  563. data/doc/rdoc/classes/RIO/IF/YAML.src/M000167.html +0 -16
  564. data/doc/rdoc/classes/RIO/IF/YAML.src/M000168.html +0 -16
  565. data/doc/rdoc/classes/RIO/IF/YAML.src/M000169.html +0 -16
  566. data/doc/rdoc/classes/RIO/IF/YAML.src/M000170.html +0 -16
  567. data/doc/rdoc/classes/RIO/IF/YAML.src/M000171.html +0 -16
  568. data/doc/rdoc/classes/RIO/IF/YAML.src/M000172.html +0 -16
  569. data/doc/rdoc/classes/RIO/IF/YAML.src/M000173.html +0 -16
  570. data/doc/rdoc/classes/RIO/IF/YAML.src/M000174.html +0 -16
  571. data/doc/rdoc/classes/RIO/IF/YAML.src/M000175.html +0 -16
  572. data/doc/rdoc/classes/RIO/IF/YAML.src/M000176.html +0 -16
  573. data/doc/rdoc/classes/RIO/Rio.html +0 -508
  574. data/doc/rdoc/classes/RIO/Rio.src/M000220.html +0 -18
  575. data/doc/rdoc/classes/RIO/Rio.src/M000221.html +0 -20
  576. data/doc/rdoc/classes/RIO/Rio.src/M000222.html +0 -27
  577. data/doc/rdoc/classes/RIO/Rio.src/M000223.html +0 -16
  578. data/doc/rdoc/classes/RIO/Rio.src/M000225.html +0 -19
  579. data/doc/rdoc/classes/RIO/Rio.src/M000226.html +0 -20
  580. data/doc/rdoc/classes/RIO/Rio.src/M000227.html +0 -16
  581. data/doc/rdoc/classes/RIO/Rio.src/M000228.html +0 -16
  582. data/doc/rdoc/classes/RIO/Rio.src/M000229.html +0 -16
  583. data/doc/rdoc/classes/RIO/Rio.src/M000230.html +0 -16
  584. data/doc/rdoc/classes/RIO/Rio.src/M000231.html +0 -16
  585. data/doc/rdoc/classes/RIO/Rio.src/M000232.html +0 -16
  586. data/doc/rdoc/classes/RIO/Rio.src/M000233.html +0 -16
  587. data/doc/rdoc/created.rid +0 -1
  588. data/doc/rdoc/files/README.html +0 -232
  589. data/doc/rdoc/files/lib/rio/constructor_rb.html +0 -141
  590. data/doc/rdoc/files/lib/rio/doc/EXAMPLES_rb.html +0 -134
  591. data/doc/rdoc/files/lib/rio/doc/HOWTO_rb.html +0 -134
  592. data/doc/rdoc/files/lib/rio/doc/INDEX_rb.html +0 -134
  593. data/doc/rdoc/files/lib/rio/doc/INTRO_rb.html +0 -134
  594. data/doc/rdoc/files/lib/rio/doc/OPTIONAL_rb.html +0 -134
  595. data/doc/rdoc/files/lib/rio/doc/SYNOPSIS_rb.html +0 -134
  596. data/doc/rdoc/files/lib/rio/if/basic_rb.html +0 -134
  597. data/doc/rdoc/files/lib/rio/if/csv_rb.html +0 -134
  598. data/doc/rdoc/files/lib/rio/if/dir_rb.html +0 -134
  599. data/doc/rdoc/files/lib/rio/if/file_rb.html +0 -134
  600. data/doc/rdoc/files/lib/rio/if/fileordir_rb.html +0 -134
  601. data/doc/rdoc/files/lib/rio/if/grande_entry_rb.html +0 -134
  602. data/doc/rdoc/files/lib/rio/if/grande_rb.html +0 -141
  603. data/doc/rdoc/files/lib/rio/if/grande_stream_rb.html +0 -134
  604. data/doc/rdoc/files/lib/rio/if/internal_rb.html +0 -134
  605. data/doc/rdoc/files/lib/rio/if/path_rb.html +0 -134
  606. data/doc/rdoc/files/lib/rio/if/rubyio_rb.html +0 -134
  607. data/doc/rdoc/files/lib/rio/if/string_rb.html +0 -134
  608. data/doc/rdoc/files/lib/rio/if/temp_rb.html +0 -134
  609. data/doc/rdoc/files/lib/rio/if/test_rb.html +0 -134
  610. data/doc/rdoc/files/lib/rio/if/yaml_rb.html +0 -134
  611. data/doc/rdoc/files/lib/rio/kernel_rb.html +0 -142
  612. data/doc/rdoc/files/lib/rio_rb.html +0 -153
  613. data/doc/rdoc/fr_class_index.html +0 -49
  614. data/doc/rdoc/fr_file_index.html +0 -51
  615. data/doc/rdoc/fr_method_index.html +0 -260
  616. data/doc/rdoc/index.html +0 -30
  617. data/doc/rdoc/rdoc-style.css +0 -428
  618. data/doc/rfc1738.txt +0 -1403
  619. data/doc/rfc959.txt +0 -3933
  620. data/ex/catcsv.rb +0 -64
  621. data/ex/colx.rb +0 -8
  622. data/ex/findinruby +0 -15
  623. data/ex/findruby +0 -14
  624. data/ex/passwd_report.rb +0 -8
  625. data/ex/prompt.rb +0 -25
  626. data/ex/rgb.txt.gz +0 -0
  627. data/ex/riocat +0 -42
  628. data/ex/riogunzip +0 -31
  629. data/ex/riogzip +0 -24
  630. data/ex/rioprompt.rb +0 -10
  631. data/ex/targz2zip +0 -17
  632. data/ex/tonl +0 -10
  633. data/setup.rb +0 -1360
  634. data/test/ftp/all.rb +0 -9
  635. data/test/ftp/anon_copy_data.rb +0 -36
  636. data/test/ftp/anon_misc.rb +0 -124
  637. data/test/ftp/anon_read.rb +0 -105
  638. data/test/ftp/anon_special.rb +0 -68
  639. data/test/ftp/anon_write.rb +0 -70
  640. data/test/ftp/ftp2ftp.rb +0 -51
  641. data/test/tc/abs.rb +0 -355
@@ -0,0 +1,75 @@
1
+ module Alt
2
+ module URI
3
+ module Parse
4
+ def self.set_named_match_fields(obj,m,re)
5
+ re.names.each do |name|
6
+ obj.__send__(name+'=',m[name])
7
+ end
8
+ obj
9
+ end
10
+
11
+ def self.parse_re(str,re,parts = nil)
12
+ re.match(str) { |m|
13
+ parts ||= Parts.new
14
+ set_named_match_fields(parts,m,re)
15
+ }
16
+ end
17
+
18
+ #RE_PARTS = /^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/
19
+ # RE_GENERIC0 = %r{
20
+ # (?<scheme> [^:/?#]+ ){0}
21
+ # (?<authority> [^/?#]* ){0}
22
+ # (?<path> [^?#]* ){0}
23
+ # (?<query> [^#]* ){0}
24
+ # (?<fragment> .* ){0}
25
+
26
+ # ( \g<scheme> : )?
27
+ # ( // \g<authority> )?
28
+ # \g<path>
29
+ # ( \? \g<query> )?
30
+ # ( \# \g<fragment> )?
31
+ # }x
32
+ RE_GENERIC = %r{
33
+ (?: ( [^:/?#]+ ) : )?
34
+ (?: // ( [^/?#]* ) )?
35
+ ( [^?#]* )
36
+ (?: \? ( [^#]* ) )?
37
+ (?: \# ( .* ) )?
38
+ }x
39
+
40
+ #def self.parse(ustr)
41
+ # parse_re(ustr,RE_GENERIC)
42
+ #end
43
+
44
+ #authority = [ userinfo "@" ] host [ ":" port ]
45
+ #RE_AUTHORITY0 = %r{
46
+ #(?<userinfo> [^@]+ ){0}
47
+ #(?<host> [^:]* ){0}
48
+ #(?<port> .* ){0}
49
+ #
50
+ #( \g<userinfo> @ )?
51
+ # \g<host>
52
+ #( : \g<port> )?
53
+ #}x
54
+
55
+ RE_AUTHORITY = %r{
56
+ (?: ( [^@]+ ) @ )?
57
+ ( [^:]* )
58
+ (?: : ( .* ) )?
59
+ }x
60
+
61
+ RE_USERINFO = %r{
62
+ (?: ( [^:]+ ) )?
63
+ (?: : ( .* ) )?
64
+ }x
65
+
66
+ def self.parse_authority(ustr)
67
+ parse_re(ustr,RE_AUTHORITY)
68
+ end
69
+ end
70
+ end
71
+ end
72
+
73
+ if __FILE__ == $0
74
+ # TODO Generated stub
75
+ end
@@ -0,0 +1,81 @@
1
+ module Alt
2
+ module URI
3
+ module Ops
4
+ module PathParts
5
+
6
+ def dirname
7
+ dn = self.path[*_dn_pos(self.path)]
8
+ dn.empty? ? "." : dn
9
+ end
10
+ def filename
11
+ self.path[*_fn_pos(self.path)]
12
+ end
13
+ def basename(exnam=nil)
14
+ exnam ||= self.ext
15
+ self.path[*_bn_pos(self.path,exnam)]
16
+ end
17
+ def extname
18
+ self.path[*_en_pos(self.path,self.ext)]
19
+ end
20
+ def basename=(val)
21
+ pth = self.path
22
+ pth[*_bn_pos(pth)] = val
23
+ self.path = pth
24
+ basename
25
+ end
26
+ def extname=(val)
27
+ # p "extname=(#{val})"
28
+ pth = self.path
29
+ pth[*_en_pos(pth,self.ext)] = val
30
+ self.path = pth
31
+ self.ext = val
32
+ extname
33
+ end
34
+ def dirname=(val)
35
+ pth = self.path
36
+ pth = "./" + pth if dirname == "."
37
+ pth[*_dn_pos(pth)] = val
38
+ self.path = pth.squeeze("/")
39
+ dirname
40
+ end
41
+ def filename=(val)
42
+ pth = self.path
43
+ pth[*_fn_pos(pth)] = val
44
+ self.path = pth.squeeze("/")
45
+ filename
46
+ end
47
+
48
+ private
49
+
50
+ def _en_pos(path,extnm=nil)
51
+ # p "en_pos(#{path},#{extnm.inspect})"
52
+ en = extnm || ::File.extname(path)
53
+ # p "en = #{en.inspect}"
54
+ [path.rindex(en),en.length]
55
+ end
56
+ def _bn_pos(path,exnam=nil)
57
+ en_start,en_len = _en_pos(path)
58
+ exnam ||= path[en_start,en_len]
59
+ bn = ::File.basename(path,exnam)
60
+ [path.rindex(bn,en_start),bn.length]
61
+ end
62
+ def _fn_pos(path)
63
+ fn = ::File.basename(path,"")
64
+ [path.rindex(fn),fn.length]
65
+ end
66
+ def _dn_pos(path)
67
+ drv = ""
68
+ dn = if path =~ /^([a-zA-Z]:)/
69
+ $1 + ::File.dirname(path[2..-1])
70
+ else
71
+ ::File.dirname(path)
72
+ end
73
+ dn_start = path.index(dn)
74
+ dn_start.nil? ? [0,0] : [dn_start,dn.length]
75
+ end
76
+
77
+
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,76 @@
1
+ module Alt
2
+ module URI
3
+ module REGEXP
4
+ module PATTERN
5
+
6
+ ALPHA = "A-Z" + "a-z"
7
+ DIGIT = "\\d"
8
+ HEXDIG = DIGIT + "A" + "B" + "C" + "D" + "E" + "F"
9
+
10
+ end
11
+
12
+ module PATTERN
13
+
14
+ #DEC_OCTET = "(\\d)|()"
15
+ end
16
+
17
+ module PATTERN
18
+ # :stopdoc:
19
+
20
+ UNRESERVED = ALPHA + DIGIT + "." + "_" + "~" + "-"
21
+
22
+ # gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@"
23
+ GEN_DELIMS = ":" + "/" + "?" + "#" + "[" + "]" + "@"
24
+
25
+ # sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
26
+ # / "*" / "+" / "," / ";" / "="
27
+ SUB_DELIMS = "!" + "$" + "&" + "'" + "(" + ")" +
28
+ "*" + "+" + "," + ";" + "="
29
+
30
+ # reserved = gen-delims / sub-delims
31
+ RESERVED = GEN_DELIMS + SUB_DELIMS
32
+
33
+ # pct-encoded = "%" HEXDIG HEXDIG
34
+ PCT_ENCODED = "%[#{HEXDIG}][#{HEXDIG}]"
35
+
36
+ # userinfo = *( unreserved / pct-encoded / sub-delims / ":" )
37
+ UCHAR = ":" + SUB_DELIMS + UNRESERVED
38
+
39
+ # user = *( unreserved / pct-encoded / sub-delims / ":" )
40
+ USERCHAR = ":" + SUB_DELIMS + UNRESERVED
41
+
42
+ # host = *( unreserved / pct-encoded / sub-delims / ":" )
43
+ HCHAR = SUB_DELIMS + UNRESERVED
44
+
45
+ #PWCHAR = ":" + SUB_DELIMS + UNRESERVED + GEN_DELIMS
46
+
47
+ # pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
48
+ PCHAR = ":" + "@" + SUB_DELIMS + UNRESERVED
49
+
50
+ # query = *( pchar / "/" / "?" )
51
+ QCHAR = "/" + "?" + PCHAR
52
+ QPCHAR = QCHAR.sub('&','')
53
+
54
+ # fragment = *( pchar / "/" / "?" )
55
+ FCHAR = "/" + "?" + PCHAR
56
+
57
+ # :startdoc:
58
+ end # PATTERN
59
+ PCT_ENCODED = Regexp.new("#{PATTERN::PCT_ENCODED}")
60
+
61
+ PCHAR = Regexp.new("[/#{PATTERN::PCHAR}]")
62
+ QCHAR = Regexp.new("[#{PATTERN::QCHAR}]")
63
+ QPCHAR = Regexp.new("[#{PATTERN::QPCHAR}]")
64
+ FCHAR = Regexp.new("[#{PATTERN::FCHAR}]")
65
+ UCHAR = Regexp.new("[#{PATTERN::UCHAR}]")
66
+ USERCHAR = Regexp.new("[#{PATTERN::USERCHAR}]")
67
+ HCHAR = Regexp.new("[#{PATTERN::HCHAR}]")
68
+ # :startdoc:
69
+ end # REGEXP
70
+ end
71
+ end
72
+
73
+
74
+ if __FILE__ == $0
75
+ # TODO Generated stub
76
+ end
@@ -0,0 +1,512 @@
1
+ require 'forwardable'
2
+ require 'rio/alturi/escape'
3
+ require 'rio/alturi/parse'
4
+ require 'rio/alturi/algorithm'
5
+ #require 'rio/alturi/cached_fields'
6
+
7
+ module Alt
8
+ module URI
9
+ class FieldStore
10
+ extend Forwardable
11
+ def initialize(hash)
12
+ @hash = hash
13
+ end
14
+
15
+ def_delegators :@hash, :[]=, :[], :values_at
16
+
17
+ def method_missing(sym,*args,&block)
18
+ if sym.to_s.end_with? '='
19
+ @hash[sym] = args[0]
20
+ else
21
+ @hash[sym]
22
+ end
23
+ end
24
+ end
25
+
26
+ end
27
+ end
28
+ module Alt
29
+ module URI
30
+ module Gen
31
+ class Base
32
+ def _do_esc(str,fld)
33
+ if str
34
+ str.encode('UTF-8')
35
+
36
+ Alt::URI::Escape.escape(str.force_encoding('US-ASCII'),fld)
37
+ #Alt::URI::Escape.escape(str,fld)
38
+ end
39
+ end
40
+ def _do_unesc(str)
41
+ if str
42
+ ustr = Alt::URI::Escape.unescape(str)
43
+ ustr.force_encoding('UTF-8')
44
+ if @encoding
45
+ begin
46
+ ustr.encode(@encoding)
47
+ rescue Encoding::UndefinedConversionError
48
+ ustr
49
+ end
50
+ else
51
+ ustr
52
+ end
53
+ end
54
+ end
55
+ def nil_or(val,dflt=nil,&block)
56
+ return dflt unless val
57
+ yield val
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
63
+
64
+ module Alt
65
+ module URI
66
+ module Gen
67
+ class URIString < Base
68
+ def initialize(scheme,authority,path,query,fragment)
69
+ @scheme = scheme
70
+ @authority = authority
71
+ @path = path
72
+ @query = query
73
+ @fragment = fragment
74
+ end
75
+
76
+ def scheme
77
+ @scheme + ':' if @scheme
78
+ end
79
+
80
+ def authority
81
+ '//' + @authority if @authority
82
+ end
83
+
84
+ def path
85
+ (@authority &&
86
+ @authority.empty? &&
87
+ !@path.empty? &&
88
+ !@path.start_with?("/") ? "/" : "") + @path
89
+ end
90
+
91
+ def query
92
+ '?' + @query if @query
93
+ end
94
+
95
+ def fragment
96
+ '#' + @fragment if @fragment
97
+ end
98
+
99
+ def to_s
100
+ str = "#{scheme}#{authority}#{path}#{query}#{fragment}"
101
+ #p "Alt::URI::Gen::URIString"
102
+ #p str
103
+ str
104
+ end
105
+ end
106
+ end
107
+ end
108
+ end
109
+
110
+
111
+ module Alt
112
+ module URI
113
+ module Gen
114
+ class UserInfoParts < Base
115
+ attr_reader :store
116
+ def initialize
117
+ @store = {}
118
+ end
119
+ def initialize_copy(other)
120
+ super
121
+ @store = other.store.dup
122
+ end
123
+ def self.parse(val)
124
+ ui = new
125
+ if val
126
+ us,pw = val.split(':',2)
127
+ ui.store[:user] = us
128
+ ui.store[:password] = pw
129
+ end
130
+ ui
131
+ end
132
+ def ==(other)
133
+ @store == other.store
134
+ end
135
+ def [](sym)
136
+ @store[sym]
137
+ end
138
+
139
+ def []=(sym,val)
140
+ @store[sym] = val
141
+ end
142
+
143
+
144
+
145
+ def user
146
+ _do_unesc(@store[:user])
147
+ end
148
+ def user=(val)
149
+ @store[:user] = nil_or(val) { |v|
150
+ _do_esc(v,:user)
151
+ }
152
+ end
153
+ def password=(val)
154
+ @store[:password] = val
155
+ end
156
+
157
+ def password
158
+ @store[:password]
159
+ end
160
+ def value
161
+ self.to_s if @store[:user]
162
+ end
163
+ def to_s
164
+ # RFC 3986 3.2.1
165
+ # Use of the format "user:password" in the userinfo field is
166
+ # deprecated. Applications should not render as clear text any data
167
+ # after the first colon (":") character found within a userinfo
168
+ # subcomponent unless the data after the colon is the empty string
169
+ # (indicating no password).
170
+ u = @store[:user]
171
+ passwd = ':' if @store[:password] and @store[:password].empty?
172
+ "#{u}#{passwd}"
173
+ end
174
+ end
175
+
176
+ end
177
+ end
178
+ end
179
+
180
+ module Alt
181
+ module URI
182
+ module Gen
183
+ class AuthParts < Base
184
+ attr_reader :store
185
+ def initialize
186
+ @store = {}
187
+ end
188
+ def initialize_copy(other)
189
+ super
190
+ @store = other.store.dup
191
+ end
192
+ def self.parse(val)
193
+ auth = new
194
+ if val
195
+ Alt::URI::Parse::RE_AUTHORITY.match(val) { |m|
196
+ auth.store[:host] = m[2].downcase
197
+ auth.store[:port] = m[3]
198
+ auth.store[:userinfo] = UserInfoParts.parse(m[1])
199
+ }
200
+ end
201
+ auth
202
+ end
203
+ def ==(other)
204
+ @store == other.store
205
+ end
206
+ def [](sym)
207
+ @store[sym]
208
+ end
209
+
210
+ def []=(sym,val)
211
+ @store[sym] = val
212
+ end
213
+
214
+ def host=(val)
215
+ @store[:host] = nil_or(val) { |v| v.downcase }
216
+ end
217
+ def host
218
+ @store[:host] if @store[:host]
219
+ end
220
+ def user=(val)
221
+ @store[:userinfo] ||= UserInfoParts.new
222
+ @store[:userinfo].user = val
223
+ end
224
+ def user
225
+ @store[:userinfo].user if @store[:userinfo]
226
+ end
227
+ def password=(val)
228
+ @store[:userinfo] ||= UserInfoParts.new
229
+ @store[:userinfo].password = val
230
+ end
231
+ def password
232
+ @store[:userinfo].password if @store[:userinfo]
233
+ end
234
+ # def userinfo
235
+ # _do_unesc(@store[:userinfo]) if @store[:userinfo]
236
+ # end
237
+
238
+
239
+ def userinfo
240
+ @store[:userinfo].value if @store[:userinfo]
241
+ end
242
+ def userinfo=(val)
243
+ @store[:userinfo] = UserInfoParts.parse(val) if val
244
+ end
245
+
246
+
247
+ def port
248
+ @store[:port]
249
+ end
250
+
251
+ def port=(val)
252
+ @store[:port] = val
253
+ end
254
+ def value
255
+ self.to_s if self.host
256
+ end
257
+ def to_s
258
+ ui = @store[:userinfo].value + '@' if @store[:userinfo] and @store[:userinfo].value
259
+ hst = @store[:host]
260
+ prt = ':' + @store[:port] if @store[:port]
261
+ "#{ui}#{hst}#{prt}"
262
+ end
263
+ end
264
+
265
+ end
266
+ end
267
+ end
268
+ module Alt
269
+ module URI
270
+ module Gen
271
+ class URIParts < Base
272
+ attr_reader :store
273
+ attr_accessor :encoding
274
+ def initialize(opts={})
275
+ @store = { :path => "" }
276
+ @encoding = opts[:encoding]
277
+ # p "@encoding=#{@encoding.inspect}"
278
+ # p caller[0]
279
+ # @encoding = @store[:path].encoding
280
+ # p "URIParts",__ENCODING__
281
+ # @encoding = Encoding.default_internal
282
+ # @encoding = Encoding.find('UTF-8')
283
+ # @encoding = __ENCODING__
284
+ end
285
+
286
+ def initialize_copy(other)
287
+ super
288
+ @store = other.store.dup
289
+ @encoding = other.encoding
290
+ end
291
+ def ==(other)
292
+ @store == other.store
293
+ end
294
+ def store
295
+ @store
296
+ end
297
+
298
+ def self.parse(str,opts={})
299
+ u = URIParts.new(opts)
300
+ u.uri = str
301
+ u
302
+ end
303
+
304
+ def self.create(hash)
305
+ u = URIParts.new
306
+ hash.each do |k,v|
307
+ u.__send__(k.to_s+'=',v)
308
+ end
309
+ u
310
+ end
311
+
312
+ # def [](sym)
313
+ # __send__(sym)
314
+ # end
315
+
316
+ # def []=(sym,val)
317
+ # __send__(sym.to_s+'=',val)
318
+ # end
319
+
320
+ def [](sym)
321
+ @store[sym]
322
+ end
323
+
324
+ def []=(sym,val)
325
+ @store[sym] = val
326
+ end
327
+
328
+ def userinfo
329
+ @store[:authority].userinfo if @store[:authority]
330
+ end
331
+
332
+ def userinfo=(val)
333
+ @store[:authority] ||= AuthParts.new
334
+ @store[:authority].userinfo = val
335
+ end
336
+
337
+ def user
338
+ @store[:authority].user if @store[:authority]
339
+ end
340
+
341
+ def user=(val)
342
+ @store[:authority] ||= AuthParts.new
343
+ @store[:authority].user = val
344
+ end
345
+
346
+ def password
347
+ @store[:authority].password if @store[:authority]
348
+ end
349
+
350
+ def password=(val)
351
+ @store[:authority] ||= AuthParts.new
352
+ @store[:authority].password = val
353
+ end
354
+
355
+ def authority
356
+ #p @store
357
+ @store[:authority].value if @store[:authority]
358
+ end
359
+
360
+ def authority=(val)
361
+ @store[:authority] = AuthParts.parse(val) if val
362
+ end
363
+
364
+ def fragment=(val)
365
+ @store[:fragment] = nil_or(val) { |v| _do_esc(v,:fragment) }
366
+ end
367
+
368
+ def scheme=(val)
369
+ @store[:scheme] = nil_or(val) { |v| v.downcase }
370
+ end
371
+ def path=(val)
372
+ @store[:path] = nil_or(val,"") { |v|
373
+ _do_esc(v,:path)
374
+ }
375
+ end
376
+ def path
377
+ ans = _do_unesc(@store[:path])
378
+ #p 'HERE'
379
+ #p ans
380
+ ans
381
+ end
382
+
383
+
384
+ def query=(val)
385
+ @store[:query] = nil_or(val) { |v|
386
+ if v.instance_of?(::Array)
387
+ unless v.empty?
388
+ v.map { |el|
389
+ _do_esc(el,:query_part)
390
+ }.join('&')
391
+ end
392
+ else
393
+ _do_esc(v,:query)
394
+ end
395
+ }
396
+ end
397
+ def query
398
+ if @store[:query]
399
+ qparts = @store[:query].split('&',-1)
400
+ if qparts.size > 1
401
+ qparts.map { |el| _do_unesc(el) }
402
+ elsif qparts.size == 1
403
+ _do_unesc(qparts[0])
404
+ else
405
+ ""
406
+ end
407
+ end
408
+ end
409
+ def port=(val)
410
+ @store[:authority] ||= AuthParts.new
411
+ @store[:authority].port = nil_or(val) { |v| v.to_s }
412
+ end
413
+
414
+ def host=(val)
415
+ @store[:authority] ||= AuthParts.new
416
+ @store[:authority].host = nil_or(val) { |v| v.downcase }
417
+ end
418
+
419
+ def scheme
420
+ @store[:scheme]
421
+ end
422
+
423
+ def host
424
+ @store[:authority].host if @store[:authority]
425
+ end
426
+
427
+ def port
428
+ @store[:authority].port if @store[:authority]
429
+ end
430
+
431
+
432
+ def fragment
433
+ _do_unesc(@store[:fragment]) if @store[:fragment]
434
+ end
435
+
436
+ def uri
437
+ self.to_s
438
+ end
439
+
440
+
441
+ def uri=(val)
442
+ if !val
443
+ @store.clear
444
+ @store[:path] = ""
445
+ else
446
+ #Alt::URI::Parse::RE_GENERIC.match(val) { |m|
447
+ # p "URI_PARTS: #{m.inspect}"
448
+ # self.scheme = m[:scheme]
449
+ # self.authority = m[:authority]
450
+ # @store[:path] = m[:path]
451
+ # @store[:query] = m[:query]
452
+ # @store[:fragment] = m[:fragment]
453
+ #}
454
+ Alt::URI::Parse::RE_GENERIC.match(val) { |m|
455
+ #p "URI_PARTS: #{m.inspect}"
456
+ self.scheme = m[1]
457
+ self.authority = m[2]
458
+ @store[:path] = m[3]
459
+ @store[:query] = m[4]
460
+ @store[:fragment] = m[5]
461
+ }
462
+ end
463
+ end
464
+
465
+ def netpath
466
+ URIString.new(nil,authority,path,nil,nil).to_s
467
+ end
468
+ def netpath=(val)
469
+ if !val
470
+ self.authority = nil
471
+ self.path = ""
472
+ else
473
+ #Alt::URI::Parse::RE_GENERIC.match(val) { |m|
474
+ # self.authority = m[:authority]
475
+ # self.path = m[:path]
476
+ #}
477
+ Alt::URI::Parse::RE_GENERIC.match(val) { |m|
478
+ self.authority = m[2]
479
+ self.path = m[3]
480
+ }
481
+ end
482
+ end
483
+ def to_s
484
+ URIString.new(@store[:scheme],authority,@store[:path],@store[:query],@store[:fragment]).to_s
485
+ end
486
+
487
+ def absolute?
488
+ self.scheme != nil
489
+ end
490
+
491
+ def relative?
492
+ !self.absolute?
493
+ end
494
+
495
+ def abs(base)
496
+ Alt::URI::Algorithm.transform(self,base)
497
+ end
498
+
499
+ def rel(base)
500
+ Alt::URI::Algorithm.relative(self,base)
501
+ end
502
+ def inspect()
503
+ str = @store.keys.map{ |k| "#{k}:#{@store[k].inspect}" }.join(" ")
504
+
505
+ sprintf '#<URIParts:0x%0x %s>',self.object_id,str
506
+ end
507
+
508
+ end
509
+ end
510
+ end
511
+ end
512
+