group-by-array 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <!--
  2. # Jekyll Group-By-Array 0.1.0
  3. # https://github.com/mushishi78/jekyll-group-by-array
  4. # © 2015 Max White <mushishi78@gmail.com>
  5. # MIT License
  6. -->
  7. <!-- Initialize -->
  8. {% assign __empty_array = '' | split: ',' %}
  9. {% assign group_names = __empty_array %}
  10. {% assign group_items = __empty_array %}
  11. <!-- Map -->
  12. {% assign __names = include.collection | map: include.field %}
  13. <!-- Flatten -->
  14. {% assign __names = __names | join: ',' | join: ',' | split: ',' %}
  15. <!-- Uniq -->
  16. {% assign __names = __names | sort %}
  17. {% for name in __names %}
  18. <!-- If not equal to previous then it must be unique as sorted -->
  19. {% unless name == previous %}
  20. <!-- Push to group_names -->
  21. {% assign group_names = group_names | push: name %}
  22. {% endunless %}
  23. {% assign previous = name %}
  24. {% endfor %}
  25. <!-- group_items -->
  26. {% for name in group_names %}
  27. <!-- Collect if contains -->
  28. {% assign __item = __empty_array %}
  29. {% for __element in include.collection %}
  30. {% if __element[include.field] contains name %}
  31. {% assign __item = __item | push: __element %}
  32. {% endif %}
  33. {% endfor %}
  34. <!-- Push to group_items -->
  35. {% assign group_items = group_items | push: __item %}
  36. {% endfor %}