35 lines
1.2 KiB
Python
35 lines
1.2 KiB
Python
import re
|
|
from typing import Optional
|
|
|
|
|
|
def render_template(template: str, **kwargs) -> str:
|
|
result = template
|
|
for key, value in kwargs.items():
|
|
result = result.replace("{" + key + "}", str(value))
|
|
remaining = re.findall(r'\{(\w+)\}', result)
|
|
for var in remaining:
|
|
result = result.replace("{" + var + "}", "")
|
|
return result
|
|
|
|
|
|
def parse_link_text(text: str) -> str:
|
|
text = re.sub(r'\[([^\]]+)\]\(tel:[^\)]+\)', r'\1', text)
|
|
text = re.sub(r'\[([^\]]+)\]\(mailto:[^\)]+\)', r'\1', text)
|
|
text = re.sub(r'\[([^\]]+)\]\(https?://[^\)]+\)', r'\1', text)
|
|
return text
|
|
|
|
|
|
def make_clickable_links(text: str, phone_1: str = "", phone_2: str = "",
|
|
email: str = "", email_subject: str = "") -> str:
|
|
phone_1_raw = re.sub(r'[^\d+]', '', phone_1)
|
|
phone_2_raw = re.sub(r'[^\d+]', '', phone_2)
|
|
email_encoded = email.replace(' ', '%20')
|
|
subject_encoded = email_subject.replace(' ', '%20')
|
|
|
|
text = text.replace("{phone_1_raw}", phone_1_raw)
|
|
text = text.replace("{phone_2_raw}", phone_2_raw)
|
|
text = text.replace("{email_encoded}", email_encoded)
|
|
text = text.replace("{email_subject_encoded}", subject_encoded)
|
|
|
|
return text
|