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