1
0
mirror of https://github.com/thangisme/notes.git synced 2024-06-12 09:10:45 +00:00
notes/node_modules/stylelint/lib/utils/findListStyleType.js
Patrick Marsceill b7b0d0d7bf
Initial commit
2017-03-09 13:16:08 -05:00

50 lines
1.3 KiB
JavaScript

/* @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
}