locize-lastused
Version:
Using API lastUsed using in node.js, in the browser and for deno.
56 lines (55 loc) • 1.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.debounce = debounce;
exports.defaults = defaults;
exports.isMissingOption = isMissingOption;
exports.replaceIn = replaceIn;
var arr = [];
var each = arr.forEach;
var slice = arr.slice;
function defaults(obj) {
each.call(slice.call(arguments, 1), function (source) {
if (source) {
for (var prop in source) {
if (obj[prop] === undefined) obj[prop] = source[prop];
}
}
});
return obj;
}
function debounce(func, wait, immediate) {
var timeout;
return function () {
var context = this;
var args = arguments;
var later = function later() {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
}
function isMissingOption(obj, props) {
return props.reduce(function (mem, p) {
if (mem) return mem;
if (!obj || !obj[p] || typeof obj[p] !== 'string' || !obj[p].toLowerCase() === p.toLowerCase()) {
var err = "i18next-lastused :: got \"".concat(obj[p], "\" in options for ").concat(p, " which is invalid.");
console.warn(err);
return err;
}
return false;
}, false);
}
function replaceIn(str, arr, options) {
var ret = str;
arr.forEach(function (s) {
var regexp = new RegExp("{{".concat(s, "}}"), 'g');
ret = ret.replace(regexp, options[s]);
});
return ret;
}