summaryrefslogtreecommitdiffstats
path: root/src/fringlib/fringdata.py
diff options
context:
space:
mode:
authorFrederic Back <fredericback@gmail.com>2006-10-03 10:33:15 +0000
committerFrederic Back <fredericback@gmail.com>2006-10-03 10:33:15 +0000
commit9f5926851fab9e3e5129a62efd1044214691b531 (patch)
treed74a422369d1ee347e0efd33416f8e351c612d05 /src/fringlib/fringdata.py
parentd93cf5bd93c4a51f9938164f3879ea6e3f630a9c (diff)
* Cleaned the walker, moved some functions back to the
sumlist. git-svn-id: file:///home/lennart/svn/public/fring/trunk@61 d0d2c35f-0a1e-0410-abeb-dabff30a67ee
Diffstat (limited to 'src/fringlib/fringdata.py')
-rw-r--r--src/fringlib/fringdata.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/fringlib/fringdata.py b/src/fringlib/fringdata.py
new file mode 100644
index 0000000..a9bea69
--- /dev/null
+++ b/src/fringlib/fringdata.py
@@ -0,0 +1,58 @@
+import gc
+
+#==================================================================================
+class SumList:
+
+ def __init__(self, name, children, size):
+ self.name = name
+ self.children = children
+ if self.children is None: self.children = []
+ self.size = size
+
+ def append_child(self, sumlist):
+ self.children.append(sumlist)
+ self.size += sumlist.size
+
+ def printout(self, tab=0 ):
+ print " "*tab,"%s (%i)"%(sumlist.name,sumlist.size)
+ if not sumlist.children: return
+ if tab > 1: return
+ for e in sumlist.children:
+ e.printout(tab+1)
+
+ def sort(self):
+ self.children.sort(self.__cmp_fn)
+
+ def sort_by_size(self):
+ self.children.sort(self.__cmp_by_size)
+
+ def __cmp_by_size(self, b, a ):
+ return cmp(a[2], b[2]) # compare sizes
+
+ def __cmp_fn(self, b, a ):
+ """ a and b are tuples describing a directory tree. Compare first by directory
+ status, then by size, and finally by name. """
+
+ a_dir = a[1] != None
+ b_dir = b[1] != None
+
+ if a_dir and not b_dir:
+ return 1
+ elif b_dir and not a_dir:
+ return -1
+ elif a_dir and b_dir:
+ return cmp(a[2], b[2]) # compare sizes
+ else:
+ return cmp(a[0], b[0]) # compare names
+
+ def __getitem__(self, key):
+ if key == 0: return self.name
+ if key == 1: return self.children
+ if key == 2: return self.size
+
+ def __len__(self):
+ return 3
+
+
+
+