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