in site/js/projects.js [712:767]
function renderProjectsByLanguage() {
var obj = document.getElementById('list');
obj.innerHTML = "";
var projectsSorted = sortProjects();
// Compile Language array
var lingos = [];
var lcount = {};
var i;
var x;
for (i in projects) {
if (projects[i]['programming-language']) {
var a = projects[i]['programming-language'].split(/,\s*/);
for (x in a) {
a[x] = camelCase(a[x]);
if (lingos.indexOf(a[x]) < 0) {
lingos.push(a[x]);
lcount[a[x]] = 0;
}
lcount[a[x]]++;
}
}
}
// Construct language list
lingos.sort();
var ul = document.createElement('ul');
var l;
for (l in lingos) {
var lang = lingos[l];
var li = document.createElement('li');
li.innerHTML = "<h3><a id='" + lang + "'>" + lang + " (" + lcount[lang] + ")</a>"+linkToHere(lang)+":</h3>";
var cul = document.createElement('ul');
for (i in projectsSorted) {
i = projectsSorted[i];
if (projects[i]['programming-language']) {
var a = projects[i]['programming-language'].split(/,\s*/);
for (x in a) {
// Use same capitalisation as the language list
if (camelCase(a[x]) == lang) {
appendLiInnerHTML(cul, projectIcon(projects[i].name) + projectLink(i));
}
}
}
}
li.appendChild(cul);
ul.appendChild(li);
}
obj.appendChild(ul);
if (location.hash.length > 1) {
setTimeout(function() { location.href = location.href;}, 250);
}
}