checkEmptyLineBeforeFirstProp.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. const stylelint = require('stylelint');
  2. const { isString } = require('../../utils/validateType');
  3. const ruleName = require('./ruleName');
  4. const messages = require('./messages');
  5. const hasEmptyLineBefore = require('./hasEmptyLineBefore');
  6. const removeEmptyLinesBefore = require('./removeEmptyLinesBefore');
  7. module.exports = function checkEmptyLineBeforeFirstProp({
  8. propData,
  9. primaryOption,
  10. emptyLineBeforeUnspecified,
  11. isFixEnabled,
  12. context,
  13. result,
  14. }) {
  15. let emptyLineBefore = false;
  16. if (propData.orderData) {
  17. // Get an array of just the property groups, remove any solo properties
  18. let groups = primaryOption.filter((item) => !isString(item));
  19. emptyLineBefore =
  20. groups[propData.orderData.separatedGroup - 2] &&
  21. groups[propData.orderData.separatedGroup - 2].emptyLineBefore;
  22. } else if (emptyLineBeforeUnspecified) {
  23. emptyLineBefore = true;
  24. }
  25. if (emptyLineBefore && hasEmptyLineBefore(propData.node)) {
  26. if (isFixEnabled) {
  27. removeEmptyLinesBefore(propData.node, context.newline);
  28. } else {
  29. stylelint.utils.report({
  30. message: messages.rejectedEmptyLineBefore(propData.name),
  31. node: propData.node,
  32. result,
  33. ruleName,
  34. });
  35. }
  36. }
  37. };