index.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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 _utils = require("../../utils");
  8. var _stylelint = require("stylelint");
  9. var ruleName = (0, _utils.namespace)("at-if-no-null");
  10. exports.ruleName = ruleName;
  11. var messages = _stylelint.utils.ruleMessages(ruleName, {
  12. equals_null: "Expected @if not statement rather than @if statement == null",
  13. not_equals_null: "Expected @if statement rather than @if statement != null"
  14. });
  15. exports.messages = messages;
  16. var meta = {
  17. url: (0, _utils.ruleUrl)(ruleName)
  18. };
  19. exports.meta = meta;
  20. function rule(expectation) {
  21. return function (root, result) {
  22. var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
  23. actual: expectation
  24. });
  25. if (!validOptions) {
  26. return;
  27. }
  28. root.walkAtRules(function (atrule) {
  29. // Do nothing if it's not an @if
  30. if (atrule.name !== "if") {
  31. return;
  32. }
  33. // If rule != null and (expr), skip
  34. if (atrule.params.match(/.* != null and .*/)) {
  35. return;
  36. }
  37. if (atrule.params.match(/.* == null[ \t]*\)?/)) {
  38. _stylelint.utils.report({
  39. message: messages.equals_null,
  40. node: atrule,
  41. result: result,
  42. ruleName: ruleName
  43. });
  44. } else if (atrule.params.match(/.* != null[ \t]*\)?/)) {
  45. _stylelint.utils.report({
  46. message: messages.not_equals_null,
  47. node: atrule,
  48. result: result,
  49. ruleName: ruleName
  50. });
  51. }
  52. });
  53. };
  54. }
  55. rule.ruleName = ruleName;
  56. rule.messages = messages;
  57. rule.meta = meta;