diff options
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | lib/uri.rb | 2 | ||||
-rw-r--r-- | lib/uri/common.rb | 8 | ||||
-rw-r--r-- | lib/uri/generic.rb | 19 |
4 files changed, 28 insertions, 11 deletions
@@ -1,3 +1,13 @@ +Wed Jun 12 18:04:44 2002 akira yamada <akira@arika.org> + + * uri/common.rb (REGEXP::PATTERN::X_ABS_URI): 'file:/foo' is valid. + + * uri/generic.rb (Generic#xxx=): should return substituted value. + (ruby-dev:16728.) + + * test/generic.rb (test_set_component): added tests for the above + change. + Wed Jun 12 02:38:00 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net> * parse.y (stmt): fix typo. diff --git a/lib/uri.rb b/lib/uri.rb index d33f0c827f..beb1443697 100644 --- a/lib/uri.rb +++ b/lib/uri.rb @@ -15,7 +15,7 @@ =end module URI - VERSION_CODE = '000906'.freeze + VERSION_CODE = '000907'.freeze VERSION = VERSION_CODE.scan(/../).collect{|n| n.to_i}.join('.').freeze end diff --git a/lib/uri/common.rb b/lib/uri/common.rb index 6f2fa81ad2..ea7d3c8865 100644 --- a/lib/uri/common.rb +++ b/lib/uri/common.rb @@ -145,14 +145,14 @@ module URI X_ABS_URI = " (#{PATTERN::SCHEME}): (?# 1: scheme) (?: - (?: + (?:(?: //(?: (?:(?:(#{PATTERN::USERINFO})@)? (?# 2: userinfo) (?:(#{PATTERN::HOST})(?::(\\d*))?))?(?# 3: host, 4: port) | (#{PATTERN::REG_NAME}) (?# 5: registry) - ) - (#{PATTERN::ABS_PATH})? (?# 6: path) + ))? + ((?!//)#{PATTERN::ABS_PATH})? (?# 6: path) )(?:\\?(#{PATTERN::QUERY}))? (?# 7: query) | (#{PATTERN::OPAQUE_PART}) (?# 8: opaque) @@ -231,7 +231,7 @@ module URI end else raise ArgumentError, - "expected Array of or Hash of compornents of #{klass.to_s} (#{klass.component[1..-1].join(', ')})" + "expected Array of or Hash of components of #{klass.to_s} (#{klass.component[1..-1].join(', ')})" end tmp[:scheme] = klass.to_s.sub(/\A.*::/, '').downcase diff --git a/lib/uri/generic.rb b/lib/uri/generic.rb index e80c6f752b..775a001392 100644 --- a/lib/uri/generic.rb +++ b/lib/uri/generic.rb @@ -121,7 +121,7 @@ Object end else raise ArgumentError, - "expected Array of or Hash of compornents of #{self.type} (#{self.type.component.join(', ')})" + "expected Array of or Hash of components of #{self.type} (#{self.type.component.join(', ')})" end tmp << true @@ -296,9 +296,12 @@ Object end private :check_password - def userinfo=(user, password = nil) - check_userinfo(user, password) - set_userinfo(user, password) + def userinfo=(userinfo) + if userinfo.nil? + return nil + end + check_userinfo(*userinfo) + set_userinfo(*userinfo) end def user=(user) @@ -312,21 +315,25 @@ Object end def set_userinfo(user, password = nil) - if !password + unless password user, password = split_userinfo(user) end @user = user - @password = password + @password = password if password + + [@user, @password] end protected :set_userinfo def set_user(v) set_userinfo(v, @password) + v end protected :set_user def set_password(v) set_userinfo(@user, v) + v end protected :set_password |