<!--
# 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 | sort %}

  <!-- 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 %}