Initial
This commit is contained in:
75
resources/app/node_modules/intl-format-cache/lib/memoizer.js
generated
vendored
Normal file
75
resources/app/node_modules/intl-format-cache/lib/memoizer.js
generated
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
"use strict";
|
||||
var src$es5$$ = require("./es5");
|
||||
exports["default"] = createFormatCache;
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
function createFormatCache(FormatConstructor) {
|
||||
var cache = src$es5$$.objCreate(null);
|
||||
|
||||
return function () {
|
||||
var args = Array.prototype.slice.call(arguments);
|
||||
var cacheId = getCacheId(args);
|
||||
var format = cacheId && cache[cacheId];
|
||||
|
||||
if (!format) {
|
||||
format = new (src$es5$$.bind.apply(FormatConstructor, [null].concat(args)))();
|
||||
|
||||
if (cacheId) {
|
||||
cache[cacheId] = format;
|
||||
}
|
||||
}
|
||||
|
||||
return format;
|
||||
};
|
||||
}
|
||||
|
||||
// -- Utilities ----------------------------------------------------------------
|
||||
|
||||
function getCacheId(inputs) {
|
||||
// When JSON is not available in the runtime, we will not create a cache id.
|
||||
if (typeof JSON === 'undefined') { return; }
|
||||
|
||||
var cacheId = [];
|
||||
|
||||
var i, len, input;
|
||||
|
||||
for (i = 0, len = inputs.length; i < len; i += 1) {
|
||||
input = inputs[i];
|
||||
|
||||
if (input && typeof input === 'object') {
|
||||
cacheId.push(orderedProps(input));
|
||||
} else {
|
||||
cacheId.push(input);
|
||||
}
|
||||
}
|
||||
|
||||
return JSON.stringify(cacheId);
|
||||
}
|
||||
|
||||
function orderedProps(obj) {
|
||||
var props = [],
|
||||
keys = [];
|
||||
|
||||
var key, i, len, prop;
|
||||
|
||||
for (key in obj) {
|
||||
if (obj.hasOwnProperty(key)) {
|
||||
keys.push(key);
|
||||
}
|
||||
}
|
||||
|
||||
var orderedKeys = keys.sort();
|
||||
|
||||
for (i = 0, len = orderedKeys.length; i < len; i += 1) {
|
||||
key = orderedKeys[i];
|
||||
prop = {};
|
||||
|
||||
prop[key] = obj[key];
|
||||
props[i] = prop;
|
||||
}
|
||||
|
||||
return props;
|
||||
}
|
||||
|
||||
//# sourceMappingURL=memoizer.js.map
|
||||
Reference in New Issue
Block a user