index.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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)("double-slash-comment-whitespace-inside");
  10. exports.ruleName = ruleName;
  11. var messages = _stylelint.utils.ruleMessages(ruleName, {
  12. expected: "Expected a space after //",
  13. rejected: "Unexpected space after //"
  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. possible: ["always", "never"]
  25. });
  26. if (!validOptions) {
  27. return;
  28. }
  29. (0, _utils.eachRoot)(root, checkRoot);
  30. function checkRoot(root) {
  31. var rootString = root.source.input.css;
  32. if (rootString.trim() === "") {
  33. return;
  34. }
  35. var comments = (0, _utils.findCommentsInRaws)(rootString);
  36. comments.forEach(function (comment) {
  37. // Only process // comments
  38. if (comment.type !== "double-slash") {
  39. return;
  40. }
  41. // if it's `//` - no warning whatsoever; if `// ` - then trailing
  42. // whitespace rule will govern this
  43. if (comment.text === "") {
  44. return;
  45. }
  46. var message;
  47. if (expectation === "never" && comment.raws.left !== "") {
  48. message = messages.rejected;
  49. } else if (comment.raws.left === "" && expectation === "always") {
  50. message = messages.expected;
  51. } else {
  52. return;
  53. }
  54. _stylelint.utils.report({
  55. message: message,
  56. node: root,
  57. index: comment.source.start + comment.raws.startToken.length,
  58. result: result,
  59. ruleName: ruleName
  60. });
  61. });
  62. }
  63. };
  64. }
  65. rule.ruleName = ruleName;
  66. rule.messages = messages;
  67. rule.meta = meta;