From: Chad Fowler Date: 2003-09-09T11:13:06+09:00 Subject: Re: YAML Patch On Tue, 9 Sep 2003, Jim Weirich wrote: # # I'm not sure an extensible %_{} syntax will solve the basic problem. # Suppose my library defines JimData to be %j{jim data goes here} and John # wrote a library where %j{john data goes here}. Since defining %j{} # seems to be a global decision, we would have two libraries that couldn't # /ever/ be used in the same Ruby program. We have nice modules to keep # our name spaces clean, and then we start using a name space with only 62 # possibilities (I'm counting upper/lower case letters and digits). # I wonder if Rite will support Selector Namespaces( http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/26422 ). These might provide part of the solution to the problem you're outlining (not to mention making things like David Blacks' Ruby Behaviors module viable). # I think an extensible %_{} syntax could only fly if we were able to say # "Over /this/ section of code, %j will mean JimData, and on /that/ # section of code %j will mean JohnData. In other words, %_{} needs # scoping rules. And I'm not convinced the value added by extensible %_{} # is more than the added complexity. # I guess it's very similar to the problem we already run into with being able to redefine classes at runtime. # I suspect its easier to just say JimData.new %{...}. # Agreed, but this is fun to talk about. :)