/* 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 };