23 lines
829 B
Python
23 lines
829 B
Python
import re
|
|
|
|
_LINK_WITH_LABEL_PATTERN: re.Pattern[str] = re.compile(r'\[(?P<label>[^\[\]]+?)\]\s*\{link\}', re.IGNORECASE)
|
|
_LINK_PLACEHOLDER_PATTERN: re.Pattern[str] = re.compile(r'\{link\}', re.IGNORECASE)
|
|
_LINK_CLASS = 'tg-link'
|
|
|
|
|
|
def _replace_label_placeholder(match: re.Match[str]) -> str:
|
|
label = match.group('label')
|
|
return f'<a class="{_LINK_CLASS}">{label}</a>'
|
|
|
|
|
|
def prepare_creative_text_html(source: str) -> str:
|
|
"""Normalize Telegram HTML and replace {link} placeholder with custom elements.
|
|
|
|
Supported patterns:
|
|
- ``{link}`` → ``<a class="tg-link"></a>``
|
|
- ``[Label]{link}`` → ``<a class="tg-link">Label</a>``
|
|
"""
|
|
|
|
with_labels = _LINK_WITH_LABEL_PATTERN.sub(_replace_label_placeholder, source)
|
|
return _LINK_PLACEHOLDER_PATTERN.sub(f'<a class="{_LINK_CLASS}"></a>', with_labels)
|