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