/* @flow */ "use strict"; /** * Checks if a string contains a value. The comparison value can be a string or * an array of strings. * * Any strings starting and ending with `/` are ignored. Use the * matchesStringOrRegExp() util to match regexes. */ module.exports = function containsString( input /*: string*/, comparison /*: string | Array*/ ) /*: false | { match: string, pattern: string }*/ { if (!Array.isArray(comparison)) { return testAgainstString(input, comparison); } for (const comparisonItem of comparison) { const testResult = testAgainstString(input, comparisonItem); if (testResult) { return testResult; } } return false; }; function testAgainstString(value, comparison) { if (!comparison) return false; if (comparison[0] === "/" && comparison[comparison.length - 1] === "/") { return false; } if (value.indexOf(comparison) >= 0) { return { match: value, pattern: comparison }; } return false; }