index.js 1.7 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 _stylelint = require("stylelint");
  8. var _utils = require("../../utils");
  9. var ruleName = (0, _utils.namespace)("at-function-parentheses-space-before");
  10. exports.ruleName = ruleName;
  11. var messages = _stylelint.utils.ruleMessages(ruleName, {
  12. rejectedBefore: function rejectedBefore() {
  13. return "Unexpected whitespace before parentheses in function declaration";
  14. },
  15. expectedBefore: function expectedBefore() {
  16. return "Expected a single space before parentheses in function declaration";
  17. }
  18. });
  19. exports.messages = messages;
  20. var meta = {
  21. url: (0, _utils.ruleUrl)(ruleName)
  22. };
  23. exports.meta = meta;
  24. function rule(value, _, context) {
  25. return function (root, result) {
  26. var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
  27. actual: value,
  28. possible: ["always", "never"]
  29. });
  30. if (!validOptions) {
  31. return;
  32. }
  33. var match = /^([\w-]+)\s*\(/;
  34. var replacement = value === "always" ? "$1 (" : "$1(";
  35. var checker = (0, _utils.whitespaceChecker)("space", value, messages).before;
  36. root.walkAtRules("function", function (decl) {
  37. if (context.fix) {
  38. decl.params = decl.params.replace(match, replacement);
  39. return;
  40. }
  41. checker({
  42. source: decl.params,
  43. index: decl.params.indexOf("("),
  44. err: function err(message) {
  45. return _stylelint.utils.report({
  46. message: message,
  47. node: decl,
  48. result: result,
  49. ruleName: ruleName
  50. });
  51. }
  52. });
  53. });
  54. };
  55. }
  56. rule.ruleName = ruleName;
  57. rule.messages = messages;
  58. rule.meta = meta;