finalize.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import re
  2. from django.utils.translation import gettext as _
  3. QUOTE_HEADER_RE = re.compile(
  4. r"""
  5. <div class="quote-heading">(?P<title>.*?)</div>
  6. """.strip(),
  7. re.IGNORECASE | re.MULTILINE | re.DOTALL,
  8. )
  9. SPOILER_REVEAL_BTN = '<button class="spoiler-reveal" type="button"></button>'
  10. def finalize_markup(post):
  11. post = QUOTE_HEADER_RE.sub(replace_quote_headers, post)
  12. post = replace_spoiler_reveal_buttons(post)
  13. return post
  14. def replace_quote_headers(matchobj):
  15. title = matchobj.group("title")
  16. if title:
  17. quote_title = _("%(title)s has written:") % {"title": title}
  18. else:
  19. quote_title = _("Quoted message:")
  20. return '<div class="quote-heading">%s</div>' % quote_title
  21. def replace_spoiler_headers(matchobj):
  22. title = matchobj.group("title")
  23. if title:
  24. spoiler_title = _("%(title)s:") % {"title": title}
  25. else:
  26. spoiler_title = _("Spoiler:")
  27. return '<div class="spoiler-heading">%s</div>' % spoiler_title
  28. def replace_spoiler_reveal_buttons(post):
  29. final_btn = SPOILER_REVEAL_BTN.replace("></", ">%s</" % _("Reveal spoiler"))
  30. return post.replace(SPOILER_REVEAL_BTN, final_btn)