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

ruby-changes:16391

From: marcandre <ko1@a...>
Date: Tue, 22 Jun 2010 13:24:26 +0900 (JST)
Subject: [ruby-changes:16391] Ruby:r28376 (trunk): * lib/delegate.rb: Forward #trust, #untrust, #taint and #untaint

marcandre	2010-06-22 13:23:59 +0900 (Tue, 22 Jun 2010)

  New Revision: 28376

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=28376

  Log:
    * lib/delegate.rb: Forward #trust, #untrust, #taint and #untaint
      to both the delegator and __getobj__ [ruby-core:26138]

  Modified files:
    trunk/ChangeLog
    trunk/lib/delegate.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 28375)
+++ ChangeLog	(revision 28376)
@@ -1,3 +1,8 @@
+Tue Jun 22 13:23:13 2010  Marc-Andre Lafortune  <ruby-core@m...>
+
+	* lib/delegate.rb: Forward #trust, #untrust, #taint and #untaint
+	  to both the delegator and __getobj__ [ruby-core:26138]
+
 Mon Jun 21 23:41:08 2010  wanabe  <s.wanabe@g...>
 
 	* eval_error.c (error_print): clear raised_flag while error-printing
Index: lib/delegate.rb
===================================================================
--- lib/delegate.rb	(revision 28375)
+++ lib/delegate.rb	(revision 28376)
@@ -137,7 +137,9 @@
     __setobj__(obj)
   end
 
+  #
   # Handles the magic of delegation through \_\_getobj\_\_.
+  #
   def method_missing(m, *args, &block)
     target = self.__getobj__
     begin
@@ -222,7 +224,9 @@
     raise NotImplementedError, "need to define `__setobj__'"
   end
 
+  #
   # Serialization support for the object returned by \_\_getobj\_\_.
+  #
   def marshal_dump
     ivars = instance_variables.reject {|var| /\A@delegate_/ =~ var}
     [
@@ -231,7 +235,10 @@
       __getobj__
     ]
   end
+
+  #
   # Reinitializes delegation from a serialized object.
+  #
   def marshal_load(data)
     version, vars, values, obj = data
     if version == :__v2__
@@ -250,10 +257,36 @@
   end
   private :initialize_clone, :initialize_dup
 
-  # Freeze self and target at once.
-  def freeze
-    __getobj__.freeze
-    super
+  ##
+  # :method: trust
+  # Trust both the object returned by \_\_getobj\_\_ and self.
+  #
+
+  ##
+  # :method: untrust
+  # Untrust both the object returned by \_\_getobj\_\_ and self.
+  #
+
+  ##
+  # :method: taint
+  # Taint both the object returned by \_\_getobj\_\_ and self.
+  #
+
+  ##
+  # :method: untaint
+  # Untaint both the object returned by \_\_getobj\_\_ and self.
+  #
+
+  ##
+  # :method: freeze
+  # Freeze both the object returned by \_\_getobj\_\_ and self.
+  #
+
+  [:trust, :untrust, :taint, :untaint, :freeze].each do |method|
+    define_method method do
+      __getobj__.send(method)
+      super()
+    end
   end
 
   @delegator_api = self.public_instance_methods

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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