How to force newlines in Google Apps jsdoc descriptions
Asked Answered
H

5

37

I can't figure out how in a Google Apps Script to display this correctly. I need it to display new lines in the jsdoc output(e.g. when the function tooltip window comes up in a Spreadheet functions.) I have tried html like
however it is just rendered as text and not a line break.

For example:

/**
 * Converts the prefixed value to the specified base.
 * Requires one of the following prefixes: 
 *    '0b' Base 2:   binary 
 *    '0q' Base 4:   quaternary 
 *    '0o' Base 8:   octal
 *    '0x' Base 16:  hexadecimal
 *
 * @param {string} Value The prefixed value to convert.
 * @param {number} To The base to convert to.
 * @return The converted base.
 * @customfunction
 */
function BASEP(Value, To) {

This just renders a text blob like:

Summary:
  Converts the prefixed value to the specified base. Requires
  one of the following prefixes: 0b Base 2: binary 0q Base 4:
  quaternary 0o Base 8:  octal 0x Base 16:  hexadecimal
Hist answered 30/1, 2015 at 22:8 Comment(0)
R
35

This method worked for me. In markdown (or in StackOverflow), you need to have two line breaks (ie an additional one) to start new line (or paragraph). same method worked for JSDoc

/**
 * Converts the prefixed value to the specified base.
 * 
 * Requires one of the following prefixes:
 * 
 *    '0b' Base 2:   binary<br> 
 *    '0q' Base 4:   quaternary
 *    '0o' Base 8:   octal<
 *    '0x' Base 16:  hexadecimal
 * 
 */
async function test() {
  return;
}

proof:

original case

original

with additional line:

new

ps

  • Tested on Typescript + tslint + prettier on vscode latest (idk the version, all are updated).
  • This is Loopback 4 project
Rangoon answered 7/11, 2019 at 8:13 Comment(1)
It seems that the items (0b ... , 0q ...) need to have additional line breaks too, otherwise they will be displayed in single line not as your screenshot!Taggart
K
27

Here are a few ways to control the format of your jsdoc comments in Google Apps Script:

<pre>

/**
 * Converts the prefixed value to the specified base.
 * Requires one of the following prefixes: 
 * <pre>
 *    '0b' Base 2:   binary 
 *    '0q' Base 4:   quaternary 
 *    '0o' Base 8:   octal
 *    '0x' Base 16:  hexadecimal
 * </pre>
 *
 * @param {string} Value The prefixed value to convert.
 * @param {number} To The base to convert to.
 * @return The converted base.
 * @customfunction
 */
function BASEP(Value, To) { }

<p> paragraphs

/**
 * Converts the prefixed value to the specified base.
 * Requires one of the following prefixes: 
 * <p>'0b' Base 2:   binary </p>
 * <p>'0q' Base 4:   quaternary  </p>
 * <p>'0o' Base 8:   octal </p>
 * <p>'0x' Base 16:  hexadecimal </p>
 *
 * @param {string} Value The prefixed value to convert.
 * @param {number} To The base to convert to.
 * @return The converted base.
 * @customfunction
 */
function BASEP2(Value, To) { }

List

/**
 * Converts the prefixed value to the specified base.
 * Requires one of the following prefixes: 
 * <ul style="list-style: none;">
 *  <li> '0b' Base 2:   binary 
 *  <li> '0q' Base 4:   quaternary 
 *  <li> '0o' Base 8:   octal
 *  <li> '0x' Base 16:  hexadecimal
 * </ul>
 *
 * @param {string} Value The prefixed value to convert.
 * @param {number} To The base to convert to.
 * @return The converted base.
 * @customfunction
 */
function BASEP3(Value, To) { }

Table

/**
 * Converts the prefixed value to the specified base.
 * Requires one of the following prefixes: 
 * <table style="width:30%;">
 *  <tr><td>'0b'</td><td>Base 2:</td><td>binary</td></tr>
 *  <tr><td>'0q'</td><td>Base 4:</td><td>quaternary</td></tr>
 *  <tr><td>'0o'</td><td>Base 8:</td><td>octal</td></tr>
 *  <tr><td>'0x'</td><td>Base 16:</td><td>hexadecimal</td></tr>
 * </table>
 *
 * @param {string} Value The prefixed value to convert.
 * @param {number} To The base to convert to.
 * @return The converted base.
 * @customfunction
 */
function BASEP4(Value, To) { }
Kilderkin answered 26/3, 2015 at 17:5 Comment(2)
for some reason none of this worked for me. Don't they support HTML anymore?Troytroyer
@Kilderkin #61712160Aircondition
T
18

The <pre> tag did not work for me in VSCode, but @example did;

/**
 * Fn description
 * @example
 * fn(1);
 * fn(3);
 * fn(10000000);
 **/
function fn(a: number): void {
   //...
}
Tee answered 20/7, 2019 at 20:45 Comment(2)
Best answer, it works perfectly with VSC.Lyautey
Best answer - this for code samples and double line break for normal breaks works for VSCodeTephra
B
11

I'm using Google App Script here. and the way I found do to that's description with line brake is:

/**
* Fn description
* 
* @param number {number} chose one of following:
* * fn(1);
* * fn(3);
* * fn(10000000);
**/
function fn(number) {
var mult = 4  
var result = mult*number
return result
}

And This is How it shows UP

Buckinghamshire answered 1/2, 2022 at 14:39 Comment(2)
This does not provide an answer to the question. Once you have sufficient reputation you will be able to comment on any post; instead, provide answers that don't require clarification from the asker. - From ReviewHe
This worked for me. It created a bulleted list. None of the other solutions provided here seem to work in Apps Script.Ferguson
T
9

I'm not sure about the Google Apps part of your question, but JSDoc3 will allow some HTML in descriptions, so one way of getting the output you want would be with the liberal application of some break tags, like so:

/**
 * Converts the prefixed value to the specified base.<br>
 * Requires one of the following prefixes:<br> 
 *    '0b' Base 2:   binary<br> 
 *    '0q' Base 4:   quaternary<br> 
 *    '0o' Base 8:   octal<br>
 *    '0x' Base 16:  hexadecimal
 *

That should get you the output you want. I'm not sure as to the extent of the HTML that JSDoc allows through, but I've used p, br, em etc without any problems.

Tamie answered 11/2, 2015 at 12:36 Comment(1)
I don't think at this time its possible. I tried a bunch of other things and given the 2 week lapse and a lack of answer. As far as I can tell they escape all html and newlines/spaces. It makes sense as they don't want people to stick arbitrary HTML into it, even though the allowed tags defined by JSDoc3 are limited.Hist

© 2022 - 2024 — McMap. All rights reserved.