all files / string-template/ index.js

100% Statements 19/19
100% Branches 18/18
100% Functions 2/2
100% Lines 19/19
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37     258×   258× 23×   235× 235× 241×       258×     258× 369×   369×     366× 366× 19×     347×        
var nargs = /\{([0-9a-zA-Z_]+)\}/g
 
module.exports = template
 
function template(string) {
    var args
 
    if (arguments.length === 2 && typeof arguments[1] === "object") {
        args = arguments[1]
    } else {
        args = new Array(arguments.length - 1)
        for (var i = 1; i < arguments.length; ++i) {
            args[i - 1] = arguments[i]
        }
    }
 
    if (!args || !args.hasOwnProperty) {
        args = {}
    }
 
    return string.replace(nargs, function replaceArg(match, i, index) {
        var result
 
        if (string[index - 1] === "{" &&
            string[index + match.length] === "}") {
            return i
        } else {
            result = args.hasOwnProperty(i) ? args[i] : null
            if (result === null || result === undefined) {
                return ""
            }
 
            return result
        }
    })
}