NinjaCipher:-*-:ro60

ruby tip

Here is a quick ruby function that takes a array of objects
(could be the resultset from a find call) and a member name
and creates a multimap collection (basically a hash of arrays)
that can then be easily displayed in a threaded manor.

def segment_by_field(objs,member='unthreaded')
  retVals = Hash.new
  prev_val = nil
  for obj in objs
    if member != 'unthreaded'
      current_val = obj.send(member)
      if prev_val.nil? or !retVals.has_key?(current_val)
        retVals[current_val] = Array.new
      end
      prev_val = current_val
      retVals[prev_val] << obj
    else
      retVals[member] = Array.new unless retVals.has_key?(member)
      retVals[member] << obj
    end
  end
  return retVals
end
Del.icio.us Digg BlinkList Furl Ma.gnolia Reddit Spurl

Comments are closed.