{# A collection of macros used throughout the site. #} {# The renderMenu macro recursively iterates through a menu data structure and renders it as a nested menu. For example, the following YAML structure: label: Main sub: - label: Sub1 url: "http://example.org/sub" - label: Sub2 url: "http://example.org/something-else" ...renders as: Main
#} {%- macro renderMenu(menu) -%} {%- if menu.url -%}{%- endif -%} {{ menu.label }} {%- if menu.url -%}{%- endif -%} {%- if menu.sub -%} {%- endif -%} {%- endmacro -%} {# If the first top-level element of the given page is a level-1 heading, return its text content. #} {%- set extractPageHeading = (page) -> page.body[0].type == 'h1' ? page.body[0].children : null -%} {# If the first top-level element of the given page is a level-1 heading, remove it, and return the remaining body; otherwise, return the body unchanged. #} {%- set removePageHeading = (page) -> (page.body[0].type == 'h1' ? page.body|slice(1) : page.body)|default(page|str) -%} {# Get a suitable title for the page. #} {%- set pageTitle = (page) -> (page.meta.title ? page.meta.title|str : null) |default(extractPageHeading(page)) |default(page.props.name|capitalize) |default(page.body[0]|str|capitalize) |default("{{ page.meta.excerpt }}
{%- else -%}{{ removePageHeading(page)|ellipse(250) }}
{% endif -%}