--- layout: layout --- <% function langCount(arr) { let langs = []; arr.forEach(function(item) { let lang = item.codeLanguage; if (!lang) {return}; let check = langs.findIndex(function(x) {return x.language === lang}); if (check>=0) { langs[check].count +=1; } else { let newLang = {}; newLang.language = lang; newLang.count = 1; langs.push(newLang); } }); return langs; } const apps = site.data.tools.apps; const langList = langCount(apps).sort((a,b) => b.count - a.count); const byCategory = [['libs', 'Libraries'], ['specs', 'Specifications'], ['utils', 'Utilities (including bots, daemons)'], ['relays', 'Relays'], ['bridges', 'Bridges'], ['plugins', 'Plugins (addons)'], ['tests', 'Testing'], ['other', 'Other']]; const byProtocol = [['sortDiaspora', 'diaspora'], ['sortAP', 'ActivityPub'], ['sortOstatus', 'OStatus'], ['sortZot', 'Zot']]; %> <%- partial('_partial/heroheader') %>

EXPLORE DEVELOPER TOOLS

Sort by category:

<% for (item in byCategory) { %> <% } %>

Sort by protocol:

<% for (item in byProtocol) { %> <% } %>

Sort by code language:

<% for (i in langList) { %> <% } %>
<% for (item in apps) { %> <% let type = apps[item].categories %> <% let lang = apps[item].codeLanguage.toLowerCase() %> <% } %>