UNPKG

mini-program-cljs

Version:

251 lines (249 loc) 6.42 kB
/** * @suppress {strictMissingProperties} */ goog.provide("goog.structs"); goog.require("goog.array"); goog.require("goog.object"); /** * @param {Object} col * @return {number} */ goog.structs.getCount = function(col) { if (col.getCount && typeof col.getCount == "function") { return col.getCount(); } if (goog.isArrayLike(col) || typeof col === "string") { return col.length; } return goog.object.getCount(col); }; /** * @param {Object} col * @return {!Array<?>} */ goog.structs.getValues = function(col) { if (col.getValues && typeof col.getValues == "function") { return col.getValues(); } if (typeof col === "string") { return col.split(""); } if (goog.isArrayLike(col)) { var rv = []; var l = col.length; for (var i = 0; i < l; i++) { rv.push(col[i]); } return rv; } return goog.object.getValues(col); }; /** * @param {Object} col * @return {(!Array|undefined)} */ goog.structs.getKeys = function(col) { if (col.getKeys && typeof col.getKeys == "function") { return col.getKeys(); } if (col.getValues && typeof col.getValues == "function") { return undefined; } if (goog.isArrayLike(col) || typeof col === "string") { var rv = []; var l = col.length; for (var i = 0; i < l; i++) { rv.push(i); } return rv; } return goog.object.getKeys(col); }; /** * @param {Object} col * @param {*} val * @return {boolean} */ goog.structs.contains = function(col, val) { if (col.contains && typeof col.contains == "function") { return col.contains(val); } if (col.containsValue && typeof col.containsValue == "function") { return col.containsValue(val); } if (goog.isArrayLike(col) || typeof col === "string") { return goog.array.contains(/** @type {!Array<?>} */ (col), val); } return goog.object.containsValue(col, val); }; /** * @param {Object} col * @return {boolean} */ goog.structs.isEmpty = function(col) { if (col.isEmpty && typeof col.isEmpty == "function") { return col.isEmpty(); } if (goog.isArrayLike(col) || typeof col === "string") { return goog.array.isEmpty(/** @type {!Array<?>} */ (col)); } return goog.object.isEmpty(col); }; /** * @param {Object} col */ goog.structs.clear = function(col) { if (col.clear && typeof col.clear == "function") { col.clear(); } else { if (goog.isArrayLike(col)) { goog.array.clear(/** @type {IArrayLike<?>} */ (col)); } else { goog.object.clear(col); } } }; /** * @param {S} col * @param {function(this:T,?,?,S):?} f * @param {T=} opt_obj * @template T * @template S * @deprecated Use a more specific method, e.g. goog.array.forEach, goog.object.forEach, or for-of. */ goog.structs.forEach = function(col, f, opt_obj) { if (col.forEach && typeof col.forEach == "function") { col.forEach(f, opt_obj); } else { if (goog.isArrayLike(col) || typeof col === "string") { goog.array.forEach(/** @type {!Array<?>} */ (col), f, opt_obj); } else { var keys = goog.structs.getKeys(col); var values = goog.structs.getValues(col); var l = values.length; for (var i = 0; i < l; i++) { f.call(/** @type {?} */ (opt_obj), values[i], keys && keys[i], col); } } } }; /** * @param {S} col * @param {function(this:T,?,?,S):boolean} f * @param {T=} opt_obj * @return {(!Object|!Array<?>)} * @template T * @template S */ goog.structs.filter = function(col, f, opt_obj) { if (typeof col.filter == "function") { return col.filter(f, opt_obj); } if (goog.isArrayLike(col) || typeof col === "string") { return goog.array.filter(/** @type {!Array<?>} */ (col), f, opt_obj); } var rv; var keys = goog.structs.getKeys(col); var values = goog.structs.getValues(col); var l = values.length; if (keys) { rv = {}; for (var i = 0; i < l; i++) { if (f.call(/** @type {?} */ (opt_obj), values[i], keys[i], col)) { rv[keys[i]] = values[i]; } } } else { rv = []; for (var i = 0; i < l; i++) { if (f.call(opt_obj, values[i], undefined, col)) { rv.push(values[i]); } } } return rv; }; /** * @param {S} col * @param {function(this:T,?,?,S):V} f * @param {T=} opt_obj * @return {(!Object<?,V>|!Array<V>)} * @template T * @template S * @template V */ goog.structs.map = function(col, f, opt_obj) { if (typeof col.map == "function") { return col.map(f, opt_obj); } if (goog.isArrayLike(col) || typeof col === "string") { return goog.array.map(/** @type {!Array<?>} */ (col), f, opt_obj); } var rv; var keys = goog.structs.getKeys(col); var values = goog.structs.getValues(col); var l = values.length; if (keys) { rv = {}; for (var i = 0; i < l; i++) { rv[keys[i]] = f.call(/** @type {?} */ (opt_obj), values[i], keys[i], col); } } else { rv = []; for (var i = 0; i < l; i++) { rv[i] = f.call(/** @type {?} */ (opt_obj), values[i], undefined, col); } } return rv; }; /** * @param {S} col * @param {function(this:T,?,?,S):boolean} f * @param {T=} opt_obj * @return {boolean} * @template T * @template S */ goog.structs.some = function(col, f, opt_obj) { if (typeof col.some == "function") { return col.some(f, opt_obj); } if (goog.isArrayLike(col) || typeof col === "string") { return goog.array.some(/** @type {!Array<?>} */ (col), f, opt_obj); } var keys = goog.structs.getKeys(col); var values = goog.structs.getValues(col); var l = values.length; for (var i = 0; i < l; i++) { if (f.call(/** @type {?} */ (opt_obj), values[i], keys && keys[i], col)) { return true; } } return false; }; /** * @param {S} col * @param {function(this:T,?,?,S):boolean} f * @param {T=} opt_obj * @return {boolean} * @template T * @template S */ goog.structs.every = function(col, f, opt_obj) { if (typeof col.every == "function") { return col.every(f, opt_obj); } if (goog.isArrayLike(col) || typeof col === "string") { return goog.array.every(/** @type {!Array<?>} */ (col), f, opt_obj); } var keys = goog.structs.getKeys(col); var values = goog.structs.getValues(col); var l = values.length; for (var i = 0; i < l; i++) { if (!f.call(/** @type {?} */ (opt_obj), values[i], keys && keys[i], col)) { return false; } } return true; }; //# sourceMappingURL=goog.structs.structs.js.map