Skip to content
Snippets Groups Projects
group-by-array 1.13 KiB
Newer Older
  • Learn to ignore specific revisions
  • Eloi Perdereau's avatar
    Eloi Perdereau committed
    <!--
    # 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 %}