checkEmptyLineBeforeFirstProp.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. const stylelint = require('stylelint');
  2. const _ = require('lodash');
  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 = _.reject(primaryOption, _.isString);
  19. emptyLineBefore = _.get(groups[propData.orderData.separatedGroup - 2], 'emptyLineBefore');
  20. } else if (emptyLineBeforeUnspecified) {
  21. emptyLineBefore = true;
  22. }
  23. if (emptyLineBefore && hasEmptyLineBefore(propData.node)) {
  24. if (isFixEnabled) {
  25. removeEmptyLinesBefore(propData.node, context.newline);
  26. } else {
  27. stylelint.utils.report({
  28. message: messages.rejectedEmptyLineBefore(propData.name),
  29. node: propData.node,
  30. result,
  31. ruleName,
  32. });
  33. }
  34. }
  35. };