From: akira yamada Date: 2005-02-10T15:04:15+09:00 Subject: [ruby-dev:25668] Re: 空のuserのURI.parse Kazuhiro NISHIYAMA wrote: > userinfoのuser部分が空の時のparse結果が変です。 > > u = URI.parse("ftp://:pass@localhost/") > u.to_s #=> "ftp://:pass:pass@localhost/" > u.user #=> ":pass" > u.userinfo #=> ":pass:pass" こういう感じでどうでしょうか: Index: ChangeLog =================================================================== RCS file: /var/cvs/src/ruby/ChangeLog,v retrieving revision 1.2673.2.775 diff -u -r1.2673.2.775 ChangeLog --- ChangeLog 7 Jan 2005 19:36:44 -0000 1.2673.2.775 +++ ChangeLog 10 Feb 2005 06:03:18 -0000 @@ -1,3 +1,8 @@ +Thu Feb 10 14:57:32 2005 akira yamada + + * lib/uri/generic.rb (split_userinfo): should split ":pass" into "" + and "pass". [ruby-dev:25667] + Sat Jan 8 04:38:47 2005 why the lucky stiff * lib/yaml.rb: Kernel#y requires an argument. Index: lib/uri/generic.rb =================================================================== RCS file: /var/cvs/src/ruby/lib/uri/generic.rb,v retrieving revision 1.13.2.3 diff -u -r1.13.2.3 generic.rb --- lib/uri/generic.rb 13 Jul 2004 10:48:30 -0000 1.13.2.3 +++ lib/uri/generic.rb 10 Feb 2005 06:03:18 -0000 @@ -343,14 +343,7 @@ def split_userinfo(ui) return nil, nil unless ui - tmp = ui.index(':') - if tmp - user = ui[0..tmp - 1] - password = ui[tmp + 1..-1] - else - user = ui - password = nil - end + user, password = ui.split(/:/, 2) return user, password end Index: test/uri/test_generic.rb =================================================================== RCS file: /var/cvs/src/ruby/test/uri/test_generic.rb,v retrieving revision 1.5.2.2 diff -u -r1.5.2.2 test_generic.rb --- test/uri/test_generic.rb 13 Jul 2004 10:48:31 -0000 1.5.2.2 +++ test/uri/test_generic.rb 10 Feb 2005 06:03:18 -0000 @@ -117,11 +117,26 @@ assert_raises(URI::InvalidURIError) { URI.parse('http://a_b/') } # 8 - # reporte by m_seki + # reported by m_seki uri = URI.parse('file:///foo/bar.txt') assert_kind_of(URI::Generic, url) uri = URI.parse('file:/foo/bar.txt') assert_kind_of(URI::Generic, url) + + # 9 + # [ruby-dev:25667] + url = URI.parse('ftp://:pass@localhost/') + assert_equal('', url.user) + assert_equal('pass', url.password) + assert_equal(':pass', url.userinfo) + url = URI.parse('ftp://user@localhost/') + assert_equal('user', url.user) + assert_equal(nil, url.password) + assert_equal('user', url.userinfo) + url = URI.parse('ftp://localhost/') + assert_equal(nil, url.user) + assert_equal(nil, url.password) + assert_equal(nil, url.userinfo) end def test_merge -- やまだあきら / akira yamada