107 lines
3.0 KiB
JavaScript
107 lines
3.0 KiB
JavaScript
|
/*
|
||
|
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
|
||
|
};
|