You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
106 lines
3.0 KiB
106 lines
3.0 KiB
/* |
|
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 |
|
};
|
|
|