blob: f315e6e878184370aaea98c1a0909cfcfff9adc5 [file] [log] [blame]
/*
Copyright 2012-2015, Yahoo Inc.
Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
*/
function registerHelpers(handlebars) {
handlebars.registerHelper('show_picture', function(opts) {
let num = Number(opts.fn(this));
let rest;
let cls = '';
if (isFinite(num)) {
if (num === 100) {
cls = ' cover-full';
}
num = Math.floor(num);
rest = 100 - num;
return (
'<div class="cover-fill' +
cls +
'" style="width: ' +
num +
'%;"></div>' +
'<div class="cover-empty" style="width:' +
rest +
'%;"></div>'
);
} else {
return '';
}
});
handlebars.registerHelper('if_has_ignores', function(metrics, opts) {
return metrics.statements.skipped +
metrics.functions.skipped +
metrics.branches.skipped ===
0
? ''
: opts.fn(this);
});
handlebars.registerHelper('show_ignores', metrics => {
const statements = metrics.statements.skipped;
const functions = metrics.functions.skipped;
const branches = metrics.branches.skipped;
if (statements === 0 && functions === 0 && branches === 0) {
return '<span class="ignore-none">none</span>';
}
const result = [];
if (statements > 0) {
result.push(
statements === 1 ? '1 statement' : statements + ' statements'
);
}
if (functions > 0) {
result.push(
functions === 1 ? '1 function' : functions + ' functions'
);
}
if (branches > 0) {
result.push(branches === 1 ? '1 branch' : branches + ' branches');
}
return result.join(', ');
});
handlebars.registerHelper('show_lines', function(opts) {
const maxLines = Number(opts.fn(this));
let i;
const array = [];
for (i = 0; i < maxLines; i += 1) {
const nextNum = i + 1;
array[i] =
"<a name='L" +
nextNum +
"'></a><a href='#L" +
nextNum +
"'>" +
nextNum +
'</a>';
}
return array.join('\n');
});
handlebars.registerHelper('show_line_execution_counts', context => {
const array = [];
context.forEach(data => {
array.push(
'<span class="cline-any cline-' +
data.covered +
'">' +
data.hits +
'</span>'
);
});
return array.join('\n');
});
handlebars.registerHelper('show_code', (context /*, opts */) =>
context.join('\n')
);
}
module.exports = {
registerHelpers
};