discourse/app/assets/javascripts/ember-addons/fmt.js.es6

30 lines
760 B
Plaintext
Raw Normal View History

2018-06-15 23:03:24 +08:00
import Ember from "ember";
2016-11-03 03:37:26 +08:00
const isArray = Ember.isArray;
export default function(str, formats) {
let cachedFormats = formats;
if (!isArray(cachedFormats) || arguments.length > 2) {
cachedFormats = new Array(arguments.length - 1);
for (let i = 1, l = arguments.length; i < l; i++) {
cachedFormats[i - 1] = arguments[i];
}
}
// first, replace any ORDERED replacements.
2018-06-15 23:03:24 +08:00
let idx = 0; // the current index for non-numerical replacements
2016-11-03 03:37:26 +08:00
return str.replace(/%@([0-9]+)?/g, function(s, argIndex) {
2018-06-15 23:03:24 +08:00
argIndex = argIndex ? parseInt(argIndex, 10) - 1 : idx++;
2016-11-03 03:37:26 +08:00
s = cachedFormats[argIndex];
return typeof s === "string"
? s
: s === null
? "(null)"
: s === undefined
? ""
: "" + s;
2016-11-03 03:37:26 +08:00
});
}