]> Lady’s Gitweb - Pisces/blobdiff - collection.js
Move isConcatSpreadable[Object] into object.js
[Pisces] / collection.js
index 4545321af94621bf4e7c35afde39f64b303c175a..d340709750c26f1ca902f0ee6d0d8eceae33b483 100644 (file)
@@ -8,18 +8,8 @@
 // file, You can obtain one at <https://mozilla.org/MPL/2.0/>.
 
 import { call, createCallableFunction } from "./function.js";
-import {
-  isIntegralNumber,
-  MAXIMUM_SAFE_INTEGRAL_NUMBER,
-} from "./numeric.js";
-import {
-  canonicalNumericIndexString,
-  lengthOfArraylike,
-  sameValue,
-  toIndex,
-  toLength,
-  type,
-} from "./value.js";
+import { isConcatSpreadableObject } from "./object.js";
+import { toIndex, type } from "./value.js";
 
 const { prototype: arrayPrototype } = Array;
 
@@ -204,33 +194,6 @@ export const indices = createCallableFunction(
   "indices",
 );
 
-/** Returns whether the provided value is an array index string. */
-export const isArrayIndexString = ($) => {
-  const value = canonicalNumericIndexString($);
-  if (value !== undefined) {
-    // The provided value is a canonical numeric index string.
-    return sameValue(value, 0) || value > 0 && value < -1 >>> 0 &&
-        value === toLength(value);
-  } else {
-    // The provided value is not a canonical numeric index string.
-    return false;
-  }
-};
-
-/** Returns whether the provided value is arraylike. */
-export const isArraylikeObject = ($) => {
-  if (type($) !== "object") {
-    return false;
-  } else {
-    try {
-      lengthOfArraylike($); // throws if not arraylike
-      return true;
-    } catch {
-      return false;
-    }
-  }
-};
-
 /**
  * Returns whether the provided object is a collection.
  *
@@ -252,45 +215,13 @@ export const isCollection = ($) => {
   } else {
     try {
       toIndex($.length); // will throw if `length` is not an index
-      return isConcatSpreadable($);
+      return isConcatSpreadableObject($);
     } catch {
       return false;
     }
   }
 };
 
-/**
- * Returns whether the provided value is spreadable during array
- * concatenation.
- *
- * This is also used to determine which things should be treated as
- * collections.
- */
-export const isConcatSpreadable = ($) => {
-  if (type($) !== "object") {
-    // The provided value is not an object.
-    return false;
-  } else {
-    // The provided value is an object.
-    const spreadable = $[Symbol.isConcatSpreadable];
-    return spreadable !== undefined ? !!spreadable : isArray($);
-  }
-};
-
-/** Returns whether the provided value is an integer index string. */
-export const isIntegerIndexString = ($) => {
-  const value = canonicalNumericIndexString($);
-  if (value !== undefined && isIntegralNumber(value)) {
-    // The provided value is a canonical numeric index string.
-    return sameValue(value, 0) ||
-      value > 0 && value <= MAXIMUM_SAFE_INTEGRAL_NUMBER &&
-        value === toLength(value);
-  } else {
-    // The provided value is not a canonical numeric index string.
-    return false;
-  }
-};
-
 /**
  * Returns an iterator over the items in the provided value according
  * to the algorithm of `Array::values`.
This page took 0.02316 seconds and 4 git commands to generate.