Hi! Thank you for stepping in! On Tue, 13 Mar 2001, Dieter Maurer wrote:
but a colleague of mine, Dennis Otkidach suggested more general approach - to make a patch that will allow to pass a generic function to sort(), A very good idea!
However, you should note:
* "dtml-in" does not sort single values, but tuples ( sort_values, client), where "sort_values" is either a single value or a list of values and "client" is the current element.
Your sort function must handle this case
I know it! From time to time I scan and rescan Zope sources just for better understanding and finding of hidden treasures (there are many :).
* "dtml-in" supports multiple sort keys. I would expect to have a comparison function for each sort key, with the global comparison function a composition of that for the sort keys.
Thus, you can combine a locale sensitive sort with (e.g.) a date sort.
But of course. Or simulating SQL "ORDER BY date DESC, title ASC" :) But I do not see a way to do it in generic fashion. I can write a specific comparison function for every specific case, but how I can combine few comparison functions into one in a generic way? Imagine a have a string comparison str_cmp, and date comparison date_cmp functions. Now I need to pass to dtml-in a combined function. Should it be a Python Script that just calls str_cmp and date_cmp in turn, something like result = str_cmp(s1[0], s2[0]) if result: return result # if not equal - order by first key result = date_cmp(s1[1], s2[1]) # else order by second key return result Oleg. ---- Oleg Broytmann http://www.zope.org/Members/phd/ phd@phd.pp.ru Programmers don't die, they just GOSUB without RETURN.