|
1 | 1 | const { |
2 | 2 | doc: { |
3 | | - builders: { group } |
| 3 | + builders: { group, ifBreak, indent } |
4 | 4 | } |
5 | 5 | } = require('prettier'); |
6 | 6 |
|
7 | 7 | const printSeparatedList = require('./print-separated-list'); |
8 | 8 |
|
9 | | -const embraceVariables = (doc, embrace) => (embrace ? ['(', doc, ')'] : doc); |
| 9 | +const embraceVariables = (doc, embrace) => |
| 10 | + embrace ? ['(', printSeparatedList(doc), ')'] : doc; |
10 | 11 |
|
11 | 12 | const initialValue = (node, path, print) => |
12 | 13 | node.initialValue ? [' = ', path.call(print, 'initialValue')] : ''; |
13 | 14 |
|
| 15 | +let groupIndex = 0; |
14 | 16 | const VariableDeclarationStatement = { |
15 | 17 | print: ({ node, path, print }) => { |
16 | 18 | const startsWithVar = |
17 | 19 | node.variables.filter((x) => x && x.typeName).length === 0; |
18 | 20 |
|
| 21 | + const declarationDoc = group( |
| 22 | + [ |
| 23 | + startsWithVar ? 'var ' : '', |
| 24 | + embraceVariables( |
| 25 | + path.map(print, 'variables'), |
| 26 | + node.variables.length > 1 || startsWithVar |
| 27 | + ) |
| 28 | + ], |
| 29 | + { id: `VariableDeclarationStatement.variables-${groupIndex}` } |
| 30 | + ); |
| 31 | + groupIndex += 1; |
| 32 | + const initialValueDoc = initialValue(node, path, print); |
| 33 | + |
19 | 34 | return group([ |
20 | | - startsWithVar ? 'var ' : '', |
21 | | - embraceVariables( |
22 | | - printSeparatedList(path.map(print, 'variables')), |
23 | | - node.variables.length > 1 || startsWithVar |
24 | | - ), |
25 | | - initialValue(node, path, print), |
| 35 | + declarationDoc, |
| 36 | + ifBreak(indent(initialValueDoc), initialValueDoc, { |
| 37 | + groupId: declarationDoc.id |
| 38 | + }), |
26 | 39 | node.omitSemicolon ? '' : ';' |
27 | 40 | ]); |
28 | 41 | } |
|
0 commit comments