foop
Version:
interfaces that describe their intentions.
80 lines (72 loc) • 6.43 kB
JavaScript
var isStringPrimitive = require('../../is/stringPrimitive')
var curry = require('../../fp/curry')
var includes = require('./haystackNeedle')
/**
* @desc tripple equals, or every haystack item, is needle
* @since 0.1.0
* @version 1.0.0
*
* @param {string} needle includes(haystack[index], needle)
* @param {Array<string>} haystack includes(haystack[index], needle)
* @return {boolean}
*
* @example
*
* stringIncludesAll('eh', ['e', 'h']) //=> true
* stringIncludesAll('eh', ['e']) //=> false
*
*/
function stringIncludesAll(needle, haystack) {
if (needle === haystack) { return true }
for (var i = 0, len = haystack.length; i < len; i++)
{ if (!includes(haystack[i], needle)) { return false } }
return true
}
/**
* @desc every needle is in every hay
* @since 0.1.0
* @version 1.0.0
*
* @see stringIncludesAll
* @extends stringIncludesAll
*
* @param {Array<string>} needles includes(haystack[index], needle)
* @param {Array<string>} haystack includes(haystack[index], needle)
* @return {boolean}
*
* @example
*
* arrayIncludesAll(['eh'], 'eh')
*
*/
function arrayIncludesAll(needles, haystack) {
// loop needles
for (var i = 0; i < needles.length; i++)
{ if (!stringIncludesAll(needles[i], haystack)) { return false } }
return true
}
/**
* @desc every needle is in every hay
* @since 4.0.0
* @param {Array<string> | string} needle everything in haystack is in this
* @param {Array<string>} haystack everything in this is in the needle
* @return {boolean}
*
* @see arrayIncludesAll
* @see stringIncludesAll
*
* @example
*
* /// 'canada' and 'can' are both in it, so true
* includesAll('canada', ['canada', 'can'])
* includesAll(['eh'], 'e') //=> true
* includesAll(['eh'], 'nope') //=> false
* includesAll('eh', ['no', 'eh']) //=> false
*
*/
function includesAll(needle, haystack) {
if (isStringPrimitive(needle)) { return stringIncludesAll(needle, haystack) }
else { return arrayIncludesAll(needle, haystack) }
}
module.exports = curry(2, includesAll)
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsLmpzIiwic291cmNlcyI6WyJhbGwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgaXNTdHJpbmdQcmltaXRpdmUgPSByZXF1aXJlKCcuLi8uLi9pcy9zdHJpbmdQcmltaXRpdmUnKVxuY29uc3QgY3VycnkgPSByZXF1aXJlKCcuLi8uLi9mcC9jdXJyeScpXG5jb25zdCBpbmNsdWRlcyA9IHJlcXVpcmUoJy4vaGF5c3RhY2tOZWVkbGUnKVxuXG4vKipcbiAqIEBkZXNjIHRyaXBwbGUgZXF1YWxzLCBvciBldmVyeSBoYXlzdGFjayBpdGVtLCBpcyBuZWVkbGVcbiAqIEBzaW5jZSAwLjEuMFxuICogQHZlcnNpb24gMS4wLjBcbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9IG5lZWRsZSBpbmNsdWRlcyhoYXlzdGFja1tpbmRleF0sIG5lZWRsZSlcbiAqIEBwYXJhbSAge0FycmF5PHN0cmluZz59IGhheXN0YWNrIGluY2x1ZGVzKGhheXN0YWNrW2luZGV4XSwgbmVlZGxlKVxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqICAgIHN0cmluZ0luY2x1ZGVzQWxsKCdlaCcsIFsnZScsICdoJ10pIC8vPT4gdHJ1ZVxuICogICAgc3RyaW5nSW5jbHVkZXNBbGwoJ2VoJywgWydlJ10pICAgICAgLy89PiBmYWxzZVxuICpcbiAqL1xuZnVuY3Rpb24gc3RyaW5nSW5jbHVkZXNBbGwobmVlZGxlLCBoYXlzdGFjaykge1xuICBpZiAobmVlZGxlID09PSBoYXlzdGFjaykgcmV0dXJuIHRydWVcblxuICBmb3IgKGxldCBpID0gMCwgbGVuID0gaGF5c3RhY2subGVuZ3RoOyBpIDwgbGVuOyBpKyspXG4gICAgaWYgKCFpbmNsdWRlcyhoYXlzdGFja1tpXSwgbmVlZGxlKSkgcmV0dXJuIGZhbHNlXG5cbiAgcmV0dXJuIHRydWVcbn1cblxuLyoqXG4gKiBAZGVzYyBldmVyeSBuZWVkbGUgaXMgaW4gZXZlcnkgaGF5XG4gKiBAc2luY2UgMC4xLjBcbiAqIEB2ZXJzaW9uIDEuMC4wXG4gKlxuICogQHNlZSBzdHJpbmdJbmNsdWRlc0FsbFxuICogQGV4dGVuZHMgc3RyaW5nSW5jbHVkZXNBbGxcbiAqXG4gKiBAcGFyYW0gIHtBcnJheTxzdHJpbmc+fSBuZWVkbGVzIGluY2x1ZGVzKGhheXN0YWNrW2luZGV4XSwgbmVlZGxlKVxuICogQHBhcmFtICB7QXJyYXk8c3RyaW5nPn0gaGF5c3RhY2sgaW5jbHVkZXMoaGF5c3RhY2tbaW5kZXhdLCBuZWVkbGUpXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogIGFycmF5SW5jbHVkZXNBbGwoWydlaCddLCAnZWgnKVxuICpcbiAqL1xuZnVuY3Rpb24gYXJyYXlJbmNsdWRlc0FsbChuZWVkbGVzLCBoYXlzdGFjaykge1xuICAvLyBsb29wIG5lZWRsZXNcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZWVkbGVzLmxlbmd0aDsgaSsrKVxuICAgIGlmICghc3RyaW5nSW5jbHVkZXNBbGwobmVlZGxlc1tpXSwgaGF5c3RhY2spKSByZXR1cm4gZmFsc2VcblxuICByZXR1cm4gdHJ1ZVxufVxuXG4vKipcbiAqIEBkZXNjIGV2ZXJ5IG5lZWRsZSBpcyBpbiBldmVyeSBoYXlcbiAqIEBzaW5jZSA0LjAuMFxuICogQHBhcmFtICB7QXJyYXk8c3RyaW5nPiB8IHN0cmluZ30gbmVlZGxlIGV2ZXJ5dGhpbmcgaW4gaGF5c3RhY2sgaXMgaW4gdGhpc1xuICogQHBhcmFtICB7QXJyYXk8c3RyaW5nPn0gaGF5c3RhY2sgZXZlcnl0aGluZyBpbiB0aGlzIGlzIGluIHRoZSBuZWVkbGVcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKlxuICogQHNlZSBhcnJheUluY2x1ZGVzQWxsXG4gKiBAc2VlIHN0cmluZ0luY2x1ZGVzQWxsXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAgICAvLy8gJ2NhbmFkYScgYW5kICdjYW4nIGFyZSBib3RoIGluIGl0LCBzbyB0cnVlXG4gKiAgICBpbmNsdWRlc0FsbCgnY2FuYWRhJywgWydjYW5hZGEnLCAnY2FuJ10pXG4gKiAgICBpbmNsdWRlc0FsbChbJ2VoJ10sICdlJykgLy89PiB0cnVlXG4gKiAgICBpbmNsdWRlc0FsbChbJ2VoJ10sICdub3BlJykgLy89PiBmYWxzZVxuICogICAgaW5jbHVkZXNBbGwoJ2VoJywgWydubycsICdlaCddKSAvLz0+IGZhbHNlXG4gKlxuICovXG5mdW5jdGlvbiBpbmNsdWRlc0FsbChuZWVkbGUsIGhheXN0YWNrKSB7XG4gIGlmIChpc1N0cmluZ1ByaW1pdGl2ZShuZWVkbGUpKSByZXR1cm4gc3RyaW5nSW5jbHVkZXNBbGwobmVlZGxlLCBoYXlzdGFjaylcbiAgZWxzZSByZXR1cm4gYXJyYXlJbmNsdWRlc0FsbChuZWVkbGUsIGhheXN0YWNrKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGN1cnJ5KDIsIGluY2x1ZGVzQWxsKVxuIl0sIm5hbWVzIjpbImNvbnN0IiwibGV0Il0sIm1hcHBpbmdzIjoiQUFBQUEsR0FBSyxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQztBQUM3REEsR0FBSyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7QUFDdkNBLEdBQUssQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQWlCNUMsU0FBUyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFO0VBQzNDLElBQUksTUFBTSxLQUFLLFFBQVEsRUFBRSxFQUFBLE9BQU8sSUFBSSxFQUFBOztFQUVwQyxLQUFLQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRTtJQUNqRCxFQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUEsT0FBTyxLQUFLLElBQUE7O0VBRWxELE9BQU8sSUFBSTtDQUNaOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUJELFNBQVMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRTs7RUFFM0MsS0FBS0EsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO0lBQ3JDLEVBQUEsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFBLE9BQU8sS0FBSyxJQUFBOztFQUU1RCxPQUFPLElBQUk7Q0FDWjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUJELFNBQVMsV0FBVyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUU7RUFDckMsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFBLE9BQU8saUJBQWlCLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxFQUFBO09BQ3BFLEVBQUEsT0FBTyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUE7Q0FDL0M7O0FBRUQsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQzsifQ==