UNPKG

737 BJavaScriptView Raw
1'use strict';
2
3const hasInterpolation = require('../utils/hasInterpolation');
4
5/**
6 * Check whether a selector is standard
7 *
8 * @param {string} selector
9 * @returns {boolean}
10 */
11module.exports = function (selector) {
12 // SCSS or Less interpolation
13 if (hasInterpolation(selector)) {
14 return false;
15 }
16
17 // SCSS placeholder selectors
18 if (selector.startsWith('%')) {
19 return false;
20 }
21
22 // Less :extend()
23 if (/:extend(\(.*?\))?/.test(selector)) {
24 return false;
25 }
26
27 // Less mixin with resolved nested selectors (e.g. .foo().bar or .foo(@a, @b)[bar])
28 if (/\.[\w-]+\(.*\).+/i.test(selector)) {
29 return false;
30 }
31
32 // ERB template tags
33 if (selector.includes('<%') || selector.includes('%>')) {
34 return false;
35 }
36
37 return true;
38};