class ReportRegistry(object): def __init__(self, reps): self.reps = reps self.prefix_tree = PrefixTree(reps.keys()) def get(self, prefix): candidates = self.prefix_tree.from_prefix(prefix) if len(candidates) == 1: return self.reps[candidates[0]] def __getitem__(self, name): return self.reps[name] def add(self, name, factory): if name in self.reps: raise Exception.new("Report %s already exists" % name) self.reps[name] = factory self.prefix_tree.insert(name)
def __init__(self, reps): self.reps = reps self.prefix_tree = PrefixTree(reps.keys())