1
0
mirror of https://github.com/thangisme/notes.git synced 2024-11-12 18:36:21 -05:00
notes/node_modules/stylelint/lib/utils/findAnimationName.js
Patrick Marsceill b7b0d0d7bf
Initial commit
2017-03-09 13:16:08 -05:00

56 lines
1.4 KiB
JavaScript

/* @flow */
"use strict"
const keywordSets = require("../reference/keywordSets")
const getUnitFromValueNode = require("./getUnitFromValueNode")
const isStandardSyntaxValue = require("./isStandardSyntaxValue")
const isVariable = require("./isVariable")
const postcssValueParser = require("postcss-value-parser")
/**
* Get the font-families within a `font` shorthand property value.
*/
module.exports = function findAnimationName(value/*: string*/)/*: Array<Object>*/ {
const animationNames = []
const valueNodes = postcssValueParser(value)
// Handle `inherit`, `initial` and etc
if (valueNodes.nodes.length === 1 && keywordSets.basicKeywords.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.animationShorthandKeywords.has(valueLowerCase)) {
return
}
// Ignore numbers with units
const unit = getUnitFromValueNode(valueNode)
if (unit || unit === "") {
return
}
animationNames.push(valueNode)
})
return animationNames
}