UNPKG

util-ex

Version:

Browser-friendly enhanced util fully compatible with standard node.js

52 lines (51 loc) 1.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; exports.isInList = isInList; var _regexp = _interopRequireDefault(require("./type/regexp.js")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * Checks if a string matches any item in a list of strings or regular expressions. * @param {string} str - The string to match against the list. * @param {Array<string|RegExp>} list - The list of strings or regular expressions to match against. * @param {boolean=} caseSensitive - Whether the comparison should be case sensitive. Default is false. * @returns {boolean} - True if there is a match, false otherwise. * * @example * const list = ['apple', 'banana', 'orange']; * const str = 'Banana'; * console.log(isInList(str, list)); // true (no caseSensitive) * console.log(isInList(str, list, true)); // false (caseSensitive) */ function isInList(str, list, caseSensitive) { let i, item, j, len, result; if (!caseSensitive) { str = str.toLowerCase(); } for (i = j = 0, len = list.length; j < len; i = ++j) { item = list[i]; if ((0, _regexp.default)(item)) { if (!(caseSensitive || item.ignoreCase)) { list[i] = item = RegExp(item.source, 'i'); } result = item.test(str); if (result) { break; } } else { item = item.toString(); if (!caseSensitive) { item = item.toLowerCase(); } result = item === str; if (result) { break; } } } return result; } ; var _default = exports.default = isInList;