documentation icon indicating copy to clipboard operation
documentation copied to clipboard

@returns object only support text, it does not provide a default return value formatted with code

Open kopax opened this issue 6 years ago • 2 comments

I have been trying to use @returns with an object and write the documentation.

I always get the same output, for instance:

* @returns {Object} result - The result state.
 * @returns {boolean} result.success - True if no errors.
 * @returns {boolean} result.generatedPdfFilePathList - List of generated PDF filepath.
 * @returns {Object} result.generatedLatexFilePathList - List of generated LaTeX filepath or undefined if nothing.
 * @returns {string} result.errors - List of errors or undefined if no errors.

It will not use <code> for result, after {object} everything is considered as text.

I have also tried:

 * @return {object} [result={
 *  success, // True if no errors.
 *  generatedPdfFilePathList, // List of generated PDF filepath.
 *  generatedLatexFilePathList, // List of generated LaTeX filepath or undefined if nothing.
 *  errors, // List of errors or undefined if no errors.
 * }] - The result object.

Same result.

This force us to write text while we wan't to describe the returned object:

 * @return {object} including success, generatedPdfFilePathList, generatedLatexFilePathList and errors

Is there a way to write documentation for this properly?

kopax avatar Sep 29 '19 19:09 kopax

The @returns implementation follows the JSDoc spec ( https://jsdoc.app/tags-returns.html ) which doesn't include default values or nesting. We could support a more expressive syntax here, but it'd need to be a non-standard extension of JSDoc.

tmcw avatar Oct 14 '19 19:10 tmcw

It would be nice to allow this, we could recycle the @param behavior.

kopax avatar Oct 14 '19 20:10 kopax