[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