index.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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 _operatorNoUnspaced = require("../operator-no-unspaced");
  10. var ruleName = (0, _utils.namespace)("operator-no-newline-before");
  11. exports.ruleName = ruleName;
  12. var messages = _stylelint.utils.ruleMessages(ruleName, {
  13. rejected: function rejected(operator) {
  14. return "Unexpected newline before \"".concat(operator, "\"");
  15. }
  16. });
  17. exports.messages = messages;
  18. var meta = {
  19. url: (0, _utils.ruleUrl)(ruleName)
  20. };
  21. /**
  22. * The checker function: whether there is a newline before THAT operator.
  23. */
  24. exports.meta = meta;
  25. function checkNewlineBefore(_ref) {
  26. var string = _ref.string,
  27. globalIndex = _ref.globalIndex,
  28. startIndex = _ref.startIndex,
  29. endIndex = _ref.endIndex,
  30. node = _ref.node,
  31. result = _ref.result;
  32. var symbol = string.substring(startIndex, endIndex + 1);
  33. var newLineBefore = false;
  34. var index = startIndex - 1;
  35. while (index && (0, _utils.isWhitespace)(string[index])) {
  36. if (string[index] === "\n") {
  37. newLineBefore = true;
  38. break;
  39. }
  40. index--;
  41. }
  42. if (newLineBefore) {
  43. _stylelint.utils.report({
  44. ruleName: ruleName,
  45. result: result,
  46. node: node,
  47. message: messages.rejected(symbol),
  48. index: endIndex + globalIndex
  49. });
  50. }
  51. }
  52. function rule(expectation) {
  53. return function (root, result) {
  54. var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
  55. actual: expectation
  56. });
  57. if (!validOptions) {
  58. return;
  59. }
  60. (0, _utils.eachRoot)(root, checkRoot);
  61. function checkRoot(root) {
  62. (0, _operatorNoUnspaced.calculationOperatorSpaceChecker)({
  63. root: root,
  64. result: result,
  65. checker: checkNewlineBefore
  66. });
  67. }
  68. };
  69. }
  70. rule.ruleName = ruleName;
  71. rule.messages = messages;
  72. rule.meta = meta;