/* @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 }