From: "Aleksi Niemelä" Date: 2000-06-06T14:41:02+02:00 Subject: [ruby-talk:03127] Re: Min and max? > have various classes (such as string) define a set of proc objects > that had different sort behaviors: > > > [ ...] sort &String::dict_order > [ ...] sort &String::case_insensitive_order > [ ...] sort &Number::ignore_sign_order I like this. It's easier to write new sorting orders. Could you guess how ä should be sorted? I'd like to raise another point however. I know iterators are quite handy and work well, but the separation of blocks and Procs are currently beyond me. So say, I'd like to redefine the sorting to call back for every swap made. [...].sort &String::dict_order, { print "swapped #{swapped}\n"; swapped+=1 } I don't know if this is currently possible with blocks (call and yield multiple blocks), it's surely works with plain Proc objects passed around. My second point for this mail actually touches the sort example. Is there any need to create "standard" localisation library for Ruby? I'd guess the dict_order changes per country (maybe even inside country) as does zillions of other things (default formats for dates, numbers, currencies etc.) The user could specify ./configure --enable-localisation="Spain" --set-number-format="decimal point|groups=3|spacing=''|decimals=2" --set-currency-format="..." which would set default values for one-liners by setting Locale.number_format = Locale::NumberFormat( {'decimal point'=>true, 'groups'=>3,...}) and redefining String::dict_order to Locale::Spain::dict_order. I'm not proposing any design here, just raising an issue. With proper design and base implementation in place, people could (and will) add their own settings and functionality gradually. - Aleksi