Skip to content

Format optional types with ? instead of [] #538

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Nov 18, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions default_theme/section._
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@
<div class='space-bottom0'>
<div>
<span class='code bold'><%- param.name%></span> <code class='quiet'>(<%= formatType(param.type) %><% if (param.default) { %>
(default <code><%- param.default %></code>)
<% } %>)</code> <%= md(param.description, true) %>
= <code><%- param.default %></code><% } %>)</code>
<%= md(param.description, true) %>
</div>
<% if (param.properties) { %>
<table class='mt1 mb2 fixed-table h5 col-12'>
Expand Down
11 changes: 7 additions & 4 deletions lib/output/util/format_type.js
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ function commaList(getHref, items, start, end, sep) {
*
* @param {Array<Object>} formatted remark AST of a type definition
* @param {string} str postfix
* @param {string} prefix string to put after the type comment
* @param {boolean} prefix string to put after the type comment
* @returns {Array<Object>} suffixed and potentially prefixed type
*/
function decorate(formatted, str, prefix) {
Expand Down Expand Up @@ -163,12 +163,15 @@ function formatType(getHref, node) {
// lets the expression be omitted.
return decorate(formatType(getHref, node.expression), '...', true);
case Syntax.OptionalType:
return decorate(decorate(formatType(getHref, node.expression), '[', true), ']').concat(
node.default ? t('(default ' + node.default + ')') : []);
if (node.default) {
return decorate(formatType(getHref, node.expression), '?')
.concat(t('= ' + node.default));
}
return decorate(formatType(getHref, node.expression), '?');
case Syntax.NonNullableType:
return decorate(formatType(getHref, node.expression), '!', node.prefix);
case Syntax.NullableType:
return decorate(formatType(getHref, node.expression), '?', node.prefix);
return decorate(formatType(getHref, node.expression), '?');
case Syntax.StringLiteralType:
return [u('inlineCode', JSON.stringify(node.value))];
case Syntax.NumericLiteralType:
Expand Down
9 changes: 7 additions & 2 deletions lib/output/util/formatters.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,13 @@ module.exports = function (getHref) {
*/
formatters.parameter = function (param, short) {
if (short) {
return (param.type && param.type.type == Syntax.OptionalType) ?
'[' + param.name + ']' : param.name;
if (param.type && param.type.type == Syntax.OptionalType) {
if (param.default) {
return param.name + ' = ' + param.default;
}
return param.name + '?';
}
return param.name;
}
return param.name + ': ' + formatters.type(param.type).replace(/\n/g, '');
};
Expand Down
39 changes: 24 additions & 15 deletions test/fixture/html/nested.output.files
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,8 @@

<div class='space-bottom0'>
<div>
<span class='code bold'>foo</span> <code class='quiet'>(any)</code>
<span class='code bold'>foo</span> <code class='quiet'>(any)</code>

</div>

</div>
Expand Down Expand Up @@ -293,14 +294,16 @@ This is a [link to something that does not exist]<a href="DoesNot">DoesNot</a></

<div class='space-bottom0'>
<div>
<span class='code bold'>other</span> <code class='quiet'>(<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object">Object</a>)</code>
<span class='code bold'>other</span> <code class='quiet'>(<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object">Object</a>)</code>

</div>

</div>

<div class='space-bottom0'>
<div>
<span class='code bold'>also</span> <code class='quiet'>(any)</code>
<span class='code bold'>also</span> <code class='quiet'>(any)</code>

</div>

</div>
Expand Down Expand Up @@ -366,7 +369,8 @@ the referenced class type</p>

<div class='space-bottom0'>
<div>
<span class='code bold'>other</span> <code class='quiet'>(Weird)</code>
<span class='code bold'>other</span> <code class='quiet'>(Weird)</code>

</div>

</div>
Expand Down Expand Up @@ -404,7 +408,7 @@ the referenced class type</p>
<div class="clearfix small pointer toggle-sibling">
<div class="py1 contain">
<a class='icon pin-right py1 dark-link caret-right'>▸</a>
<span class='code strong strong truncate'>isBuffer(buf, [size])</span>
<span class='code strong strong truncate'>isBuffer(buf, size = 0)</span>
</div>
</div>
<div class="clearfix display-none toggle-target">
Expand All @@ -415,7 +419,7 @@ the referenced class type</p>
<p>This method takes a Buffer object that will be linked to nodejs.org</p>


<div class='pre p1 fill-light mt0'>isBuffer(buf: (<a href="https://nodejs.org/api/buffer.html">Buffer</a> | <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String">string</a>), size: [<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number">number</a>]): <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean">boolean</a></div>
<div class='pre p1 fill-light mt0'>isBuffer(buf: (<a href="https://nodejs.org/api/buffer.html">Buffer</a> | <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String">string</a>), size: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number">number</a>?): <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean">boolean</a></div>



Expand All @@ -431,16 +435,17 @@ the referenced class type</p>

<div class='space-bottom0'>
<div>
<span class='code bold'>buf</span> <code class='quiet'>((<a href="https://nodejs.org/api/buffer.html">Buffer</a> | <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String">string</a>))</code>
<span class='code bold'>buf</span> <code class='quiet'>((<a href="https://nodejs.org/api/buffer.html">Buffer</a> | <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String">string</a>))</code>

</div>

</div>

<div class='space-bottom0'>
<div>
<span class='code bold'>size</span> <code class='quiet'>([<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number">number</a>]
(default <code>0</code>)
)</code> size
<span class='code bold'>size</span> <code class='quiet'>(<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number">number</a>?
= <code>0</code>)</code>
size

</div>

Expand Down Expand Up @@ -506,7 +511,8 @@ the referenced class type</p>

<div class='space-bottom0'>
<div>
<span class='code bold'>buffers</span> <code class='quiet'>(<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array">Array</a>&#x3C;<a href="https://nodejs.org/api/buffer.html">Buffer</a>>)</code> some buffers
<span class='code bold'>buffers</span> <code class='quiet'>(<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array">Array</a>&#x3C;<a href="https://nodejs.org/api/buffer.html">Buffer</a>>)</code>
some buffers

</div>

Expand Down Expand Up @@ -721,7 +727,7 @@ k.isArrayOfBuffers();</pre>
<p>A function with an options parameter</p>


<div class='pre p1 fill-light mt0'>withOptions(options: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object">Object</a>, otherOptions: ?<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number">number</a>)</div>
<div class='pre p1 fill-light mt0'>withOptions(options: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object">Object</a>, otherOptions: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number">number</a>?)</div>



Expand All @@ -737,7 +743,8 @@ k.isArrayOfBuffers();</pre>

<div class='space-bottom0'>
<div>
<span class='code bold'>options</span> <code class='quiet'>(<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object">Object</a>)</code>
<span class='code bold'>options</span> <code class='quiet'>(<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object">Object</a>)</code>

</div>

<table class='mt1 mb2 fixed-table h5 col-12'>
Expand Down Expand Up @@ -772,7 +779,8 @@ k.isArrayOfBuffers();</pre>

<div class='space-bottom0'>
<div>
<span class='code bold'>otherOptions</span> <code class='quiet'>(?<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number">number</a>)</code>
<span class='code bold'>otherOptions</span> <code class='quiet'>(<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number">number</a>?)</code>

</div>

</div>
Expand Down Expand Up @@ -968,7 +976,8 @@ like a <a href="#klass">klass</a></p>

<div class='space-bottom0'>
<div>
<span class='code bold'>toys</span> <code class='quiet'>(...<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number">Number</a>)</code>
<span class='code bold'>toys</span> <code class='quiet'>(...<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number">Number</a>)</code>

</div>

</div>
Expand Down
2 changes: 1 addition & 1 deletion test/fixture/nearby_params.output.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ Attempt to establish a cookie-based session in exchange for credentials.
- `credentials` **[object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)**
- `credentials.name` **[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** Login username. Also accepted as `username` or `email`.
- `credentials.password` **[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** Login password
- `callback` **\[[function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)]** Gets passed `(err, { success:Boolean })`.
- `callback` **[function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)?** Gets passed `(err, { success:Boolean })`.

Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)** promise, to be resolved on success or rejected on failure
6 changes: 1 addition & 5 deletions test/fixture/nearby_params.output.md.json
Original file line number Diff line number Diff line change
Expand Up @@ -338,10 +338,6 @@
{
"type": "strong",
"children": [
{
"type": "text",
"value": "["
},
{
"href": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function",
"url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function",
Expand All @@ -355,7 +351,7 @@
},
{
"type": "text",
"value": "]"
"value": "?"
}
]
},
Expand Down
2 changes: 1 addition & 1 deletion test/fixture/nest_params.output.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
- `employees` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)&lt;[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)>** The employees who are responsible for the project.
- `employees[].name` **[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** The name of an employee.
- `employees[].department` **[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** The employee's department.
- `type` **\[[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)]** The employee's type. (optional, default `minion`)
- `type` **[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)?** The employee's type. (optional, default `minion`)

# foo

Expand Down
6 changes: 1 addition & 5 deletions test/fixture/nest_params.output.md.json
Original file line number Diff line number Diff line change
Expand Up @@ -289,10 +289,6 @@
{
"type": "strong",
"children": [
{
"type": "text",
"value": "["
},
{
"href": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String",
"url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String",
Expand All @@ -306,7 +302,7 @@
},
{
"type": "text",
"value": "]"
"value": "?"
}
]
},
Expand Down
2 changes: 1 addition & 1 deletion test/fixture/optional-record-field-type.output.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@

**Properties**

- `opt` **\[[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)]**
- `opt` **[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)?**
- `req` **[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)**
6 changes: 1 addition & 5 deletions test/fixture/optional-record-field-type.output.md.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,6 @@
{
"type": "strong",
"children": [
{
"type": "text",
"value": "["
},
{
"href": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number",
"url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number",
Expand All @@ -62,7 +58,7 @@
},
{
"type": "text",
"value": "]"
"value": "?"
}
]
},
Expand Down
18 changes: 9 additions & 9 deletions test/fixture/params.output.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ This method has a type in the description and a default in the code

**Parameters**

- `x` **\[[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)](default 2)**
- `x` **[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)?= 2**

# Foo

Expand All @@ -53,9 +53,9 @@ This tests our support of optional parameters
**Parameters**

- `address` **[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** An IPv6 address string
- `groups` **\[[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)]** How many octets to parse (optional, default `8`)
- `third` **?[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)** A third argument
- `foo` **\[[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)]** to properly be parsed (optional, default `[1]`)
- `groups` **[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)?** How many octets to parse (optional, default `8`)
- `third` **[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)?** A third argument
- `foo` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)?** to properly be parsed (optional, default `[1]`)

**Examples**

Expand All @@ -71,12 +71,12 @@ This tests our support of nested parameters

**Parameters**

- `options` **\[[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)]** optional options
- `options` **[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)?** optional options
- `options.data` **([Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) \| [string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String))** A GeoJSON data object or URL to it.
The latter is preferable in case of large GeoJSON files.
- `options.maxzoom` **\[[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)]** Maximum zoom to preserve detail at. (optional, default `14`)
- `options.buffer` **\[[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)]** Tile buffer on each side.
- `options.tolerance` **\[[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)]** Simplification tolerance (higher means simpler).
- `options.maxzoom` **[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)?** Maximum zoom to preserve detail at. (optional, default `14`)
- `options.buffer` **[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)?** Tile buffer on each side.
- `options.tolerance` **[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)?** Simplification tolerance (higher means simpler).

# myfunc

Expand All @@ -85,7 +85,7 @@ values specified in code.

**Parameters**

- `x` **\[[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)](default 123)** an argument
- `x` **[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)?= 123** an argument

Returns **[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)** some

Expand Down
Loading