ruby-changes:11935
From: akr <ko1@a...>
Date: Thu, 28 May 2009 02:50:17 +0900 (JST)
Subject: [ruby-changes:11935] Ruby:r23598 (trunk): * lib/uri: don't set @parser if it is DEFAULT_PARSER for marshaling
akr 2009-05-28 02:48:54 +0900 (Thu, 28 May 2009) New Revision: 23598 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=23598 Log: * lib/uri: don't set @parser if it is DEFAULT_PARSER for marshaling URI objects between Ruby 1.8 and Ruby 1.9. [ruby-dev:38377] Modified files: trunk/ChangeLog trunk/lib/uri/generic.rb trunk/lib/uri/mailto.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 23597) +++ ChangeLog (revision 23598) @@ -1,3 +1,9 @@ +Thu May 28 02:40:54 2009 Tanaka Akira <akr@f...> + + * lib/uri: don't set @parser if it is DEFAULT_PARSER for marshaling + URI objects between Ruby 1.8 and Ruby 1.9. + [ruby-dev:38377] + Wed May 27 23:00:38 2009 Nobuyoshi Nakada <nobu@r...> * parse.y (struct parser_params): lex_gets_ptr should be long. Index: lib/uri/mailto.rb =================================================================== --- lib/uri/mailto.rb (revision 23597) +++ lib/uri/mailto.rb (revision 23598) @@ -159,7 +159,7 @@ return true unless v return true if v.size == 0 - if @parser.regexp[:OPAQUE] !~ v || /\A#{MAILBOX_PATTERN}*\z/o !~ v + if parser.regexp[:OPAQUE] !~ v || /\A#{MAILBOX_PATTERN}*\z/o !~ v raise InvalidComponentError, "bad component(expected opaque component): #{v}" end @@ -183,7 +183,7 @@ return true unless v return true if v.size == 0 - if @parser.regexp[:OPAQUE] !~ v || + if parser.regexp[:OPAQUE] !~ v || /\A(#{HEADER_PATTERN}(?:\&#{HEADER_PATTERN})*)\z/o !~ v raise InvalidComponentError, "bad component(expected opaque component): #{v}" @@ -239,18 +239,18 @@ # # => "To: ruby-list@r...\nSubject: subscribe\nCc: myaddr\n\n\n" # def to_mailtext - to = @parser.unescape(@to) + to = parser.unescape(@to) head = '' body = '' @headers.each do |x| case x[0] when 'body' - body = @parser.unescape(x[1]) + body = parser.unescape(x[1]) when 'to' - to << ', ' + @parser.unescape(x[1]) + to << ', ' + parser.unescape(x[1]) else - head << @parser.unescape(x[0]).capitalize + ': ' + - @parser.unescape(x[1]) + "\n" + head << parser.unescape(x[0]).capitalize + ': ' + + parser.unescape(x[1]) + "\n" end end Index: lib/uri/generic.rb =================================================================== --- lib/uri/generic.rb (revision 23597) +++ lib/uri/generic.rb (revision 23598) @@ -73,7 +73,7 @@ if args.kind_of?(Array) return self.build(args.collect{|x| if x - @parser.escape(x) + parser.escape(x) else x end @@ -82,7 +82,7 @@ tmp = {} args.each do |key, value| tmp[key] = if value - @parser.escape(value) + parser.escape(value) else value end @@ -121,7 +121,7 @@ "expected Array of or Hash of components of #{self.class} (#{self.class.component.join(', ')})" end - tmp << DEFAULT_PARSER + tmp << nil tmp << true return self.new(*tmp) end @@ -172,7 +172,7 @@ @opaque = nil @registry = nil @fragment = nil - @parser = parser + @parser = parser == DEFAULT_PARSER ? nil : parser if arg_check self.scheme = scheme @@ -212,8 +212,15 @@ attr_reader :query attr_reader :opaque attr_reader :fragment - attr_reader :parser + def parser + if !defined?(@parser) || !@parser + DEFAULT_PARSER + else + @parser || DEFAULT_PARSER + end + end + # replace self by other URI object def replace!(oth) if self.class != oth.class @@ -231,7 +238,7 @@ end def check_scheme(v) - if v && @parser.regexp[:SCHEME] !~ v + if v && parser.regexp[:SCHEME] !~ v raise InvalidComponentError, "bad component(expected scheme component): #{v}" end @@ -270,7 +277,7 @@ return v unless v - if @parser.regexp[:USERINFO] !~ v + if parser.regexp[:USERINFO] !~ v raise InvalidComponentError, "bad component(expected userinfo component or user component): #{v}" end @@ -291,7 +298,7 @@ "password component depends user component" end - if @parser.regexp[:USERINFO] !~ v + if parser.regexp[:USERINFO] !~ v raise InvalidComponentError, "bad component(expected user component): #{v}" end @@ -356,7 +363,7 @@ private :split_userinfo def escape_userpass(v) - v = @parser.escape(v, /[@:\/]/o) # RFC 1738 section 3.1 #/ + v = parser.escape(v, /[@:\/]/o) # RFC 1738 section 3.1 #/ end private :escape_userpass @@ -384,7 +391,7 @@ if @registry || @opaque raise InvalidURIError, "can not set host with registry or opaque" - elsif @parser.regexp[:HOST] !~ v + elsif parser.regexp[:HOST] !~ v raise InvalidComponentError, "bad component(expected host component): #{v}" end @@ -410,7 +417,7 @@ if @registry || @opaque raise InvalidURIError, "can not set port with registry or opaque" - elsif !v.kind_of?(Fixnum) && @parser.regexp[:PORT] !~ v + elsif !v.kind_of?(Fixnum) && parser.regexp[:PORT] !~ v raise InvalidComponentError, "bad component(expected port component): #{v}" end @@ -446,7 +453,7 @@ if @host || @port || @user # userinfo = @user + ':' + @password raise InvalidURIError, "can not set registry with host, port, or userinfo" - elsif v && @parser.regexp[:REGISTRY] !~ v + elsif v && parser.regexp[:REGISTRY] !~ v raise InvalidComponentError, "bad component(expected registry component): #{v}" end @@ -476,12 +483,12 @@ end if @scheme - if v && v != '' && @parser.regexp[:ABS_PATH] !~ v + if v && v != '' && parser.regexp[:ABS_PATH] !~ v raise InvalidComponentError, "bad component(expected absolute path component): #{v}" end else - if v && v != '' && @parser.regexp[:ABS_PATH] !~ v && @parser.regexp[:REL_PATH] !~ v + if v && v != '' && parser.regexp[:ABS_PATH] !~ v && parser.regexp[:REL_PATH] !~ v raise InvalidComponentError, "bad component(expected relative path component): #{v}" end @@ -513,7 +520,7 @@ "query conflicts with opaque" end - if v && v != '' && @parser.regexp[:QUERY] !~ v + if v && v != '' && parser.regexp[:QUERY] !~ v raise InvalidComponentError, "bad component(expected query component): #{v}" end @@ -542,7 +549,7 @@ if @host || @port || @user || @path # userinfo = @user + ':' + @password raise InvalidURIError, "can not set opaque with host, port, userinfo or path" - elsif v && @parser.regexp[:OPAQUE] !~ v + elsif v && parser.regexp[:OPAQUE] !~ v raise InvalidComponentError, "bad component(expected opaque component): #{v}" end @@ -565,7 +572,7 @@ def check_fragment(v) return v unless v - if v && v != '' && @parser.regexp[:FRAGMENT] !~ v + if v && v != '' && parser.regexp[:FRAGMENT] !~ v raise InvalidComponentError, "bad component(expected fragment component): #{v}" end @@ -777,7 +784,7 @@ case oth when Generic when String - oth = @parser.parse(oth) + oth = parser.parse(oth) else raise ArgumentError, "bad argument(expected URI object or URI string)" @@ -848,7 +855,7 @@ case oth when Generic when String - oth = @parser.parse(oth) + oth = parser.parse(oth) else raise ArgumentError, "bad argument(expected URI object or URI string)" @@ -869,7 +876,7 @@ rel = URI::Generic.new(nil, # it is relative URI self.userinfo, self.host, self.port, self.registry, self.path, self.opaque, - self.query, self.fragment, @parser) + self.query, self.fragment, parser) if rel.userinfo != oth.userinfo || rel.host.to_s.downcase != oth.host.to_s.downcase || @@ -960,7 +967,7 @@ case oth when Generic when String - oth = @parser.parse(oth) + oth = parser.parse(oth) else raise ArgumentError, "bad argument(expected URI object or URI string)" @@ -1059,7 +1066,7 @@ end def eql?(oth) - @parser == oth.parser && + parser == oth.parser && self.component_ary.eql?(oth.component_ary) end @@ -1117,7 +1124,7 @@ def coerce(oth) case oth when String - oth = @parser.parse(oth) + oth = parser.parse(oth) else super end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/