NAME
Dotiac::DTL::Tag::regroup - The {% regroup LIST by PROPERTY as NEWVARIABLE %} tag
SYNOPSIS
Template file:
{% regroup loop by gender as grouped %}
{% for group in grouped %}
<h1>{{ group.grouper }}</h1>
{% for entry in group.list %}
<p>{{ entry }}</p>
{% endfor %}
{% endfor %}
DESCRIPTION
Regroups a LIST of objects, hashes or list by a common PROPERTY and saves it into a NEW VARIABLE.
The resulting NEW VARIABLE is a list containing hashes with a "grouper" string, containing the text which was grouped by and a "list" which contains all the objects with the same "grouper" string
This is best explained with an example. If you have this datastructure, each a blog post with a category:
Posts=>[
{title=>"I love food",text=>"I really do",category=>"My life"},
{title=>"I love TV",text=>"Even more than food",category=>"My life"},
{title=>"Simpsons",text=>"Awesome TV show",category=>"TV shows"},
{title=>"ANTM",text=>"I love this one",category=>"TV shows"},
{title=>"xkcd",text=>"The best webcomic",category=>"Webcomics"}
]
Now you want to group it by that "category" in the template:
{% regroup Posts by category as posts_grouped %}
{% for cat in posts_grouped %}
<h1>Category: {{ cat.grouper }}</h1>
{% for entry in cat.list %}
<h2>{{ entry.title }}</h2>
{{ entry.text|linebreaks }}
{% endfor %}
{% endfor %}
This will result in this rendered template:
<h1>Category: My life</h1>
<h2>I love food</h2>
<p>I really do</p>
<h2>I love TV</h2>
<p>Even more than food</p>
<h1>Category: TV shows</h1>
<h2>Simpsons</h2>
<p>Awesome TV show</p>
<h2>ANTM</h2>
<p>I love this one</p>
<h1>Category: Webcomics</h1>
<h2>xkcd</h2>
<p>The best webcomic</p>
Django has another fine example for this: http://docs.djangoproject.com/en/dev/ref/templates/builtins/#regroup
BUGS AND DIFFERENCES TO DJANGO
Django's regroup tag needs the LIST to be sorted, this implementation doesn't need it.
I don't know about Django, but here PROPERY can also contain filters.
{% regroup loop by content|length as grouped %}
SEE ALSO
http://www.djangoproject.com, Dotiac::DTL
LEGAL
Dotiac::DTL was built according to http://docs.djangoproject.com/en/dev/ref/templates/builtins/.
AUTHOR
Marc-Sebastian Lucksch
perl@marc-s.de