UNPKG

foop

Version:

interfaces that describe their intentions.

80 lines (72 loc) 6.43 kB
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==