{% macro maybeLinkData(data) -%} {% set args = { "link" : { "url" : { "content_id" : null, "type" : "EXTERNAL", "href" : "#" }, "open_in_new_tab" : false, "no_follow" : false }, "styles" : {}, "class" : "", "noLinkTag" : "div" } %} {% do args.update(data) %} {% set href = args.link.url.href %} {% set href = args.link.url.type == "EMAIL_ADDRESS" ? "mailto:" + href : href %} {% set tag = href ? "a": (args.noLinkTag || "div") %} {% set attr = {} %} {% do args.class ? attr.update({"class" : args.class}) : '' %} {% do args.styles ? attr.update({"style" : inlineDynamicStyles(args.styles) }) : '' %} {% if href %} {% do attr.update({"href" : href}) %} {% do args.link.open_in_new_tab ? attr.update({"target" : '_blank'}) : '' %} {% do args.link.no_follow ? attr.update({"rel" : 'nofollow'}) : '' %} {% endif %} {% set res = { "tag" : tag, "attr" : attr } %} {{ res|tojson }} {%- endmacro %} {% macro maybeLink(data) -%} {% set data = maybeLinkData(data)|fromjson %} <{{ data.tag }} {{ data.attr|xmlattr }}>{{ caller() }} {%- endmacro %}