[TxMt] Re: run_script.rb
    Charles Turner 
    vze26m98 at optonline.net
       
    Mon Aug 25 03:12:44 UTC 2008
    
    
  
On Sun, 24 Aug 2008 20:08:48 -0500, James Gray wrote:
> We need something that works in both places, so we need to check for  
> the new 1.9 method lines and map() over it instead, if present.  The  
> code would be something like:
> 
>    str.send(str.respond_to?(:lines) ? :lines, :to_s).map { … }
> 
> Hope that helps.
Hi James-
Thanks for your suggestion. The solution is a bit tricky, though. I 
think I have to test for String's support of :map in 1.8, because 
:each_line is supported in both 1.8 and 1.9.
In 1.8, you can do:                   a.map
but in 1.9, I think you have to do:   a.each_line.to_a.map
The next trick is sending a symbol. It looks like in 1.8 you can say 
"a.send(:map)", but the equivalent "a.send(:each_line.to_a.map)" isn't 
a valid symbol reference in Ruby.
I rewrote your suggestion as:
a.respond_to?(:map) ? a.map : a.each_line.to_a.map do |line| print line 
end
which works for 1.9, but doesn't in 1.8, I think because of the 
conditional's relation the "do" block.
Anyway, I'll keep working at it, and thanks again for the knowledge!
Best, Charles
    
    
More information about the textmate
mailing list