#1
  1. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Mar 2003
    Posts
    174
    Rep Power
    12

    Strange thing w/ array.map


    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:

    Code:
    @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

    Code:
    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
    Code:
    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!
  2. #2
  3. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Mar 2003
    Posts
    174
    Rep Power
    12
    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!

IMN logo majestic logo threadwatch logo seochat tools logo