newlineAfterDescription.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _lodash = _interopRequireDefault(require("lodash"));
  7. var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc"));
  8. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  9. var _default = (0, _iterateJsdoc.default)(function (_ref) {
  10. var jsdoc = _ref.jsdoc,
  11. report = _ref.report,
  12. context = _ref.context,
  13. jsdocNode = _ref.jsdocNode,
  14. sourceCode = _ref.sourceCode,
  15. indent = _ref.indent;
  16. var always;
  17. if (!jsdoc.description || !jsdoc.tags.length) {
  18. return;
  19. }
  20. if (_lodash.default.has(context.options, 0)) {
  21. always = context.options[0] === 'always';
  22. } else {
  23. always = true;
  24. } // The contents of the jsdoc.source and of jsdoc.description is left trimmed.
  25. // The contents of the jsdoc.description is right trimmed.
  26. // This gets the text following the description.
  27. var descriptionEndsWithANewline = _lodash.default.startsWith(jsdoc.source.slice(jsdoc.description.length), '\n\n');
  28. if (always) {
  29. if (!descriptionEndsWithANewline) {
  30. report('There must be a newline after the description of the JSDoc block.', function (fixer) {
  31. var sourceLines = sourceCode.getText(jsdocNode).split('\n');
  32. var lastDescriptionLine = _lodash.default.findLastIndex(sourceLines, function (line) {
  33. return _lodash.default.includes(line, _lodash.default.last(jsdoc.description.split('\n')));
  34. }); // Add the new line
  35. sourceLines.splice(lastDescriptionLine + 1, 0, indent + ' *');
  36. return fixer.replaceText(jsdocNode, sourceLines.join('\n'));
  37. });
  38. }
  39. } else if (descriptionEndsWithANewline) {
  40. report('There must be no newline after the description of the JSDoc block.', function (fixer) {
  41. var sourceLines = sourceCode.getText(jsdocNode).split('\n');
  42. var lastDescriptionLine = _lodash.default.findLastIndex(sourceLines, function (line) {
  43. return _lodash.default.includes(line, _lodash.default.last(jsdoc.description.split('\n')));
  44. }); // Remove the extra line
  45. sourceLines.splice(lastDescriptionLine + 1, 1);
  46. return fixer.replaceText(jsdocNode, sourceLines.join('\n'));
  47. });
  48. }
  49. });
  50. exports.default = _default;
  51. module.exports = exports.default;
  52. //# sourceMappingURL=newlineAfterDescription.js.map