[#8997] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — Mathieu Bouchard <matju@...>

On Tue, 3 Oct 2006, matz wrote:

77 messages 2006/10/04
[#8998] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — Yukihiro Matsumoto <matz@...> 2006/10/04

Hi,

[#9029] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — Mathieu Bouchard <matju@...> 2006/10/08

On Wed, 4 Oct 2006, Yukihiro Matsumoto wrote:

[#9030] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — Yukihiro Matsumoto <matz@...> 2006/10/08

Hi,

[#9034] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — Dave Burt <dave@...> 2006/10/09

Yukihiro Matsumoto wrote:

[#9041] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — Yukihiro Matsumoto <matz@...> 2006/10/09

Hi,

[#9042] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — dblack@... 2006/10/09

Hi --

[#9043] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — Yukihiro Matsumoto <matz@...> 2006/10/09

Hi,

[#9044] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — dblack@... 2006/10/09

Hi --

[#9045] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — Yukihiro Matsumoto <matz@...> 2006/10/09

Hi,

[#9047] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — dblack@... 2006/10/09

Hi --

[#9050] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — James Edward Gray II <james@...> 2006/10/09

On Oct 9, 2006, at 10:19 AM, dblack@wobblini.net wrote:

[#9053] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — Eero Saynatkari <ruby-ml@...> 2006/10/09

On 2006.10.10 00:31, James Edward Gray II wrote:

[#9055] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — James Edward Gray II <james@...> 2006/10/09

On Oct 9, 2006, at 11:50 AM, Eero Saynatkari wrote:

[#9056] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — dblack@... 2006/10/09

Hi --

[#9054] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — dblack@... 2006/10/09

Hi --

[#9066] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — Yukihiro Matsumoto <matz@...> 2006/10/09

Hi,

[#9072] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — dblack@... 2006/10/10

Hi --

[#9083] Re: [ruby-cvs:18323] ruby: * eval.c (splat_value): use "to_splat" instead of "to_ary" to — Yukihiro Matsumoto <matz@...> 2006/10/10

Hi,

[#9119] What about 'splay'? — dblack@...

Hi --

37 messages 2006/10/11
[#9122] Re: What about 'splay'? — Eero Saynatkari <ruby-ml@...> 2006/10/11

On 2006.10.12 02:32, dblack@wobblini.net wrote:

[#9127] Re: What about 'splay'? — Sean Russell <ser@...> 2006/10/11

On Wednesday 11 October 2006 13:55, Eero Saynatkari wrote:

[#9188] Symbol < String in Ruby > 1.8 — dblack@...

Hi --

107 messages 2006/10/15
[#9192] Re: Symbol < String in Ruby > 1.8 — Yukihiro Matsumoto <matz@...> 2006/10/16

Hi

[#9212] Re: Symbol < String in Ruby > 1.8 — Charles Oliver Nutter <Charles.O.Nutter@...> 2006/10/17

Yukihiro Matsumoto wrote:

[#9238] Re: Symbol < String in Ruby > 1.8 — Charles Oliver Nutter <Charles.O.Nutter@...> 2006/10/18

Charles Oliver Nutter wrote:

[#9244] Re: Symbol < String in Ruby > 1.8 — Sam Roberts <sroberts@...> 2006/10/18

On Thu, Oct 19, 2006 at 05:06:02AM +0900, Charles Oliver Nutter wrote:

[#9255] Re: Symbol < String in Ruby > 1.8 — Yukihiro Matsumoto <matz@...> 2006/10/19

Hi,

[#9256] Re: Symbol < String in Ruby > 1.8 — Sam Roberts <sroberts@...> 2006/10/19

Quoting matz@ruby-lang.org, on Thu, Oct 19, 2006 at 01:40:42PM +0900:

[#9190] Re: Symbol < String in Ruby > 1.8 — "Rick DeNatale" <rick.denatale@...> 2006/10/16

On 10/15/06, dblack@wobblini.net <dblack@wobblini.net> wrote:

[#9191] Re: Symbol < String in Ruby > 1.8 — dblack@... 2006/10/16

Hi --

[#9194] Re: Symbol < String in Ruby > 1.8 — "Rick DeNatale" <rick.denatale@...> 2006/10/16

On 10/15/06, dblack@wobblini.net <dblack@wobblini.net> wrote:

[#9196] Re: Symbol < String in Ruby > 1.8 — Yukihiro Matsumoto <matz@...> 2006/10/16

Hi,

[#9202] Re: Symbol < String in Ruby > 1.8 — "Rick DeNatale" <rick.denatale@...> 2006/10/16

On 10/16/06, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:

[#9203] Re: Symbol < String in Ruby > 1.8 — James Edward Gray II <james@...> 2006/10/16

On Oct 16, 2006, at 3:06 PM, Rick DeNatale wrote:

[#9205] String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — Sam Roberts <sroberts@...> 2006/10/16

On Tue, Oct 17, 2006 at 05:14:09AM +0900, James Edward Gray II wrote:

[#9218] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — "Rick DeNatale" <rick.denatale@...> 2006/10/17

On 10/16/06, Sam Roberts <sroberts@uniserve.com> wrote:

[#9220] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — Nobuyoshi Nakada <nobu@...> 2006/10/17

Hi,

[#9225] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — dblack@... 2006/10/18

Hi --

[#9226] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — James Edward Gray II <james@...> 2006/10/18

On Oct 17, 2006, at 7:29 PM, dblack@wobblini.net wrote:

[#9230] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — dblack@... 2006/10/18

Hi --

[#9231] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — Eric Hodel <drbrain@...7.net> 2006/10/18

On Oct 18, 2006, at 4:18 AM, dblack@wobblini.net wrote:

[#9232] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — "Nikolai Weibull" <now@...> 2006/10/18

On 10/18/06, Eric Hodel <drbrain@segment7.net> wrote:

[#9234] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — mathew <meta@...> 2006/10/18

On 10/18/06, Nikolai Weibull <now@bitwi.se> wrote:

[#9236] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — "Nikolai Weibull" <now@...> 2006/10/18

On 10/18/06, mathew <meta@pobox.com> wrote:

[#9237] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — Mauricio Fernandez <mfp@...> 2006/10/18

On Thu, Oct 19, 2006 at 04:24:24AM +0900, Nikolai Weibull wrote:

[#9240] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — "Nikolai Weibull" <now@...> 2006/10/18

On 10/18/06, Mauricio Fernandez <mfp@acm.org> wrote:

[#9242] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — dblack@... 2006/10/18

Hi --

[#9247] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — "Rick DeNatale" <rick.denatale@...> 2006/10/19

On 10/18/06, dblack@wobblini.net <dblack@wobblini.net> wrote:

[#9250] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — Jim Weirich <jim@...> 2006/10/19

Rick DeNatale wrote:

[#9261] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — dblack@... 2006/10/19

Hi --

[#9262] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — Yukihiro Matsumoto <matz@...> 2006/10/19

Hi,

[#9264] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — dblack@... 2006/10/19

Hi --

[#9267] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — "Nikolai Weibull" <now@...> 2006/10/19

On 10/19/06, dblack@wobblini.net <dblack@wobblini.net> wrote:

[#9277] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — dblack@... 2006/10/19

Hi --

[#9285] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — "Nikolai Weibull" <now@...> 2006/10/20

On 10/19/06, dblack@wobblini.net <dblack@wobblini.net> wrote:

[#9288] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — dblack@... 2006/10/20

Hi --

[#9289] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — Jim Weirich <jim@...> 2006/10/20

dblack@wobblini.net wrote:

[#9294] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — Yukihiro Matsumoto <matz@...> 2006/10/20

Hi,

[#9300] Re: String not enumerable, what about IO? (was Re: Symbol < String in Ruby > 1.8) — dblack@... 2006/10/20

Hi --

[RCR] Module#method_aliased and Module#singleton_method_aliased

From: "Daniel Berger" <djberg96@...>
Date: 2006-10-28 19:26:51 UTC
List: ruby-core #9351
Hi all,

Since David mentioned that RCRchive is being reworked, I thought I'd propose
this here.

Abstract:
   Add the Module#method_aliased and Method#singleton_method_aliased hooks.

Problem:
   There is currently no hook to determine whether or not a method has been
   aliased.  In some circumstances a user may want to ensure that the
aliased
   methods for their class are automatically remapped if the original method
is
   redefined.

Proposal:
   The ability to automatically remap aliased methods can be accomplished if
   we add the Module#method_aliased and Method#singleton_method_aliased
methods.

   Consider the following example:

   class Foo
      def bar; "bar"; end
      alias baz bar
   end

   puts Foo.new.bar => "bar"
   puts Foo.new.baz => "bar"

   Then later on, you decide to re-open the Foo#bar method:

   class Foo
      def bar
         "test"
      end
   end

   puts Foo.new.bar => "test"
   puts Foo.new.baz => "bar"  # Alias doesn't get remapped

   With our hypothetical Module#method_aliased method, a user could
   automatically remap any aliases by combining it with Module#method_added:

   class Foo
      @@aliases = Hash.new{ |hash, key| hash[key] = [] }

      def self.method_aliased(new_id, old_id)
         new_name = new_id.id2name
         old_name = old_id.id2name

         unless @@aliases[old_name].include?(new_name)
            @@aliases[old_name] << new_name
         end
      end

      def self.method_added(id)
         return unless @@aliases.keys.include?(id.id2name)
         @@aliases.each{ |method, aliases|
            aliases.each{ |a|
               alias_method a.to_sym, id
            }
         }
      end

      def bar
         "bar"
      end

      alias baz bar
   end

   puts Foo.new.bar => "bar"
   puts Foo.new.baz => "bar"

   class Foo
      def bar
         "test"
      end
   end

   puts Foo.new.bar => "test"
   puts Foo.new.baz => "test"

Analysis:
   No incompatibilities.  Requires minimal code changes to object.c and
   eval.c.

Implementation:
--- object.orig 2006-10-28 10:19:19.000000000 -0600
+++ object.c    2006-10-28 13:16:08.000000000 -0600
@@ -493,7 +493,6 @@
     return Qfalse;
 }

-
 /*
  * Document-method: singleton_method_added
  *
@@ -2570,7 +2569,7 @@
     rb_define_private_method(rb_cModule, "method_added", rb_obj_dummy, 1);
     rb_define_private_method(rb_cModule, "method_removed", rb_obj_dummy,
1);
     rb_define_private_method(rb_cModule, "method_undefined", rb_obj_dummy,
1);
-
+    rb_define_private_method(rb_cModule, "method_aliased", rb_obj_dummy,
2);

     rb_define_method(rb_mKernel, "nil?", rb_false, 0);
     rb_define_method(rb_mKernel, "==", rb_obj_equal, 1);
@@ -2618,6 +2617,7 @@
     rb_define_private_method(rb_mKernel, "singleton_method_added",
rb_obj_dummy, 1);
     rb_define_private_method(rb_mKernel, "singleton_method_removed",
rb_obj_dummy, 1);
     rb_define_private_method(rb_mKernel, "singleton_method_undefined",
rb_obj_dummy, 1);
+    rb_define_private_method(rb_mKernel, "singleton_method_aliased",
rb_obj_dummy, 2);

     rb_define_global_function("sprintf", rb_f_sprintf, -1); /* in sprintf.c*/
     rb_define_global_function("format", rb_f_sprintf, -1);  /* in sprintf.c
*/
@@ -2742,4 +2742,5 @@
     id_eql = rb_intern("eql?");
     id_inspect = rb_intern("inspect");
     id_init_copy = rb_intern("initialize_copy");
+
 }

--- eval.orig   2006-10-28 10:19:08.000000000 -0600
+++ eval.c      2006-10-28 13:17:42.000000000 -0600
@@ -408,6 +408,7 @@
 static ID init, eqq, each, aref, aset, match, missing;
 static ID added, singleton_added;
 static ID __id__, __send__, respond_to;
+static ID alias_added, singleton_alias_added;

 #define NOEX_TAINTED 8
 #define NOEX_SAFE(n) ((n) >> 4)
@@ -2163,9 +2164,11 @@
                                    NOEX_WITH_SAFE(orig->nd_noex)));
     if (singleton) {
        rb_funcall(singleton, singleton_added, 1, ID2SYM(name));
+   rb_funcall(singleton, singleton_alias_added, 2, ID2SYM(name),
ID2SYM(def));
     }
     else {
        rb_funcall(klass, added, 1, ID2SYM(name));
+   rb_funcall(klass, alias_added, 2, ID2SYM(name), ID2SYM(def));
     }
 }

@@ -7884,7 +7887,9 @@
     match = rb_intern("=~");
     missing = rb_intern("method_missing");
     added = rb_intern("method_added");
+    alias_added = rb_intern("method_aliased");
     singleton_added = rb_intern("singleton_method_added");
+    singleton_alias_added = rb_intern("singleton_method_aliased");
     removed = rb_intern("method_removed");
     singleton_removed = rb_intern("singleton_method_removed");
     undefined = rb_intern("method_undefined");

In This Thread

Prev Next