quotes.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  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. clean_lines += quote
  18. clean_lines.append('[/quote]')
  19. clean_lines.append('')
  20. in_quote = False
  21. quote_author = None
  22. quote = []
  23. clean_lines.append(line)
  24. elif line.startswith('>'):
  25. in_quote = True
  26. if clean_lines and clean_lines[-1].startswith('@'):
  27. quote_author = clean_lines.pop(-1)
  28. quote.append(line[1:].lstrip())
  29. else:
  30. clean_lines.append(line)
  31. return convert_quotes_to_bbcode('\n'.join(clean_lines))