{% macro list_posts(section=false, count=0, taxonomy=false) %}
	{% if taxonomy == false and section != false %}
		{% set section = get_section(path=section~"/_index.md") %}
	{% endif %}
	{% for page in section.pages %}
		{% if loop.index > count and count != 0 %}
			{% break %}
		{% endif %}
		{{ self::print_article(page=page) }}
	{% endfor %}
{% endmacro %}

{% macro print_article(page) %}
	<article>
		<h2><a href="{{ page.permalink }}">{{ page.title }}</a></h2>
		<p>{{ page.summary | safe }}</p>
		{{ self::page_info(page=page) }}
	</article>
{% endmacro %}

{% macro page_info(page) %}
	{% if page.date %}
		<div class="info">
			<span class="date">{{ page.date }}</span>
			{%- if page.extra.author -%}
				, <span class="author">{{ page.extra.author }}</span>
			{% endif %}
			{% if page.taxonomies.categories %}
				<div class="taxonomy">
					{{ self::list_taxonomy(kind="categories", page=page.taxonomies.categories, prepend="#") }}
				</div>
			{% endif %}
		</div>
	{% endif %}
{% endmacro %}

{% macro list_taxonomy(kind, page=false, prepend="") %}
	{#
	Option `kind` must always be set and specifies the wanted taxonomy.

	If `page` is set, this macro only prints items specific for this page.
	Otherwise it prints all items. It expects `page.taxonomies.<taxonomy>`.

	Option `prepend` can be used to prepend any string to the item name.
	#}
	<ul>
		{% if page != false %}
			{% for term in page %}
				<li class="item"><a href="{{ get_taxonomy_url(kind=kind, name=term) | safe }}">{{ prepend }}{{ term }}</a></li>
			{% endfor %}
		{% else %}
			{% set taxonomy = get_taxonomy(kind=kind) %}
			{% for term in taxonomy.items %}
				<li class="item"><a href="{{ term.permalink | safe }}">{{ prepend }}{{ term.name }}</a></li>
			{% endfor %}
		{% endif %}
	</ul>
{% endmacro %}