[kupfer: 4/51] grouping: Support sorting lexically



commit 4c405f2cd56e01e05c8b6dc8e417ff84a65cc5ef
Author: Ulrik Sverdrup <ulrik sverdrup gmail com>
Date:   Mon Jan 4 17:50:46 2010 +0100

    grouping: Support sorting lexically
    
    We cannot preserve the original order in the grouped source (?), so we
    can lexically sort the source. All non-grouping leaves are produced
    in-order before the grouping leaves.

 kupfer/obj/grouping.py |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)
---
diff --git a/kupfer/obj/grouping.py b/kupfer/obj/grouping.py
index f58ed07..dc9223a 100644
--- a/kupfer/obj/grouping.py
+++ b/kupfer/obj/grouping.py
@@ -7,6 +7,7 @@ import time
 import weakref
 
 from kupfer.objects import Leaf, Source
+from kupfer import utils
 
 __author__ = ("Karol BÄ?dkowski <karol bedkowsk+gh gmail com>, "
               "Ulrik Sverdrup <ulrik sverdrup gmail com>" )
@@ -102,10 +103,15 @@ class GroupingSource (Source):
 						merge_groups((slot, value), (slot2, value2))
 		self.output_debug("MERGED ALL", time.time() - st)
 
+		if self.should_sort_lexically():
+			sort_func = utils.locale_sort
+		else:
+			sort_func = lambda x: x
+
 		keys = set(groups)
 		keys.difference_update(redundant_keys)
-		for key in keys:
-			yield self._make_group_leader(groups[key])
+		for leaf in sort_func(self._make_group_leader(groups[K]) for K in keys):
+			yield leaf
 		self.output_debug("END", time.time() - st)
 
 	@classmethod



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]