Skip to content

Commit e1e19e0

Browse files
committed
cleanup and passing tests
1 parent c6293a7 commit e1e19e0

12 files changed

+78
-89
lines changed

src/binary-operator-printers/addition.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { defaultBinaryOperationPrinter } from './printers/create-binary-operation-printer.js';
1+
import { defaultBinaryOperationPrinter } from './printers/default-binary-operation-printer.js';
22

33
export const addition = {
44
match: (op) => ['+', '-'].includes(op),

src/binary-operator-printers/bit.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { defaultBinaryOperationPrinter } from './printers/create-binary-operation-printer.js';
1+
import { defaultBinaryOperationPrinter } from './printers/default-binary-operation-printer.js';
22

33
export const bit = {
44
match: (op) => ['&', '|', '^'].includes(op),

src/binary-operator-printers/equality.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
import {
2-
createComparisonOperationPrinter,
3-
createIndentIfNecessaryBuilder
4-
} from './printers/create-comparison-operation-printer.js';
1+
import { doc } from 'prettier';
2+
import { createBinaryOperationPrinter } from './printers/create-binary-operation-printer.js';
3+
import { createComparisonIndentIfNecessaryBuilder } from './printers/create-indent-if-necessary-builder.js';
54
import { logical } from './logical.js';
65

7-
const equalityPrinter = createComparisonOperationPrinter(
8-
createIndentIfNecessaryBuilder([logical])
6+
const { group } = doc.builders;
7+
8+
const equalityPrinter = createBinaryOperationPrinter(
9+
() => (document) => group(document), // always group
10+
createComparisonIndentIfNecessaryBuilder([logical])
911
);
1012

1113
export const equality = {

src/binary-operator-printers/exponentiation.js

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import { doc } from 'prettier';
2-
import {
3-
createBinaryOperationPrinter,
4-
createIndentIfNecessaryBuilder
5-
} from './printers/create-binary-operation-printer.js';
2+
import { createBinaryOperationPrinter } from './printers/create-binary-operation-printer.js';
3+
import { createArithmeticIndentIfNecessaryBuilder } from './printers/create-indent-if-necessary-builder.js';
64
import { addition } from './addition.js';
75
import { equality } from './equality.js';
86
import { inequality } from './inequality.js';
@@ -12,7 +10,7 @@ const { group } = doc.builders;
1210

1311
const exponentiationPrinter = createBinaryOperationPrinter(
1412
() => (document) => group(document), // always group
15-
createIndentIfNecessaryBuilder([
13+
createArithmeticIndentIfNecessaryBuilder([
1614
addition,
1715
equality,
1816
inequality,

src/binary-operator-printers/inequality.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
1-
import {
2-
createComparisonOperationPrinter,
3-
createIndentIfNecessaryBuilder
4-
} from './printers/create-comparison-operation-printer.js';
1+
import { doc } from 'prettier';
2+
import { createBinaryOperationPrinter } from './printers/create-binary-operation-printer.js';
3+
import { createComparisonIndentIfNecessaryBuilder } from './printers/create-indent-if-necessary-builder.js';
54
import { logical } from './logical.js';
65
import { equality } from './equality.js';
76

8-
const inequalityPrinter = createComparisonOperationPrinter(
9-
createIndentIfNecessaryBuilder([logical, equality])
7+
const { group } = doc.builders;
8+
9+
const inequalityPrinter = createBinaryOperationPrinter(
10+
() => (document) => group(document), // always group
11+
createComparisonIndentIfNecessaryBuilder([logical, equality])
1012
);
1113

1214
export const inequality = {

src/binary-operator-printers/multiplication.js

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
import {
2-
createBinaryOperationPrinter,
3-
createGroupIfNecessaryBuilder,
4-
createIndentIfNecessaryBuilder
5-
} from './printers/create-binary-operation-printer.js';
1+
import { createBinaryOperationPrinter } from './printers/create-binary-operation-printer.js';
2+
import { createArithmeticGroupIfNecessaryBuilder } from './printers/create-group-if-necessary-builder.js';
3+
import { createArithmeticIndentIfNecessaryBuilder } from './printers/create-indent-if-necessary-builder.js';
64
import { addition } from './addition.js';
75
import { bit } from './bit.js';
86
import { equality } from './equality.js';
@@ -12,8 +10,8 @@ import { shift } from './shift.js';
1210
const matchers = [addition, bit, equality, inequality, shift];
1311

1412
const multiplicationPrinter = createBinaryOperationPrinter(
15-
createGroupIfNecessaryBuilder(matchers),
16-
createIndentIfNecessaryBuilder(matchers)
13+
createArithmeticGroupIfNecessaryBuilder(matchers),
14+
createArithmeticIndentIfNecessaryBuilder(matchers)
1715
);
1816

1917
export const multiplication = {
Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,5 @@
1-
import { doc } from 'prettier';
2-
import { shouldGroupOrIndent } from '../utils/should-group-or-indent.js';
3-
import { equality } from '../equality.js';
4-
import { inequality } from '../inequality.js';
51
import { rightOperandPrinter } from './right-operand-printer.js';
62

7-
const { group, indent } = doc.builders;
8-
9-
const comparisonMatchers = [equality, inequality];
10-
11-
export const createGroupIfNecessaryBuilder =
12-
(matchers) => (path) => (document) => {
13-
const parentNode = path.getParentNode();
14-
if (shouldGroupOrIndent(parentNode, matchers)) return group(document);
15-
return document;
16-
};
17-
18-
export const createIndentIfNecessaryBuilder =
19-
(matchers) => (path) => (document) => {
20-
let node = path.getNode();
21-
for (let i = 0; ; i += 1) {
22-
const parentNode = path.getParentNode(i);
23-
if (parentNode.type === 'ReturnStatement') return document;
24-
if (shouldGroupOrIndent(parentNode, matchers)) return indent(document);
25-
if (node === parentNode.right) return document;
26-
node = parentNode;
27-
}
28-
};
29-
303
export const createBinaryOperationPrinter =
314
(groupIfNecessaryBuilder, indentIfNecessaryBuilder) =>
325
(node, path, print, options) => {
@@ -38,8 +11,3 @@ export const createBinaryOperationPrinter =
3811
indentIfNecessary(rightOperandPrinter(node, path, print, options))
3912
]);
4013
};
41-
42-
export const defaultBinaryOperationPrinter = createBinaryOperationPrinter(
43-
createGroupIfNecessaryBuilder(comparisonMatchers),
44-
createIndentIfNecessaryBuilder(comparisonMatchers)
45-
);

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

Lines changed: 0 additions & 30 deletions
This file was deleted.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { doc } from 'prettier';
2+
import { shouldGroupOrIndent } from '../utils/should-group-or-indent.js';
3+
4+
const { group } = doc.builders;
5+
6+
export const createArithmeticGroupIfNecessaryBuilder =
7+
(matchers) => (path) => (document) => {
8+
const parentNode = path.getParentNode();
9+
if (shouldGroupOrIndent(parentNode, matchers)) return group(document);
10+
return document;
11+
};
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { doc } from 'prettier';
2+
import { shouldGroupOrIndent } from '../utils/should-group-or-indent.js';
3+
4+
const { indent } = doc.builders;
5+
6+
const createIndentIfNecessaryBuilder =
7+
(notIndentParentTypes) => (shouldIndentMatchers) => (path) => (document) => {
8+
let node = path.getNode();
9+
for (let i = 0; ; i += 1) {
10+
const parentNode = path.getParentNode(i);
11+
if (notIndentParentTypes.includes(parentNode.type)) return document;
12+
if (shouldGroupOrIndent(parentNode, shouldIndentMatchers))
13+
return indent(document);
14+
if (node === parentNode.right) return document;
15+
node = parentNode;
16+
}
17+
};
18+
19+
export const createArithmeticIndentIfNecessaryBuilder =
20+
createIndentIfNecessaryBuilder(['ReturnStatement']);
21+
22+
export const createComparisonIndentIfNecessaryBuilder =
23+
createIndentIfNecessaryBuilder([
24+
'ReturnStatement',
25+
'IfStatement',
26+
'ForStatement',
27+
'WhileStatement'
28+
]);
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { createBinaryOperationPrinter } from './create-binary-operation-printer.js';
2+
import { createArithmeticGroupIfNecessaryBuilder } from './create-group-if-necessary-builder.js';
3+
import { createArithmeticIndentIfNecessaryBuilder } from './create-indent-if-necessary-builder.js';
4+
import { equality } from '../equality.js';
5+
import { inequality } from '../inequality.js';
6+
7+
const comparisonMatchers = [equality, inequality];
8+
9+
export const defaultBinaryOperationPrinter = createBinaryOperationPrinter(
10+
createArithmeticGroupIfNecessaryBuilder(comparisonMatchers),
11+
createArithmeticIndentIfNecessaryBuilder(comparisonMatchers)
12+
);

src/binary-operator-printers/shift.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { defaultBinaryOperationPrinter } from './printers/create-binary-operation-printer.js';
1+
import { defaultBinaryOperationPrinter } from './printers/default-binary-operation-printer.js';
22

33
export const shift = {
44
match: (op) => ['<<', '>>'].includes(op),

0 commit comments

Comments
 (0)