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.
34 lines
791 B
34 lines
791 B
var nargs = /\{([0-9a-zA-Z]+)\}/g |
|
var slice = Array.prototype.slice |
|
|
|
module.exports = template |
|
|
|
function template(string) { |
|
var args |
|
|
|
if (arguments.length === 2 && typeof arguments[1] === "object") { |
|
args = arguments[1] |
|
} else { |
|
args = slice.call(arguments, 1) |
|
} |
|
|
|
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 |
|
} |
|
}) |
|
}
|
|
|