{%- import 'macros/content_renderer.html' as content_renderer with context -%}
{%- import 'macros/renderers.html' as renderm with context -%}
{%- macro resolve(link) -%}
{%- set ns = namespace(alias=link, objtype=link.type, obj=None) -%}
{%- if ns.objtype == "tag" -%}
{%- set ns.obj = link.tag -%}
{%- elif ns.objtype == "slug" -%}
{%- set ns.obj = link.page -%}
{%- elif ns.objtype == "file" -%}
{%- set ns.obj = link.file -%}
{%- endif -%}
{%- if link.alias -%}
{%- call(resolvedlink, objtype, obj) resolve(link.alias) -%}
{%- set ns.alias = resolvedlink -%}
{%- if objtype -%}
{%- set ns.objtype = objtype -%}
{%- set ns.obj = obj -%}
{%- endif -%}
{%- endcall -%}
{%- endif -%}
{{- caller(ns.alias, ns.objtype, ns.obj) -}}
{%- endmacro -%}
{%- macro render(link, content, lang, attr = None, title = None) -%}
{%- call(resolvedlink, objtype, obj) resolve(link) -%}
{%- set ns = namespace(relation=None, url=resolvedlink.urlwithanchor) -%}
{%- if resolvedlink.is_external -%}
{%- set ns.relation = "external" -%}
{%- else -%}
{%- set ns.relation = "internal" -%}
{%- if resolvedlink.url|length -%}
{%- set ns.url = [siteurl, ns.url]|join("/") -%}
{%- endif -%}
{%- endif -%}
{%- set target = config.link_target[ns.relation] -%}
{%- if content is string or content is none -%}
{%- if content is string and content|length -%}
{{ renderm.softbreak_span(content) }}
{%- else -%}
{{ renderm.softbreak_span(obj.title) }}
{%- endif -%}
{%- else -%}
{{ content_renderer.render_blocks_or_inlines(content, lang) }}
{%- endif -%}
{%- endcall -%}
{%- endmacro -%}
{%- macro render_tag(tag, lang) -%}
{%- set attr = {"classes": ["tag-link"], "style": {"--category-color": tag.color}} -%}
{{ render(tag.link,None,lang,attr=attr,title=tag.name) }}
{%- endmacro -%}