80 lines
2.5 KiB
JavaScript
80 lines
2.5 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) {
|
|
var num = Number(opts.fn(this)),
|
|
rest,
|
|
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', function (metrics) {
|
|
var statements = metrics.statements.skipped,
|
|
functions = metrics.functions.skipped,
|
|
branches = metrics.branches.skipped,
|
|
result;
|
|
|
|
if (statements === 0 && functions === 0 && branches === 0) {
|
|
return '<span class="ignore-none">none</span>';
|
|
}
|
|
|
|
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) {
|
|
var maxLines = Number(opts.fn(this)),
|
|
i,
|
|
array = [];
|
|
for (i = 0; i < maxLines; i += 1) {
|
|
array[i] = i + 1;
|
|
}
|
|
return array.join('\n');
|
|
});
|
|
|
|
handlebars.registerHelper('show_line_execution_counts', function (context) {
|
|
var array = [];
|
|
context.forEach(function (data) {
|
|
array.push('<span class="cline-any cline-' + data.covered + '">' + data.hits + '</span>');
|
|
});
|
|
return array.join('\n');
|
|
});
|
|
|
|
handlebars.registerHelper('show_code', function (context /*, opts */) {
|
|
return context.join('\n');
|
|
});
|
|
}
|
|
|
|
module.exports = {
|
|
registerHelpers: registerHelpers
|
|
};
|