Sha256: f2b99beccbd95e628f5d71798a8e786d34dc3d26b47eb6303a91a88b37f9f400

Contents?: true

Size: 1.15 KB

Versions: 24

Compression:

Stored size: 1.15 KB

Contents

'use strict';

const _ = require('lodash');

/** @typedef {false | { match: string, pattern: string }} ReturnValue */

/**
 * 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.
 *
 * @param {string} input
 * @param {string | string[]} comparison
 *
 * @returns {ReturnValue}
 */
module.exports = function containsString(input, comparison) {
	if (!Array.isArray(comparison)) {
		return testAgainstString(input, comparison);
	}

	for (const comparisonItem of comparison) {
		const testResult = testAgainstString(input, comparisonItem);

		if (testResult) {
			return testResult;
		}
	}

	return false;
};

/**
 *
 * @param {string} value
 * @param {string} comparison
 *
 * @returns {ReturnValue}
 */
function testAgainstString(value, comparison) {
	if (!comparison) return false;

	if (!_.isString(comparison)) return false;

	if (comparison.startsWith('/') && comparison.endsWith('/')) {
		return false;
	}

	if (value.includes(comparison)) {
		return { match: value, pattern: comparison };
	}

	return false;
}

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
trusty-cms-4.1.8 node_modules/stylelint/lib/utils/containsString.js
trusty-cms-4.1.7 node_modules/stylelint/lib/utils/containsString.js
trusty-cms-4.1.6 node_modules/stylelint/lib/utils/containsString.js
trusty-cms-4.1.5 node_modules/stylelint/lib/utils/containsString.js