indent.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import re
  2. def indent(data):
  3. while 1:
  4. m = re.search("(\n(?:(?:( *)\* ?(?:((?!\n|\|\|).)*))\n?)+)", data)
  5. if m:
  6. end = m.groups()[0]
  7. while 1:
  8. isspace = re.search("\n( *)\* ?([^\n]*)", end)
  9. if isspace:
  10. spacebar = isspace.groups()
  11. if len(spacebar[0]) == 0:
  12. up = 20
  13. else:
  14. up = len(spacebar[0]) * 20
  15. end = re.sub("\n( *)\* ?([^\n]*)", '<li style="margin-left: ' + str(up) + 'px">' + spacebar[1] + '</li>', end, 1)
  16. else:
  17. break
  18. end = re.sub("\n", '', end)
  19. if re.search(' <\/li>$', end):
  20. test = ' '
  21. else:
  22. test = ''
  23. data = re.sub("(\n(?:(?:( *)\* ?(?:((?!\n|\|\|).)*))\n?)+)", '<ul style="margin-top: 10px; margin-bottom: 10px;" id="list">' + end + '</ul>' + test, data, 1)
  24. else:
  25. break
  26. while 1:
  27. b = re.search("(<\/h[0-9]>|\n)( +)", data)
  28. if b:
  29. result = b.groups()
  30. up = re.sub(' ', '<span id="in"></span>', result[1])
  31. if re.search('<\/h[0-9]>', result[0]):
  32. data = re.sub("(?P<in>\/h[0-9]>)( +)", '\g<in>' + up, data, 1)
  33. else:
  34. data = re.sub("(?:\n)( +)", '<br>' + up, data, 1)
  35. else:
  36. break
  37. return data