Skip to content

Commit c7437b7

Browse files
Janthermattiaerre
authored andcommitted
indenting chained member and function call (#164)
1 parent 9eb6271 commit c7437b7

8 files changed

Lines changed: 106 additions & 24 deletions

File tree

src/nodes/MemberAccess.js

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,30 @@
11
const {
22
doc: {
3-
builders: { concat }
3+
builders: { concat, group, indent, softline }
44
}
55
} = require('prettier');
66

7+
const isBeginnigOfChain = path => {
8+
const parentNodeType = path.getParentNode().type;
9+
10+
if (parentNodeType === 'MemberAccess') return false;
11+
if (parentNodeType === 'FunctionCall') {
12+
const grandParentNodeType = path.getParentNode(1).type;
13+
return grandParentNodeType !== 'MemberAccess';
14+
}
15+
16+
return true;
17+
};
18+
719
const MemberAccess = {
8-
print: ({ node, path, print }) =>
9-
concat([path.call(print, 'expression'), '.', node.memberName])
20+
print: ({ node, path, print }) => {
21+
const doc = concat([
22+
path.call(print, 'expression'),
23+
indent(concat([softline, '.', node.memberName]))
24+
]);
25+
26+
return isBeginnigOfChain(path) ? group(doc) : doc;
27+
}
1028
};
1129

1230
module.exports = MemberAccess;

tests/FunctionCalls/__snapshots__/jsfmt.spec.js.snap

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ contract FunctionCalls {
99
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1010
contract FunctionCalls {
1111
function foo() {
12-
address veryLongValidatorAddress = veryVeryVeryLongSignature.popLast20Bytes();
12+
address veryLongValidatorAddress = veryVeryVeryLongSignature
13+
.popLast20Bytes();
1314
}
1415
}
1516

tests/IndexOf/__snapshots__/jsfmt.spec.js.snap

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,8 @@ contract IndexOf {
100100
{
101101
subindex = 1;
102102
while (
103-
subindex < b.length && (
104-
i + subindex
105-
) < a.length && a[i + subindex] == b[subindex] // search until the chars don't match or until we reach the end of a or b
103+
subindex < b.length && (i + subindex) < a
104+
.length && a[i + subindex] == b[subindex] // search until the chars don't match or until we reach the end of a or b
106105
) {
107106
subindex++;
108107
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
pragma solidity ^0.5.0;
2+
3+
contract MemberAccess {
4+
function() {
5+
a.b.c.d;
6+
a.b().c.d;
7+
a.b.c.d();
8+
a.b().c().d();
9+
veryLongVariable.veryLongMember.veryLongMember.veryLongMember.veryLongMember.veryLongMember;
10+
veryLongVariable.veryLongCall(veryLongAttribute).veryLongMember.veryLongMember.veryLongMember;
11+
veryLongVariable.veryLongMember.veryLongCall(veryLongAttribute).veryLongMember.veryLongMember;
12+
veryLongVariable.veryLongMember.veryLongMember.veryLongMember.veryLongCall(veryLongAttribute);
13+
veryLongVariable.veryLongCall(veryLongAttribute).veryLongCall(veryLongAttribute).veryLongCall(veryLongAttribute);
14+
}
15+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`MemberAccess.sol 1`] = `
4+
pragma solidity ^0.5.0;
5+
6+
contract MemberAccess {
7+
function() {
8+
a.b.c.d;
9+
a.b().c.d;
10+
a.b.c.d();
11+
a.b().c().d();
12+
veryLongVariable.veryLongMember.veryLongMember.veryLongMember.veryLongMember.veryLongMember;
13+
veryLongVariable.veryLongCall(veryLongAttribute).veryLongMember.veryLongMember.veryLongMember;
14+
veryLongVariable.veryLongMember.veryLongCall(veryLongAttribute).veryLongMember.veryLongMember;
15+
veryLongVariable.veryLongMember.veryLongMember.veryLongMember.veryLongCall(veryLongAttribute);
16+
veryLongVariable.veryLongCall(veryLongAttribute).veryLongCall(veryLongAttribute).veryLongCall(veryLongAttribute);
17+
}
18+
}
19+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20+
pragma solidity ^0.5.0;
21+
22+
contract MemberAccess {
23+
function() {
24+
a.b.c.d;
25+
a.b().c.d;
26+
a.b.c.d();
27+
a.b().c().d();
28+
veryLongVariable
29+
.veryLongMember
30+
.veryLongMember
31+
.veryLongMember
32+
.veryLongMember
33+
.veryLongMember;
34+
veryLongVariable
35+
.veryLongCall(veryLongAttribute)
36+
.veryLongMember
37+
.veryLongMember
38+
.veryLongMember;
39+
veryLongVariable
40+
.veryLongMember
41+
.veryLongCall(veryLongAttribute)
42+
.veryLongMember
43+
.veryLongMember;
44+
veryLongVariable
45+
.veryLongMember
46+
.veryLongMember
47+
.veryLongMember
48+
.veryLongCall(veryLongAttribute);
49+
veryLongVariable
50+
.veryLongCall(veryLongAttribute)
51+
.veryLongCall(veryLongAttribute)
52+
.veryLongCall(veryLongAttribute);
53+
}
54+
}
55+
56+
`;

tests/MemberAccess/jsfmt.spec.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
run_spec(__dirname);

tests/SplittableCommodity/__snapshots__/jsfmt.spec.js.snap

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -80,15 +80,12 @@ contract SplittableCommodity is MintableCommodity {
8080
public
8181
whenNotPaused
8282
{
83-
address supplierProxy = IContractRegistry(
84-
contractRegistry
85-
).getLatestProxyAddr("Supplier");
83+
address supplierProxy = IContractRegistry(contractRegistry)
84+
.getLatestProxyAddr("Supplier");
8685
require(
87-
msg.sender == IContractRegistry(
88-
contractRegistry
89-
).getLatestProxyAddr("FifoCrcMarket") || ISupplier(
90-
supplierProxy
91-
).isAllowed(this, "IMintableCommodity"),
86+
msg.sender == IContractRegistry(contractRegistry)
87+
.getLatestProxyAddr("FifoCrcMarket") || ISupplier(supplierProxy)
88+
.isAllowed(this, "IMintableCommodity"),
9289
"Splitting can only be done when both the ISplittableCommodity interface is enabled and is called by a supplier or the FifoCrcMarket is used."
9390
);
9491
@@ -109,9 +106,8 @@ contract SplittableCommodity is MintableCommodity {
109106
);
110107
111108
if (
112-
msg.sender == IContractRegistry(
113-
contractRegistry
114-
).getLatestProxyAddr("FifoCrcMarket")
109+
msg.sender == IContractRegistry(contractRegistry)
110+
.getLatestProxyAddr("FifoCrcMarket")
115111
) {
116112
_transfer(ownerOf(_tokenId), _to, newCRCId);
117113
} else {

tests/strings/__snapshots__/jsfmt.spec.js.snap

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1500,12 +1500,8 @@ library strings {
15001500
pure
15011501
returns (bool)
15021502
{
1503-
return rfindPtr(
1504-
self._len,
1505-
self._ptr,
1506-
needle._len,
1507-
needle._ptr
1508-
) != self._ptr;
1503+
return rfindPtr(self._len, self._ptr, needle._len, needle._ptr) != self
1504+
._ptr;
15091505
}
15101506
15111507
/*

0 commit comments

Comments
 (0)