index.js 867 B

123456789101112131415161718192021222324252627282930313233343536
  1. var nargs = /\{([0-9a-zA-Z_]+)\}/g
  2. module.exports = template
  3. function template(string) {
  4. var args
  5. if (arguments.length === 2 && typeof arguments[1] === "object") {
  6. args = arguments[1]
  7. } else {
  8. args = new Array(arguments.length - 1)
  9. for (var i = 1; i < arguments.length; ++i) {
  10. args[i - 1] = arguments[i]
  11. }
  12. }
  13. if (!args || !args.hasOwnProperty) {
  14. args = {}
  15. }
  16. return string.replace(nargs, function replaceArg(match, i, index) {
  17. var result
  18. if (string[index - 1] === "{" &&
  19. string[index + match.length] === "}") {
  20. return i
  21. } else {
  22. result = args.hasOwnProperty(i) ? args[i] : null
  23. if (result === null || result === undefined) {
  24. return ""
  25. }
  26. return result
  27. }
  28. })
  29. }