String.join()?

I’ve seen some example code that uses what appears to be a string
object with a join method, for example:

(from “rubyisms in rails”)

def category_links(article)
“Posted in " + article.categories.collect { |c|
link_to c.name,
{ :controller=>“articles”, :action => “category”,
:id => c.permalink },
:rel => “tag”
}.join(”, ")
end

But I don’t see api docs in rails or ruby for a join method like this
(obviously there are other join methods).

It appears that this might be a conditional concat (but perhaps
not).

anyone familiar with this?

Joe at CodeGear wrote:

(from “rubyisms in rails”)

Tell such authors not to squander Ruby’s incredibly expressive power
by writing run-on statements. They wouldn’t do that in prose
(right??;).

def category_links(article) "Posted in " + article.categories.collect { |c| link_to c.name, { :controller=>"articles", :action => "category", :id => c.permalink }, :rel => "tag" }.join(", ") end

That is this:

article.categories.collect{ blah blah blah }.join(', ')

Array#collect returns an Array, and join() makes it into a string.
That’s all.


Phlip
http://c2.com/cgi/wiki?ZeekLand ← NOT a blog!!

On 1/29/07, Joe at CodeGear [email protected] wrote:

          :id => c.permalink },

anyone familiar with this?

It’s an instance method of Array:

irb(main):007:0> Array.instance_methods.grep /join/
=> [“join”]


Zack C.
http://depixelate.com