blob: aa5dd7488d057c1b0cc82cb120bdbc2bdc993571 [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) {
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) {
var 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', 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
};