format.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. var restArgs = require('./restArgs');
  2. var toInt = require('./toInt');
  3. var toNum = require('./toNum');
  4. var toStr = require('./toStr');
  5. exports = restArgs(function(str, values) {
  6. var ret = '';
  7. for (var i = 0, len = str.length; i < len; i++) {
  8. var c = str[i];
  9. if (c !== '%' || values.length === 0) {
  10. ret += c;
  11. continue;
  12. }
  13. i++;
  14. var val = values.shift();
  15. switch (str[i]) {
  16. case 'i':
  17. case 'd':
  18. ret += toInt(val);
  19. break;
  20. case 'f':
  21. ret += toNum(val);
  22. break;
  23. case 's':
  24. ret += toStr(val);
  25. break;
  26. case 'o':
  27. ret += tryStringify(val);
  28. break;
  29. default:
  30. i--;
  31. values.unshift(val);
  32. ret += c;
  33. }
  34. }
  35. return ret;
  36. });
  37. function tryStringify(obj) {
  38. try {
  39. return JSON.stringify(obj);
  40. } catch (err) {
  41. return '[Error Stringify]';
  42. }
  43. }
  44. module.exports = exports;