diff --git a/libsaria/trees.py b/libsaria/trees.py index aca83017..9cda1e0c 100644 --- a/libsaria/trees.py +++ b/libsaria/trees.py @@ -3,15 +3,17 @@ from libsaria.path import sep class Tree(dict): - def __init__(self, value = None): - #self.children = dict() - self.value = value + def __init__(self): + dict.__init__(self) + + def __disp__(self, level): + return "%s (%s)", (child, self[child].value) def disp(self, level = 0): - #children = self.children for child in self: - space = " " * level - print space, "%s (%s)" % (child, self[child].value) + space = " " * level + fmt, vals = self.__disp__(level) + print space, fmt % vals self[child].disp(level + 1) def walk(self): @@ -26,18 +28,18 @@ class Tree(dict): for res in child.walk(): yield [key] + res - def insert(self, path, values=[]): + def __insert__(self, path): path_part = path[0] - value = path_part - if len(values) > 0: - value = values[0] - values = values[1:] - child = self.get(path_part, None) + child = self.get(path_part, None) if child == None: - child = self.__class__(value) + child = self.__class__() self[path_part] = child + return child + + def insert(self, path): + child = self.__insert__(path) if len(path) > 1: - child.insert(path[1:], values) + child.insert(path[1:]) class FSTree(Tree):