.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / stylelint / lib / utils / checkAgainstRule.js
diff --git a/.config/coc/extensions/node_modules/coc-prettier/node_modules/stylelint/lib/utils/checkAgainstRule.js b/.config/coc/extensions/node_modules/coc-prettier/node_modules/stylelint/lib/utils/checkAgainstRule.js
new file mode 100644 (file)
index 0000000..f8406bb
--- /dev/null
@@ -0,0 +1,46 @@
+/* @flow */
+"use strict";
+
+const normalizeRuleSettings = require("../normalizeRuleSettings");
+const Result = require("postcss/lib/result");
+const rules = require("../rules");
+
+// Useful for third-party code (e.g. plugins) to run a PostCSS Root
+// against a specific rule and do something with the warnings
+module.exports = function(
+  options /*: {
+    ruleName: string,
+    ruleSettings: stylelint$configRuleSettings,
+    root: Object,
+  }*/,
+  callback /*: Function*/
+) {
+  if (!options)
+    throw new Error(
+      "checkAgainstRule requires an options object with 'ruleName', 'ruleSettings', and 'root' properties"
+    );
+  if (!callback) throw new Error("checkAgainstRule requires a callback");
+  if (!options.ruleName)
+    throw new Error("checkAgainstRule requires a 'ruleName' option");
+  if (!rules[options.ruleName])
+    throw new Error(`Rule '${options.ruleName}' does not exist`);
+  if (!options.ruleSettings)
+    throw new Error("checkAgainstRule requires a 'ruleSettings' option");
+  if (!options.root)
+    throw new Error("checkAgainstRule requires a 'root' option");
+
+  const settings = normalizeRuleSettings(
+    options.ruleSettings,
+    options.ruleName
+  );
+  if (!settings) {
+    return;
+  }
+
+  const tmpPostcssResult = new Result();
+  rules[options.ruleName](settings[0], settings[1], {})(
+    options.root,
+    tmpPostcssResult
+  );
+  tmpPostcssResult.warnings().forEach(callback);
+};