feat: /new_creative tg_bot
This commit is contained in:
22
src/usecase/creative/text_formatting.py
Normal file
22
src/usecase/creative/text_formatting.py
Normal file
@@ -0,0 +1,22 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user