UNPKG

stylelint

Version:

A mighty, modern CSS linter.

60 lines (50 loc) 1.42 kB
/* @flow */ "use strict"; const isStandardSyntaxValue = require("./isStandardSyntaxValue"); const isVariable = require("./isVariable"); const keywordSets = require("../reference/keywordSets"); const postcssValueParser = require("postcss-value-parser"); /** * Get the list-style-type within a `list-style` shorthand property value. */ module.exports = function findListStyleType( value /*: string*/ ) /*: Array<Object>*/ { const listStyleTypes = []; const valueNodes = postcssValueParser(value); // Handle `inherit`, `initial` and etc if ( valueNodes.nodes.length === 1 && keywordSets.listStyleTypeKeywords.has( valueNodes.nodes[0].value.toLowerCase() ) ) { return [valueNodes.nodes[0]]; } valueNodes.walk(valueNode => { if (valueNode.type === "function") { return false; } if (valueNode.type !== "word") { return; } const valueLowerCase = valueNode.value.toLowerCase(); // Ignore non standard syntax if (!isStandardSyntaxValue(valueLowerCase)) { return; } // Ignore variables if (isVariable(valueLowerCase)) { return; } // Ignore keywords for other font parts if ( keywordSets.listStylePositionKeywords.has(valueLowerCase) || keywordSets.listStyleImageKeywords.has(valueLowerCase) ) { return; } listStyleTypes.push(valueNode); }); return listStyleTypes; };