foop
Version:
interfaces that describe their intentions.
89 lines (80 loc) • 6.78 kB
JavaScript
var isStringPrimitive = require('../../is/stringPrimitive')
var curry = require('../../fp/curry')
var haystackNeedle = require('./haystackNeedle')
/**
* @desc needle includes haystack, haystack includes needle
* @version 4.0.0
* @memberOf includes
*
* @param {string} needle serves dualy as haystack
* @param {Array<string>} haystack serves dualy as needle
* @return {boolean}
*
* @example
*
* strHas('eh', 'eh') //=> true
* strHas('eh', 'e') //=> true
* strHas('eh', 'nope') //=> false
*
*/
function strHasAny(needle, haystack) {
if (haystackNeedle(needle, haystack)) { return true }
for (var i = 0, len = haystack.length; i < len; i++)
{ if (haystackNeedle(haystack[i], needle)) { return true } }
return false
}
/**
* @memberOf includes
* @version 1.0.0
* @since 0.1.0
*
* @param {Array<string>} needles also serves as haystack
* @param {Array<string>} haystack also serves as needle
* @return {boolean}
*
* @extends strHasAny
* @see includes/any#strHasAny
*
* @example
*
* arrayHasAny(['eh'], ['eh']) //=> true
* arrayHasAny('eh', ['e']) //=> true
* arrayHasAny(['eh'], 'e') //=> true
* arrayHasAny(['eh'], 'eh') //=> true
*
*/
function arrayHasAny(needles, haystack) {
if (haystackNeedle(needles, haystack)) { return true }
// loop needles
for (var i = 0; i < needles.length; i++)
{ if (strHasAny(needles[i], haystack)) { return true } }
return false
}
/**
* @desc any haystack includes any needle
* @since 0.1.0
* @version 1.0.0
* @memberOf includes
*
* @param {Array<string> | string} needle also serves as haystack
* @param {Array<string>} haystack also serves as needle
* @return {boolean}
*
* @see arrayHasAny
* @see strHasAny
* @see isStringPrimitive
*
* @example
*
* includesAny('eh', 'e') //=> true
* includesAny('eh', 'eh') //=> true
* includesAny(['eh'], 'e') //=> true
* includesAny(['eh'], 'nope') //=> false
*
*/
function includesAny(needle, haystack) {
if (isStringPrimitive(needle)) { return strHasAny(needle, haystack) }
else { return arrayHasAny(needle, haystack) }
}
module.exports = curry(2, includesAny)
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW55LmpzIiwic291cmNlcyI6WyJhbnkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgaXNTdHJpbmdQcmltaXRpdmUgPSByZXF1aXJlKCcuLi8uLi9pcy9zdHJpbmdQcmltaXRpdmUnKVxuY29uc3QgY3VycnkgPSByZXF1aXJlKCcuLi8uLi9mcC9jdXJyeScpXG5jb25zdCBoYXlzdGFja05lZWRsZSA9IHJlcXVpcmUoJy4vaGF5c3RhY2tOZWVkbGUnKVxuXG4vKipcbiAqIEBkZXNjIG5lZWRsZSBpbmNsdWRlcyBoYXlzdGFjaywgaGF5c3RhY2sgaW5jbHVkZXMgbmVlZGxlXG4gKiBAdmVyc2lvbiA0LjAuMFxuICogQG1lbWJlck9mIGluY2x1ZGVzXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfSBuZWVkbGUgc2VydmVzIGR1YWx5IGFzIGhheXN0YWNrXG4gKiBAcGFyYW0gIHtBcnJheTxzdHJpbmc+fSBoYXlzdGFjayBzZXJ2ZXMgZHVhbHkgYXMgbmVlZGxlXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogIHN0ckhhcygnZWgnLCAnZWgnKSAgICAvLz0+IHRydWVcbiAqICBzdHJIYXMoJ2VoJywgJ2UnKSAgICAgLy89PiB0cnVlXG4gKiAgc3RySGFzKCdlaCcsICdub3BlJykgIC8vPT4gZmFsc2VcbiAqXG4gKi9cbmZ1bmN0aW9uIHN0ckhhc0FueShuZWVkbGUsIGhheXN0YWNrKSB7XG4gIGlmIChoYXlzdGFja05lZWRsZShuZWVkbGUsIGhheXN0YWNrKSkgcmV0dXJuIHRydWVcblxuICBmb3IgKGxldCBpID0gMCwgbGVuID0gaGF5c3RhY2subGVuZ3RoOyBpIDwgbGVuOyBpKyspXG4gICAgaWYgKGhheXN0YWNrTmVlZGxlKGhheXN0YWNrW2ldLCBuZWVkbGUpKSByZXR1cm4gdHJ1ZVxuXG4gIHJldHVybiBmYWxzZVxufVxuXG4vKipcbiAqIEBtZW1iZXJPZiBpbmNsdWRlc1xuICogQHZlcnNpb24gMS4wLjBcbiAqIEBzaW5jZSAwLjEuMFxuICpcbiAqIEBwYXJhbSAge0FycmF5PHN0cmluZz59IG5lZWRsZXMgYWxzbyBzZXJ2ZXMgYXMgaGF5c3RhY2tcbiAqIEBwYXJhbSAge0FycmF5PHN0cmluZz59IGhheXN0YWNrIGFsc28gc2VydmVzIGFzIG5lZWRsZVxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqXG4gKiBAZXh0ZW5kcyBzdHJIYXNBbnlcbiAqIEBzZWUgaW5jbHVkZXMvYW55I3N0ckhhc0FueVxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogIGFycmF5SGFzQW55KFsnZWgnXSwgWydlaCddKSAvLz0+IHRydWVcbiAqICBhcnJheUhhc0FueSgnZWgnLCBbJ2UnXSkgICAgLy89PiB0cnVlXG4gKiAgYXJyYXlIYXNBbnkoWydlaCddLCAnZScpICAgIC8vPT4gdHJ1ZVxuICogIGFycmF5SGFzQW55KFsnZWgnXSwgJ2VoJykgICAvLz0+IHRydWVcbiAqXG4gKi9cbmZ1bmN0aW9uIGFycmF5SGFzQW55KG5lZWRsZXMsIGhheXN0YWNrKSB7XG4gIGlmIChoYXlzdGFja05lZWRsZShuZWVkbGVzLCBoYXlzdGFjaykpIHJldHVybiB0cnVlXG5cbiAgLy8gbG9vcCBuZWVkbGVzXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbmVlZGxlcy5sZW5ndGg7IGkrKylcbiAgICBpZiAoc3RySGFzQW55KG5lZWRsZXNbaV0sIGhheXN0YWNrKSkgcmV0dXJuIHRydWVcblxuICByZXR1cm4gZmFsc2Vcbn1cblxuLyoqXG4gKiBAZGVzYyBhbnkgaGF5c3RhY2sgaW5jbHVkZXMgYW55IG5lZWRsZVxuICogQHNpbmNlIDAuMS4wXG4gKiBAdmVyc2lvbiAxLjAuMFxuICogQG1lbWJlck9mIGluY2x1ZGVzXG4gKlxuICogQHBhcmFtICB7QXJyYXk8c3RyaW5nPiB8IHN0cmluZ30gbmVlZGxlIGFsc28gc2VydmVzIGFzIGhheXN0YWNrXG4gKiBAcGFyYW0gIHtBcnJheTxzdHJpbmc+fSBoYXlzdGFjayBhbHNvIHNlcnZlcyBhcyBuZWVkbGVcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKlxuICogQHNlZSBhcnJheUhhc0FueVxuICogQHNlZSBzdHJIYXNBbnlcbiAqIEBzZWUgaXNTdHJpbmdQcmltaXRpdmVcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqICAgIGluY2x1ZGVzQW55KCdlaCcsICdlJykgICAgICAvLz0+IHRydWVcbiAqICAgIGluY2x1ZGVzQW55KCdlaCcsICdlaCcpICAgICAvLz0+IHRydWVcbiAqICAgIGluY2x1ZGVzQW55KFsnZWgnXSwgJ2UnKSAgICAvLz0+IHRydWVcbiAqICAgIGluY2x1ZGVzQW55KFsnZWgnXSwgJ25vcGUnKSAvLz0+IGZhbHNlXG4gKlxuICovXG5mdW5jdGlvbiBpbmNsdWRlc0FueShuZWVkbGUsIGhheXN0YWNrKSB7XG4gIGlmIChpc1N0cmluZ1ByaW1pdGl2ZShuZWVkbGUpKSByZXR1cm4gc3RySGFzQW55KG5lZWRsZSwgaGF5c3RhY2spXG4gIGVsc2UgcmV0dXJuIGFycmF5SGFzQW55KG5lZWRsZSwgaGF5c3RhY2spXG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3VycnkoMiwgaW5jbHVkZXNBbnkpXG4iXSwibmFtZXMiOlsiY29uc3QiLCJsZXQiXSwibWFwcGluZ3MiOiJBQUFBQSxHQUFLLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLDBCQUEwQixDQUFDO0FBQzdEQSxHQUFLLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztBQUN2Q0EsR0FBSyxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCbEQsU0FBUyxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRTtFQUNuQyxJQUFJLGNBQWMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBQSxPQUFPLElBQUksRUFBQTs7RUFFakQsS0FBS0MsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUU7SUFDakQsRUFBQSxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBQSxPQUFPLElBQUksSUFBQTs7RUFFdEQsT0FBTyxLQUFLO0NBQ2I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQkQsU0FBUyxXQUFXLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRTtFQUN0QyxJQUFJLGNBQWMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBQSxPQUFPLElBQUksRUFBQTs7O0VBR2xELEtBQUtBLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRTtJQUNyQyxFQUFBLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFBLE9BQU8sSUFBSSxJQUFBOztFQUVsRCxPQUFPLEtBQUs7Q0FDYjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0JELFNBQVMsV0FBVyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUU7RUFDckMsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFBLE9BQU8sU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFBQTtPQUM1RCxFQUFBLE9BQU8sV0FBVyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFBQTtDQUMxQzs7QUFFRCxNQUFNLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDOyJ9