mirror of
https://github.com/thangisme/notes.git
synced 2024-07-02 01:35:28 +00:00
40 lines
1.2 KiB
JavaScript
40 lines
1.2 KiB
JavaScript
/* @flow */
|
|
"use strict"
|
|
|
|
/**
|
|
* Check whether a type selector is standard
|
|
*
|
|
* @param {Node} postcss-selector-parser node (of type tag)
|
|
* @return {boolean} If `true`, the type selector is standard
|
|
*/
|
|
|
|
const keywordSets = require("../reference/keywordSets")
|
|
|
|
module.exports = function (node/*: Object*/)/*: boolean*/ {
|
|
// postcss-selector-parser includes the arguments to nth-child() functions
|
|
// as "tags", so we need to ignore them ourselves.
|
|
// The fake-tag's "parent" is actually a selector node, whose parent
|
|
// should be the :nth-child pseudo node.
|
|
const _node$parent$parent = node.parent.parent
|
|
const parentType = _node$parent$parent.type,
|
|
parentValue = _node$parent$parent.value
|
|
|
|
if (parentValue) {
|
|
const normalisedParentName = parentValue.toLowerCase().replace(/:+/, "")
|
|
if (parentType === "pseudo" && (keywordSets.aNPlusBNotationPseudoClasses.has(normalisedParentName) || keywordSets.linguisticPseudoClasses.has(normalisedParentName))) {
|
|
return false
|
|
}
|
|
}
|
|
|
|
// &-bar is a nesting selector combined with a suffix
|
|
if (node.prev() && node.prev().type === "nesting") {
|
|
return false
|
|
}
|
|
|
|
if (node.value[0] === "%") {
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|