import re def indent(data): while 1: m = re.search("(\n(?:(?:( *)\* ?(?:((?!\n|\|\|).)*))\n?)+)", data) if m: end = m.groups()[0] while 1: isspace = re.search("\n( *)\* ?([^\n]*)", end) if isspace: spacebar = isspace.groups() if len(spacebar[0]) == 0: up = 20 else: up = len(spacebar[0]) * 20 end = re.sub("\n( *)\* ?([^\n]*)", '
  • ' + spacebar[1] + '
  • ', end, 1) else: break end = re.sub("\n", '', end) if re.search(' <\/li>$', end): test = ' ' else: test = '' data = re.sub("(\n(?:(?:( *)\* ?(?:((?!\n|\|\|).)*))\n?)+)", '' + test, data, 1) else: break while 1: b = re.search("(<\/h[0-9]>|\n)( +)", data) if b: result = b.groups() up = re.sub(' ', '', result[1]) if re.search('<\/h[0-9]>', result[0]): data = re.sub("(?P\/h[0-9]>)( +)", '\g' + up, data, 1) else: data = re.sub("(?:\n)( +)", '
    ' + up, data, 1) else: break return data