[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]