#!/usr/bin/python # -*- coding: UTF-8 -*- import os, re, string, sys class Tree: def __init__(self): self.link = None self.branches = {} def html(self): if not self.branches: return '' res = "\n" return res def __repr__(self): res = '' #for (k, v) in self.branches.iteritems(): for k in sorted(self.branches.keys()): v = self.branches[k] res += k if v.link: res += ' => ' + v.link res += "\n" res += "\n".join([' ' + l for l in repr(v).splitlines()]) + "\n" return res def setlink(self, p): if self.link is None: self.link = p else: raise RuntimeError(p) def branch(self, p): return self.branches.setdefault(p, Tree()) res = Tree() def add(path, keywords, tree=res): if len(keywords)==0: tree.setlink(path) else: p = keywords[0] add(path, keywords[1:], tree.branch(p)) def process(filename): match = re.compile('^\s*', re.S|re.M).search(open(filename).read()) if match: for line in match.group(1).splitlines(): # filename hat die Form './…' ⇒ also erstes Zeichen abschneiden add(filename[1:], re.split('\s\|\s', line.strip())) for root, dirs, files in os.walk('.'): for f in files: process(os.path.join(root, f)) try: of = file('sitemap/sitemap.inc', 'w') except RuntimeError, e: print 'RuntimeError', e sys.exit() print >> of, res.html() print res