chain-able
Version:
interfaces that describe their intentions.
46 lines (41 loc) • 3.8 kB
JavaScript
var isArray = require('../../is/array')
var includes = require('./includes')
/**
* @param {string} needle
* @param {Array<string>} haystack
* @return {boolean}
*/
function strHasAll(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
}
/**
* @see strHasAll
* @param {Array<string>} needles
* @param {Array<string>} haystack
* @return {boolean}
*/
function arrayHasAll(needles, haystack) {
// loop needles
for (var i = 0; i < needles.length; i++) {
if (!strHasAll(needles[i], haystack)) { return false }
}
return true
}
/**
* @see arrayHasAll
* @see strHasAll
* @param {Array<string> | string} needle
* @param {Array<string>} haystack
* @return {boolean}
*/
function includesAll(needle, haystack) {
if (isArray(needle)) { return arrayHasAll(needle, haystack) }
else { return strHasAll(needle, haystack) }
}
module.exports = includesAll
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsLmpzIiwic291cmNlcyI6WyJhbGwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgaXNBcnJheSA9IHJlcXVpcmUoJy4uLy4uL2lzL2FycmF5JylcbmNvbnN0IGluY2x1ZGVzID0gcmVxdWlyZSgnLi9pbmNsdWRlcycpXG5cbi8qKlxuICogQHBhcmFtICB7c3RyaW5nfSBuZWVkbGVcbiAqIEBwYXJhbSAge0FycmF5PHN0cmluZz59IGhheXN0YWNrXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBzdHJIYXNBbGwobmVlZGxlLCBoYXlzdGFjaykge1xuICBpZiAobmVlZGxlID09PSBoYXlzdGFjaykge1xuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGhheXN0YWNrLmxlbmd0aDsgaSA8IGxlbjsgaSsrKVxuICAgIGlmICghaW5jbHVkZXMoaGF5c3RhY2tbaV0sIG5lZWRsZSkpIHJldHVybiBmYWxzZVxuICByZXR1cm4gdHJ1ZVxufVxuXG4vKipcbiAqIEBzZWUgc3RySGFzQWxsXG4gKiBAcGFyYW0gIHtBcnJheTxzdHJpbmc+fSBuZWVkbGVzXG4gKiBAcGFyYW0gIHtBcnJheTxzdHJpbmc+fSBoYXlzdGFja1xuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gYXJyYXlIYXNBbGwobmVlZGxlcywgaGF5c3RhY2spIHtcbiAgLy8gbG9vcCBuZWVkbGVzXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbmVlZGxlcy5sZW5ndGg7IGkrKykge1xuICAgIGlmICghc3RySGFzQWxsKG5lZWRsZXNbaV0sIGhheXN0YWNrKSkgcmV0dXJuIGZhbHNlXG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuLyoqXG4gKiBAc2VlIGFycmF5SGFzQWxsXG4gKiBAc2VlIHN0ckhhc0FsbFxuICogQHBhcmFtICB7QXJyYXk8c3RyaW5nPiB8IHN0cmluZ30gbmVlZGxlXG4gKiBAcGFyYW0gIHtBcnJheTxzdHJpbmc+fSBoYXlzdGFja1xuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaW5jbHVkZXNBbGwobmVlZGxlLCBoYXlzdGFjaykge1xuICBpZiAoaXNBcnJheShuZWVkbGUpKSByZXR1cm4gYXJyYXlIYXNBbGwobmVlZGxlLCBoYXlzdGFjaylcbiAgZWxzZSByZXR1cm4gc3RySGFzQWxsKG5lZWRsZSwgaGF5c3RhY2spXG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5jbHVkZXNBbGxcbiJdLCJuYW1lcyI6WyJjb25zdCIsImxldCJdLCJtYXBwaW5ncyI6IkFBQUFBLEdBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDO0FBQ3pDQSxHQUFLLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7Ozs7Ozs7QUFPdEMsU0FBUyxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRTtFQUNuQyxJQUFJLE1BQU0sS0FBSyxRQUFRLEVBQUU7SUFDdkIsT0FBTyxJQUFJO0dBQ1o7RUFDRCxLQUFLQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRTtJQUNqRCxFQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUEsT0FBTyxLQUFLLElBQUE7RUFDbEQsT0FBTyxJQUFJO0NBQ1o7Ozs7Ozs7O0FBUUQsU0FBUyxXQUFXLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRTs7RUFFdEMsS0FBS0EsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBQSxPQUFPLEtBQUssRUFBQTtHQUNuRDtFQUNELE9BQU8sSUFBSTtDQUNaOzs7Ozs7Ozs7QUFTRCxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFO0VBQ3JDLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUEsT0FBTyxXQUFXLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxFQUFBO09BQ3BELEVBQUEsT0FBTyxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxFQUFBO0NBQ3hDOztBQUVELE1BQU0sQ0FBQyxPQUFPLEdBQUcsV0FBVzsifQ==