| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | 'use strict';const hasInterpolation = require('../utils/hasInterpolation');/** * Check whether a selector is standard * * @param {string} selector * @returns {boolean} */module.exports = function isStandardSyntaxSelector(selector) {	// SCSS or Less interpolation	if (hasInterpolation(selector)) {		return false;	}	// SCSS placeholder selectors	if (selector.startsWith('%')) {		return false;	}	// SCSS nested properties	if (selector.endsWith(':')) {		return false;	}	// Less :extend()	if (/:extend(?:\(.*?\))?/.test(selector)) {		return false;	}	// Less mixin with resolved nested selectors (e.g. .foo().bar or .foo(@a, @b)[bar])	if (/\.[\w-]+\(.*\).+/.test(selector)) {		return false;	}	// Less non-outputting mixin definition (e.g. .mixin() {})	if (selector.endsWith(')') && !selector.includes(':')) {		return false;	}	// Less Parametric mixins (e.g. .mixin(@variable: x) {})	if (/\(@.*\)$/.test(selector)) {		return false;	}	// ERB template tags	if (selector.includes('<%') || selector.includes('%>')) {		return false;	}	//  SCSS and Less comments	if (selector.includes('//')) {		return false;	}	return true;};
 |