PDA

View Full Version : strange thing w/ array.map


clem_c_rock
January 25th, 2007, 02:02 AM
Hello,

I'm writing a method that builds rss and atom feeds and I've noticed something strange when I try updating the content array by using a map.

I'm new to ruby and must confess that I don't know how array maps work so well.

I am formatting some of the rss content array by updating it's contents w/ a map like so:


@entities = Space.find :all

@new_entities = @entities.map do |entity|
open_closed = entity.complete? ? "[x] " : "[ ] "
entity.title = open_closed + entity.title
entity.title += (' due on ' + local_date_time(entity.due_on)) if entity.due_on
entity.title += " (#{entity.status_title})"
end if @entities


then when I try to use the @new_entities array in the feed, I get an error


for entity in @new_entities #-->>error!
xml.item do
xml.title(entity.title)
xml.description(entity.description)
xml.pubDate(entity.date.strftime("%a, %d %b %Y %H:%M:%S %z"))
xml.link("http://www.recentrambles.com/pragmatic/view/" + entity.id.to_s)
xml.guid("http://www.recentrambles.com/pragmatic/view/" + entity.id.to_s)
end
end


but, if I use the original @entities array it works perfectly

for entity in @entities #-->>works!
xml.item do
xml.title(entity.title)
xml.description(entity.description)
xml.pubDate(entity.date.strftime("%a, %d %b %Y %H:%M:%S %z"))
xml.link("http://www.recentrambles.com/pragmatic/view/" + entity.id.to_s)
xml.guid("http://www.recentrambles.com/pragmatic/view/" + entity.id.to_s)
end
end



How, exactly, is that @entities array getting updated by the map?

Thanks for your help!

clem_c_rock
January 25th, 2007, 02:41 PM
figured it out.

I didn't realize that by looping through the contents and making changes to entity.title, I was actually changing the array structure.

This is great stuff. All hail Ruby!

rob
January 27th, 2007, 05:11 AM
Ruby's great like that. Some errors that its intuitiveness causes actually bring out errors in your program that you may not otherwise have caught.