stylelint
Version:
Modern CSS linter
61 lines (47 loc) • 1.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = findListStyleType;
var _postcssValueParser = require("postcss-value-parser");
var _postcssValueParser2 = _interopRequireDefault(_postcssValueParser);
var _ = require("./");
var _keywordSets = require("../reference/keywordSets");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Get the list-style-type within a `list-style` shorthand property value.
*
* @param {string} value
* @return {object} Collection list-style-type nodes
*/
function findListStyleType(value) {
var listStyleTypes = [];
var valueNodes = (0, _postcssValueParser2.default)(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(function (valueNode) {
if (valueNode.type === "function") {
return false;
}
if (valueNode.type !== "word") {
return;
}
var valueLowerCase = valueNode.value.toLowerCase();
// Ignore non standard syntax
if (!(0, _.isStandardSyntaxValue)(valueLowerCase)) {
return;
}
// Ignore variables
if ((0, _.isVariable)(valueLowerCase)) {
return;
}
// Ignore keywords for other font parts
if (_keywordSets.listStylePositionKeywords.has(valueLowerCase) || _keywordSets.listStyleImageKeywords.has(valueLowerCase)) {
return;
}
listStyleTypes.push(valueNode);
});
return listStyleTypes;
}