From: "juan pedro meriƱo" Date: 2006-12-20T01:40:43+09:00 Subject: Re: ruby puzzle: Group candies by unique record fields ruby soppourt a cron? can ruby have a cron for his can control? how i use ruby for create a system a control of user? 2006/12/19, Brad Phelan : > Woga Swoga wrote: > > I have an list of objects (Candy) and each object has two fields > > (Candy.color, Candy.taste). I would like to display the candies but > > group them based on the fields (display a header for each group). The > > problem is I don't know how many colors or tastes are in any particular > > list of candies. > > > > This is what I have for input: > > > > * Candy <-- hash list already pre-sorted by "group" > > * group <-- variable contains either "color" or "taste" > > > > Can anyone come up with a ruby code snipet that will use the "group" > > variable to extract out the group labels (unique values of the color or > > tate field), and then dump out the Candy list by group. > > > > Really appreciate your help! > > > > require 'yaml' > > @candies = [ > { :name => 'a', :color => "blue", :taste => "good" }, > { :name => 'b',:color => "blue", :taste => "yuck" }, > { :name => 'c',:color => "red", :taste => "ok" }, > { :name => 'd',:color => "blue", :taste => "yuck" }, > { :name => 'e',:color => "green", :taste => "good" }, > { :name => 'f',:color => "green", :taste => "yuck" } > ] > > def print_candies_by(group) > groups={} > @candies.each do |candy| > key = candy[group] > groups[key] = [] unless groups[key] > groups[key] << candy > end > > puts "##########'" > puts YAML.dump groups > puts "##########'" > end > > > print_candies_by :taste > print_candies_by :color > > ---------------- > ##########' > --- > good: > - :taste: good > :name: a > :color: blue > - :taste: good > :name: e > :color: green > yuck: > - :taste: yuck > :name: b > :color: blue > - :taste: yuck > :name: d > :color: blue > - :taste: yuck > :name: f > :color: green > ok: > - :taste: ok > :name: c > :color: red > ##########' > ##########' > --- > green: > - :taste: good > :name: e > :color: green > - :taste: yuck > :name: f > :color: green > blue: > - :taste: good > :name: a > :color: blue > - :taste: yuck > :name: b > :color: blue > - :taste: yuck > :name: d > :color: blue > red: > - :taste: ok > :name: c > :color: red > ##########' > > > -- > Brad Phelan > http://xtargets.com > >