from medium_parser import jinja_env_debug
def raw_render(**kwargs):
for key, value in kwargs.items():
if isinstance(value, str):
kwargs[key] = f"{{% raw %}}{value}{{% endraw %}}"
return kwargs
def parse_markups(markups: list[str]):
markups_out = []
for markup in markups:
if markup["type"] == "A":
if markup["anchorType"] == "LINK":
template = jinja_env_debug.from_string(
'{{text}}'
)
template = template.render(
raw_render(
rel=markup.get("rel", ""),
title=markup.get("title", ""),
href=markup["href"],
)
)
elif markup["anchorType"] == "USER":
template = jinja_env_debug.from_string(
'{{text}}'
)
template = template.render(userId=markup["userId"])
else:
continue
elif markup["type"] == "STRONG":
template = "{{text}}"
elif markup["type"] == "EM":
template = "{{text}}"
elif markup["type"] == "CODE":
template = (
"{{text}}"
)
else:
continue
template = jinja_env_debug.from_string(template)
markup["template"] = template
markups_out.append(markup)
return markups_out