% if (plugins.habits) { %> Recent coding habits <% if (plugins.habits.commits?.fetched) { %> (computed from last <%= plugins.habits.commits.fetched %> commit<%= s(plugins.habits.commits.fetched) %>) <% } %> <% if (plugins.habits.error) { %> <%= plugins.habits.error.message %> <% } else if (plugins.habits.facts) { %> <% if (plugins.habits.indents.style) { %> Uses <%= plugins.habits.indents.style %> for indentation <% } %> <% if (plugins.habits.lines.average.chars) { %> Has approximately <%= f(plugins.habits.lines.average.chars, {fixed:1}) %> characters per line of code written <% } %> <% if (!Number.isNaN(plugins.habits.commits.hour)) { %> Mostly pushes code around <%= plugins.habits.commits.hour %>:00 <% } %> <% if (plugins.habits.commits.day) { %> Mostly active on <%= plugins.habits.commits.day %> <% } %> <% } %> <% if (plugins.habits.charts) { %> <% if (!Number.isNaN(plugins.habits.commits.hour)) { %> Commit activity per hour of day <% if (Array.isArray(plugins.habits.charts)) { %> <%- plugins.habits.charts[0] %> <% } else { %> <% var displayedValues = []; %> <% for (let h = 0; h < 24; h++) { displayedValues.push([h, (plugins.habits.commits.hours[h]??0)/(plugins.habits.commits.hours.max??1), plugins.habits.commits.hours[h]]) } %> <% if (plugins.habits.trim) { %> <% while (displayedValues[0][1] === 0) { displayedValues.shift(); } %> <% while (displayedValues[displayedValues.length-1][1] === 0){ displayedValues.pop(); } %> <% } %> <% for(let i = 0; i < displayedValues.length; i++) { %> <%= displayedValues[i][2] %> <%= `${displayedValues[i][0]}`.padStart(2, 0) %> <% } %> <% } %> <% } %> <% if (!Number.isNaN(plugins.habits.commits.day)) { %> Commit activity per day of week <% if (Array.isArray(plugins.habits.charts)) { %> <%- plugins.habits.charts[1] %> <% } else { %> <% for (let d = 0; d < 7; d++) { const p = (plugins.habits.commits.days[d]??0)/(plugins.habits.commits.days.max??1); %> <%= plugins.habits.commits.days[d] %> <%= ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"][d] %> <% } %> <% } %> <% } %> <% if (plugins.habits.linguist.available) { %> Language activity <% if (Array.isArray(plugins.habits.charts)) { %> <%- plugins.habits.charts[2] %> <% } else { %> <% for (const [language, p] of plugins.habits.linguist.ordered) { %> <%= language %> <%= Math.round(100*p) %>% <% } %> <% } %> <% } %> <% } %> <% } %>