25 lines
738 B
Plaintext
25 lines
738 B
Plaintext
|
import Ember from 'ember';
|
||
|
|
||
|
const inspect = Ember.inspect;
|
||
|
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.
|
||
|
let idx = 0; // the current index for non-numerical replacements
|
||
|
return str.replace(/%@([0-9]+)?/g, function(s, argIndex) {
|
||
|
argIndex = (argIndex) ? parseInt(argIndex, 10) - 1 : idx++;
|
||
|
s = cachedFormats[argIndex];
|
||
|
return (s === null) ? '(null)' : (s === undefined) ? '' : inspect(s);
|
||
|
});
|
||
|
}
|