| /* @flow */ |
| "use strict"; |
| |
| const hasInterpolation = require("../utils/hasInterpolation"); |
| |
| /** |
| * Check whether a selector is standard |
| */ |
| module.exports = function(selector /*: string*/) /*: boolean*/ { |
| // SCSS or Less interpolation |
| if (hasInterpolation(selector)) { |
| return false; |
| } |
| |
| // SCSS placeholder selectors |
| if (selector.indexOf("%") === 0) { |
| 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 (/\.[a-z0-9-_]+\(.*\).+/i.test(selector)) { |
| return false; |
| } |
| |
| return true; |
| }; |