indent.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  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. data = re.sub("(\n(?:(?:( *)\* ?(?:[^\n]*))\n?)+)", '\r\n<ul style="margin-top: 10px; margin-bottom: 10px;" id="list">' + end + '</ul>\r\n', data, 1)
  20. else:
  21. break
  22. while 1:
  23. b = re.search("(<\/h[0-9]>|\n)( +)", data)
  24. if b:
  25. result = b.groups()
  26. up = re.sub(' ', '<span id="in"></span>', result[1])
  27. if re.search('<\/h[0-9]>', result[0]):
  28. data = re.sub("(?P<in>\/h[0-9]>)( +)", '\g<in>' + up, data, 1)
  29. else:
  30. data = re.sub("(?:\n)( +)", '<br>' + up, data, 1)
  31. else:
  32. break
  33. return data