From: Eric Hodel Date: 2006-05-09T05:20:13+09:00 Subject: Re: Rough idea regarding modification of core classes On May 6, 2006, at 11:49 AM, Leslie Viljoen wrote: > 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? Use delegate.rb. -- Eric Hodel - drbrain@segment7.net - http://blog.segment7.net This implementation is HODEL-HASH-9600 compliant http://trackmap.robotcoop.com