From: Leslie Viljoen Date: 2006-05-07T03:49:44+09:00 Subject: Re: Rough idea regarding modification of core classes On 5/6/06, Eric Hodel wrote: > On May 5, 2006, at 3:20 PM, Tanner Burson wrote: > > > After reading the sharp knives and glue thread, my head started > > spinning > > around some ways to minimize or localize the modifications to core > > classes. > > This is what I came up with, it's obviously rough, not-all- > > inclusive, and > > has some fairly obvious and severe drawbacks, but none-the-less I > > thought > > I'd share my 20 minutes of fiddling in the hopes of sparking some > > conversation if nothing else. > > [...] > > Ruby does all that with #extend. > > module Meta > > attr_reader :something > > def self.extended(o) > o.instance_variable_set :@something, 'Hello' > end > > def test_meta > puts 'Tested Meta!' > end > > end > > > some_string = String.new > > some_other_string = String.new > > > some_string.extend Meta > > some_string.test_meta # -> "Tested Meta!" > > puts some_string.something # -> "Hello" > > > > some_other_string.test_meta #--> "No method error" This is cool, very similar to the "adding functionality to the strings passed to me" idea (in the glue thread), except it's cleaner than having a def inside every function that wants an extended string. Now, is there a clever way to extend all strings passed to any methods of a specific class? Les