quotes.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from __future__ import unicode_literals
  2. def convert_quotes_to_bbcode(post):
  3. if not (post[0] == '>' or '\n>' in post):
  4. return post
  5. clean_lines = []
  6. in_quote = False
  7. quote_author = None
  8. quote = []
  9. for i, line in enumerate(post.splitlines() + ['']):
  10. if in_quote:
  11. if line.startswith('>'):
  12. quote.append(line[1:].lstrip())
  13. else:
  14. clean_lines.append('')
  15. if quote_author:
  16. clean_lines.append('[quote="%s"]' % quote_author)
  17. else:
  18. clean_lines.append('[quote]')
  19. clean_lines += quote
  20. clean_lines.append('[/quote]')
  21. clean_lines.append('')
  22. in_quote = False
  23. quote_author = None
  24. quote = []
  25. clean_lines.append(line)
  26. elif line.startswith('>'):
  27. in_quote = True
  28. if clean_lines and clean_lines[-1].startswith('@'):
  29. quote_author = clean_lines.pop(-1)
  30. quote.append(line[1:].lstrip())
  31. else:
  32. clean_lines.append(line)
  33. return convert_quotes_to_bbcode('\n'.join(clean_lines))