Skip to content

Commit b836bbf

Browse files
committed
upon review, binary operation's indentation behave as equality, inequality when it's a child of IfStatement, ForStatement, or WhileStatement so there's no need for separate behaviours
1 parent 4d713a2 commit b836bbf

7 files changed

+19
-27
lines changed
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { comparisonOperationPrinter } from './printers/comparison-operation-printer.js';
1+
import { binaryOperationPrinter } from './printers/binary-operation-printer.js';
22
import { logical } from './logical.js';
33

44
export const equality = {
55
match: (op) => ['==', '!='].includes(op),
6-
print: comparisonOperationPrinter([logical])
6+
print: binaryOperationPrinter([logical])
77
};

src/binary-operator-printers/exponentiation.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { doc } from 'prettier';
22
import { createBinaryOperationPrinter } from './printers/create-binary-operation-printer.js';
3-
import { createBinaryIndentIfNecessaryBuilder } from './printers/binary-operation-printer.js';
3+
import { createIndentIfNecessaryBuilder } from './printers/create-indent-if-necessary-builder.js';
44
import { multiplication } from './multiplication.js';
55
import { addition } from './addition.js';
66
import { shift } from './shift.js';
@@ -15,7 +15,7 @@ export const exponentiation = {
1515
match: (op) => op === '**',
1616
print: createBinaryOperationPrinter(
1717
() => (document) => group(document), // always group
18-
createBinaryIndentIfNecessaryBuilder([
18+
createIndentIfNecessaryBuilder([
1919
multiplication,
2020
addition,
2121
shift,
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { comparisonOperationPrinter } from './printers/comparison-operation-printer.js';
1+
import { binaryOperationPrinter } from './printers/binary-operation-printer.js';
22
import { logical } from './logical.js';
33
import { equality } from './equality.js';
44

55
export const inequality = {
66
match: (op) => ['<', '>', '<=', '>='].includes(op),
7-
print: comparisonOperationPrinter([logical, equality])
7+
print: binaryOperationPrinter([logical, equality])
88
};

src/binary-operator-printers/logical.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
import { doc } from 'prettier';
22
import { createBinaryOperationPrinter } from './printers/create-binary-operation-printer.js';
33
import { createGroupIfNecessaryBuilder } from './printers/create-group-if-necessary-builder.js';
4+
import { notIndentParentTypes } from './printers/create-indent-if-necessary-builder.js';
5+
import { shouldGroupOrIndent } from './utils/should-group-or-indent.js';
46

57
const { indent } = doc.builders;
68

79
const indentIfNecessaryBuilder = (path, options) => (document) => {
810
let node = path.getNode();
911
for (let i = 0; ; i += 1) {
1012
const parentNode = path.getParentNode(i);
11-
if (parentNode.type === 'ReturnStatement') return document;
12-
if (parentNode.type === 'IfStatement') return document;
13-
if (parentNode.type === 'WhileStatement') return document;
13+
if (notIndentParentTypes.includes(parentNode.type)) return document;
1414
if (
1515
options.experimentalTernaries &&
1616
parentNode.type === 'Conditional' &&
1717
parentNode.condition === node
1818
)
1919
return document;
20-
if (parentNode.type !== 'BinaryOperation') return indent(document);
20+
if (shouldGroupOrIndent(parentNode, [])) return indent(document);
2121
if (node === parentNode.right) return document;
2222
node = parentNode;
2323
}

src/binary-operator-printers/printers/binary-operation-printer.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,8 @@ import { createBinaryOperationPrinter } from './create-binary-operation-printer.
22
import { createGroupIfNecessaryBuilder } from './create-group-if-necessary-builder.js';
33
import { createIndentIfNecessaryBuilder } from './create-indent-if-necessary-builder.js';
44

5-
export const createBinaryIndentIfNecessaryBuilder =
6-
createIndentIfNecessaryBuilder(['ReturnStatement']);
7-
85
export const binaryOperationPrinter = (shouldGroupAndIndentMatchers) =>
96
createBinaryOperationPrinter(
107
createGroupIfNecessaryBuilder(shouldGroupAndIndentMatchers),
11-
createBinaryIndentIfNecessaryBuilder(shouldGroupAndIndentMatchers)
8+
createIndentIfNecessaryBuilder(shouldGroupAndIndentMatchers)
129
);

src/binary-operator-printers/printers/comparison-operation-printer.js

Lines changed: 0 additions & 12 deletions
This file was deleted.

src/binary-operator-printers/printers/create-indent-if-necessary-builder.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,15 @@ import { shouldGroupOrIndent } from '../utils/should-group-or-indent.js';
33

44
const { indent } = doc.builders;
55

6+
export const notIndentParentTypes = [
7+
'ReturnStatement',
8+
'IfStatement',
9+
'ForStatement',
10+
'WhileStatement'
11+
];
12+
613
export const createIndentIfNecessaryBuilder =
7-
(notIndentParentTypes) => (shouldIndentMatchers) => (path) => (document) => {
14+
(shouldIndentMatchers) => (path) => (document) => {
815
let node = path.getNode();
916
for (let i = 0; ; i += 1) {
1017
const parentNode = path.getParentNode(i);

0 commit comments

Comments
 (0)