# 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
    371×

    1×

    1×
    258×

    258×
    23×

    235×
    235×
    241×

    258×
    1×

    258×
    369×

    369×

    3×

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