noBlankBlockDescriptions.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc.js"));
  7. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  8. const anyWhitespaceLines = /^\s*$/u;
  9. const atLeastTwoLinesWhitespace = /^[ \t]*\n[ \t]*\n\s*$/u;
  10. var _default = exports.default = (0, _iterateJsdoc.default)(({
  11. jsdoc,
  12. utils
  13. }) => {
  14. const {
  15. description,
  16. descriptions,
  17. lastDescriptionLine
  18. } = utils.getDescription();
  19. const regex = jsdoc.tags.length ? anyWhitespaceLines : atLeastTwoLinesWhitespace;
  20. if (descriptions.length && regex.test(description)) {
  21. if (jsdoc.tags.length) {
  22. utils.reportJSDoc('There should be no blank lines in block descriptions followed by tags.', {
  23. line: lastDescriptionLine
  24. }, () => {
  25. utils.setBlockDescription(() => {
  26. // Remove all lines
  27. return [];
  28. });
  29. });
  30. } else {
  31. utils.reportJSDoc('There should be no extra blank lines in block descriptions not followed by tags.', {
  32. line: lastDescriptionLine
  33. }, () => {
  34. utils.setBlockDescription((info, seedTokens) => {
  35. return [
  36. // Keep the starting line
  37. {
  38. number: 0,
  39. source: '',
  40. tokens: seedTokens({
  41. ...info,
  42. description: ''
  43. })
  44. }];
  45. });
  46. });
  47. }
  48. }
  49. }, {
  50. iterateAllJsdocs: true,
  51. meta: {
  52. docs: {
  53. description: 'Detects and removes extra lines of a blank block description',
  54. url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-blank-block-descriptions.md#repos-sticky-header'
  55. },
  56. fixable: 'whitespace',
  57. schema: [],
  58. type: 'layout'
  59. }
  60. });
  61. module.exports = exports.default;
  62. //# sourceMappingURL=noBlankBlockDescriptions.js.map