47 lines
1.1 KiB
Plaintext
47 lines
1.1 KiB
Plaintext
<!--
|
|
# Jekyll Group-By-Array 0.1.0
|
|
# https://github.com/mushishi78/jekyll-group-by-array
|
|
# © 2015 Max White <mushishi78@gmail.com>
|
|
# MIT License
|
|
-->
|
|
|
|
<!-- Initialize -->
|
|
{% assign __empty_array = '' | split: ',' %}
|
|
{% assign group_names = __empty_array %}
|
|
{% assign group_items = __empty_array %}
|
|
|
|
<!-- Map -->
|
|
{% assign __names = include.collection | map: include.field %}
|
|
|
|
<!-- Flatten -->
|
|
{% assign __names = __names | join: ',' | join: ',' | split: ',' %}
|
|
|
|
<!-- Uniq -->
|
|
{% assign __names = __names | sort %}
|
|
{% for name in __names %}
|
|
|
|
<!-- If not equal to previous then it must be unique as sorted -->
|
|
{% unless name == previous %}
|
|
|
|
<!-- Push to group_names -->
|
|
{% assign group_names = group_names | push: name %}
|
|
{% endunless %}
|
|
|
|
{% assign previous = name %}
|
|
{% endfor %}
|
|
|
|
|
|
<!-- group_items -->
|
|
{% for name in group_names %}
|
|
|
|
<!-- Collect if contains -->
|
|
{% assign __item = __empty_array %}
|
|
{% for __element in include.collection %}
|
|
{% if __element[include.field] contains name %}
|
|
{% assign __item = __item | push: __element %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
|
|
<!-- Push to group_items -->
|
|
{% assign group_items = group_items | push: __item %}
|
|
{% endfor %} |