index.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports["default"] = rule;
  6. exports.ruleName = exports.meta = exports.messages = void 0;
  7. var _stylelint = require("stylelint");
  8. var _utils = require("../../utils");
  9. var ruleName = (0, _utils.namespace)("dollar-variable-pattern");
  10. exports.ruleName = ruleName;
  11. var messages = _stylelint.utils.ruleMessages(ruleName, {
  12. expected: "Expected $ variable name to match specified pattern"
  13. });
  14. exports.messages = messages;
  15. var meta = {
  16. url: (0, _utils.ruleUrl)(ruleName)
  17. };
  18. exports.meta = meta;
  19. function rule(pattern, options) {
  20. return function (root, result) {
  21. var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
  22. actual: pattern,
  23. possible: [_utils.isRegExp, _utils.isString]
  24. }, {
  25. actual: options,
  26. possible: {
  27. ignore: ["local", "global"]
  28. },
  29. optional: true
  30. });
  31. if (!validOptions) {
  32. return;
  33. }
  34. var regexpPattern = (0, _utils.isString)(pattern) ? new RegExp(pattern) : pattern;
  35. root.walkDecls(function (decl) {
  36. var prop = decl.prop;
  37. if (prop[0] !== "$") {
  38. return;
  39. }
  40. // If local or global variables need to be ignored
  41. if ((0, _utils.optionsHaveIgnored)(options, "global") && decl.parent.type === "root" || (0, _utils.optionsHaveIgnored)(options, "local") && decl.parent.type !== "root") {
  42. return;
  43. }
  44. if (regexpPattern.test(prop.slice(1))) {
  45. return;
  46. }
  47. _stylelint.utils.report({
  48. message: messages.expected,
  49. node: decl,
  50. result: result,
  51. ruleName: ruleName
  52. });
  53. });
  54. };
  55. }
  56. rule.ruleName = ruleName;
  57. rule.messages = messages;
  58. rule.meta = meta;