foop
Version:
interfaces that describe their intentions.
85 lines (79 loc) • 5.98 kB
JavaScript
var isObjNotNull = require('./objNotNull')
var isArray = require('./array')
var isRegExp = require('./regexp')
var isError = require('./error')
var isDate = require('./date')
var isSymbol = require('./symbol')
var isAsyncish = require('./asyncish')
var isPrimitive = require('./primitive')
/**
* @desc is able to be iterated on
* @since 5.0.0-beta.1
*
* @param {*} x node is iteratable
* @return {boolean} x isIteratable
*
* {@link https://github.com/canjs/can-util/blob/master/js/is-iterable/is-iterable.js can-is-iteratable}
* @see {@link can-is-iteratable}
*
* @extends isObj
* @extends isArray
* @extends isPrimitive
* @extends isRegExp
* @extends isDate
* @extends isSymbol
* @extends isAsync
* @extends isError
*
* @example
*
* isIteratable([]) //=> true
* isIteratable({}) //=> true
* isIteratable(new Date()) //=> false
* isIteratable(Symbol('eh')) //=> false
* isIteratable(new Promise(r => r())) //=> false
* isIteratable(new Error('eh')) //=> false
*
*/
module.exports = function isIteratable(x) {
// ez ones
if (isObjNotNull(x) || isArray(x)) { return true }
var notIteratable =
isPrimitive(x) ||
isRegExp(x) ||
isDate(x) ||
isSymbol(x) ||
isAsyncish(x) ||
// isNative(x) ||
isError(x)
// not-not is iteratable
return !notIteratable
// if (notIteratable) return false
// else return true
// if (isNullOrUndefined(node)) {
// }
// else if (isString(node)) {
// }
// else if (isNumber(node)) {
// }
// else if (isBoolean(node)) {
// }
// else if (isRegExp(node)) {
// }
// else if (isDate(node)) {
// }
// else if (isSymbol(node) || isAsyncish(node)) {
// }
// else if (isNative(node)) {
// }
// else {
// return true
// }
// return false
}
// function isSpecial(x) {
// // isPromise(x) ||
// return isSymbol(x) || isError(x) ||
// // || isGenerator(x)
// }
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlcmF0YWJsZS5qcyIsInNvdXJjZXMiOlsiaXRlcmF0YWJsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBpc09iak5vdE51bGwgPSByZXF1aXJlKCcuL29iak5vdE51bGwnKVxuY29uc3QgaXNBcnJheSA9IHJlcXVpcmUoJy4vYXJyYXknKVxuY29uc3QgaXNSZWdFeHAgPSByZXF1aXJlKCcuL3JlZ2V4cCcpXG5jb25zdCBpc0Vycm9yID0gcmVxdWlyZSgnLi9lcnJvcicpXG5jb25zdCBpc0RhdGUgPSByZXF1aXJlKCcuL2RhdGUnKVxuY29uc3QgaXNTeW1ib2wgPSByZXF1aXJlKCcuL3N5bWJvbCcpXG5jb25zdCBpc0FzeW5jaXNoID0gcmVxdWlyZSgnLi9hc3luY2lzaCcpXG5jb25zdCBpc1ByaW1pdGl2ZSA9ICByZXF1aXJlKCcuL3ByaW1pdGl2ZScpXG5cbi8qKlxuICogQGRlc2MgaXMgYWJsZSB0byBiZSBpdGVyYXRlZCBvblxuICogQHNpbmNlIDUuMC4wLWJldGEuMVxuICpcbiAqIEBwYXJhbSAgeyp9IHggbm9kZSBpcyBpdGVyYXRhYmxlXG4gKiBAcmV0dXJuIHtib29sZWFufSB4IGlzSXRlcmF0YWJsZVxuICpcbiAqIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vY2FuanMvY2FuLXV0aWwvYmxvYi9tYXN0ZXIvanMvaXMtaXRlcmFibGUvaXMtaXRlcmFibGUuanMgY2FuLWlzLWl0ZXJhdGFibGV9XG4gKiBAc2VlIHtAbGluayBjYW4taXMtaXRlcmF0YWJsZX1cbiAqXG4gKiBAZXh0ZW5kcyBpc09ialxuICogQGV4dGVuZHMgaXNBcnJheVxuICogQGV4dGVuZHMgaXNQcmltaXRpdmVcbiAqIEBleHRlbmRzIGlzUmVnRXhwXG4gKiBAZXh0ZW5kcyBpc0RhdGVcbiAqIEBleHRlbmRzIGlzU3ltYm9sXG4gKiBAZXh0ZW5kcyBpc0FzeW5jXG4gKiBAZXh0ZW5kcyBpc0Vycm9yXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAgaXNJdGVyYXRhYmxlKFtdKSAgICAgICAgICAgICAgICAgICAgIC8vPT4gdHJ1ZVxuICogIGlzSXRlcmF0YWJsZSh7fSkgICAgICAgICAgICAgICAgICAgICAvLz0+IHRydWVcbiAqICBpc0l0ZXJhdGFibGUobmV3IERhdGUoKSkgICAgICAgICAgICAgLy89PiBmYWxzZVxuICogIGlzSXRlcmF0YWJsZShTeW1ib2woJ2VoJykpICAgICAgICAgICAvLz0+IGZhbHNlXG4gKiAgaXNJdGVyYXRhYmxlKG5ldyBQcm9taXNlKHIgPT4gcigpKSkgIC8vPT4gZmFsc2VcbiAqICBpc0l0ZXJhdGFibGUobmV3IEVycm9yKCdlaCcpKSAgICAgICAgLy89PiBmYWxzZVxuICpcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0l0ZXJhdGFibGUoeCkge1xuICAvLyBleiBvbmVzXG4gIGlmIChpc09iak5vdE51bGwoeCkgfHwgaXNBcnJheSh4KSkgcmV0dXJuIHRydWVcblxuICBjb25zdCBub3RJdGVyYXRhYmxlID1cbiAgICBpc1ByaW1pdGl2ZSh4KSB8fFxuICAgIGlzUmVnRXhwKHgpIHx8XG4gICAgaXNEYXRlKHgpIHx8XG4gICAgaXNTeW1ib2woeCkgfHxcbiAgICBpc0FzeW5jaXNoKHgpIHx8XG4gICAgLy8gaXNOYXRpdmUoeCkgfHxcbiAgICBpc0Vycm9yKHgpXG5cbiAgLy8gbm90LW5vdCBpcyBpdGVyYXRhYmxlXG4gIHJldHVybiAhbm90SXRlcmF0YWJsZVxuXG4gIC8vIGlmIChub3RJdGVyYXRhYmxlKSByZXR1cm4gZmFsc2VcbiAgLy8gZWxzZSByZXR1cm4gdHJ1ZVxuICAvLyBpZiAoaXNOdWxsT3JVbmRlZmluZWQobm9kZSkpIHtcbiAgLy8gfVxuICAvLyBlbHNlIGlmIChpc1N0cmluZyhub2RlKSkge1xuICAvLyB9XG4gIC8vIGVsc2UgaWYgKGlzTnVtYmVyKG5vZGUpKSB7XG4gIC8vIH1cbiAgLy8gZWxzZSBpZiAoaXNCb29sZWFuKG5vZGUpKSB7XG4gIC8vIH1cbiAgLy8gZWxzZSBpZiAoaXNSZWdFeHAobm9kZSkpIHtcbiAgLy8gfVxuICAvLyBlbHNlIGlmIChpc0RhdGUobm9kZSkpIHtcbiAgLy8gfVxuICAvLyBlbHNlIGlmIChpc1N5bWJvbChub2RlKSB8fCBpc0FzeW5jaXNoKG5vZGUpKSB7XG4gIC8vIH1cbiAgLy8gZWxzZSBpZiAoaXNOYXRpdmUobm9kZSkpIHtcbiAgLy8gfVxuICAvLyBlbHNlIHtcbiAgLy8gICByZXR1cm4gdHJ1ZVxuICAvLyB9XG4gIC8vIHJldHVybiBmYWxzZVxufVxuXG4vLyBmdW5jdGlvbiBpc1NwZWNpYWwoeCkge1xuLy8gICAvLyBpc1Byb21pc2UoeCkgfHxcbi8vICAgcmV0dXJuIGlzU3ltYm9sKHgpIHx8IGlzRXJyb3IoeCkgfHxcbi8vICAgLy8gIHx8IGlzR2VuZXJhdG9yKHgpXG4vLyB9XG4iXSwibmFtZXMiOlsiY29uc3QiXSwibWFwcGluZ3MiOiJBQUFBQSxHQUFLLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7QUFDNUNBLEdBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztBQUNsQ0EsR0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0FBQ3BDQSxHQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7QUFDbENBLEdBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztBQUNoQ0EsR0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0FBQ3BDQSxHQUFLLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7QUFDeENBLEdBQUssQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQStCM0MsTUFBTSxDQUFDLE9BQU8sR0FBRyxTQUFTLFlBQVksQ0FBQyxDQUFDLEVBQUU7O0VBRXhDLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFBLE9BQU8sSUFBSSxFQUFBOztFQUU5Q0EsR0FBSyxDQUFDLGFBQWE7SUFDakIsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNkLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDWCxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ1QsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNYLFVBQVUsQ0FBQyxDQUFDLENBQUM7O0lBRWIsT0FBTyxDQUFDLENBQUMsQ0FBQzs7O0VBR1osT0FBTyxDQUFDLGFBQWE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXdCdEI7Ozs7Ozs7In0=