Actualizacion maquina principal
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / stylelint / lib / utils / findListStyleType.js
diff --git a/.config/coc/extensions/node_modules/coc-prettier/node_modules/stylelint/lib/utils/findListStyleType.js b/.config/coc/extensions/node_modules/coc-prettier/node_modules/stylelint/lib/utils/findListStyleType.js
new file mode 100644 (file)
index 0000000..2d03008
--- /dev/null
@@ -0,0 +1,59 @@
+/* @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;
+};