Skip to content

Commit 47cb113

Browse files
committed
feature: @putout/printer: apply-linebreak: add support of 'indent()', 'write.indent()'
1 parent 57f2856 commit 47cb113

File tree

13 files changed

+144
-12
lines changed

13 files changed

+144
-12
lines changed
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
{
22
"printer": "putout",
3-
"rules": {
4-
"putout": "on"
3+
"match": {
4+
"*.md": {
5+
"putout/declare": "off"
6+
}
57
}
68
}

packages/plugin-printer/README.md

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ npm i @putout/plugin-printer -D
1919
"printer/add-args": "on",
2020
"printer/apply-breakline": "on",
2121
"printer/apply-linebreak": "on",
22-
"printer/apply-computed-print": "on"
22+
"printer/apply-computed-print": "on",
23+
"printer/remove-args": "on"
2324
}
2425
}
2526
```
@@ -80,6 +81,20 @@ print(path.get('block'));
8081
print('__block');
8182
```
8283

84+
## remove-args
85+
86+
### ❌ Example of incorrect code
87+
88+
```js
89+
print.indent(is);
90+
```
91+
92+
### ✅ Example of correct code
93+
94+
```js
95+
print.indent();
96+
```
97+
8398
## License
8499

85100
MIT

packages/plugin-printer/lib/apply-breakline/index.js

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,10 @@ const next = (path) => path.parentPath.getNextSibling();
1818

1919
module.exports.fix = (path) => {
2020
const sibling = next(path);
21-
remove(sibling);
22-
23-
if (compare(path, 'print.newline()'))
24-
return replaceWith(path, template.ast('print.breakline()'));
21+
const newNode = choose(path);
2522

26-
if (compare(path, 'write.newline()'))
27-
return replaceWith(path, template.ast('write.breakline()'));
23+
remove(sibling);
24+
replaceWith(path, newNode);
2825
};
2926

3027
module.exports.filter = (path) => {
@@ -39,3 +36,10 @@ module.exports.include = () => [
3936
'print.newline()',
4037
'write.newline()',
4138
];
39+
40+
function choose(path) {
41+
if (compare(path, 'print.newline()'))
42+
return template.ast('print.breakline()');
43+
44+
return template.ast('write.breakline()');
45+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
write.linebreak();
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
indent();
2+
write.newline();
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
write.linebreak();
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
write.indent();
2+
write.newline();

packages/plugin-printer/lib/apply-linebreak/index.js

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ const {
77

88
const {
99
compare,
10+
compareAny,
1011
replaceWith,
1112
remove,
1213
} = operator;
@@ -16,14 +17,29 @@ module.exports.report = () => `linebreak = indent + newline`;
1617
const prev = (path) => path.parentPath.getPrevSibling();
1718

1819
module.exports.fix = (path) => {
19-
remove(prev(path));
20-
replaceWith(path, template.ast('print.linebreak()'));
20+
const sibling = prev(path);
21+
const newNode = choose(path);
22+
23+
remove(sibling);
24+
replaceWith(path, newNode);
2125
};
2226

2327
module.exports.include = () => [
2428
'print.newline()',
29+
'write.newline()',
2530
];
2631

2732
module.exports.filter = (path) => {
28-
return compare(prev(path), 'print.indent()');
33+
return compareAny(prev(path), [
34+
'indent()',
35+
'print.indent()',
36+
'write.indent()',
37+
]);
2938
};
39+
40+
function choose(path) {
41+
if (compare(path, 'print.newline()'))
42+
return template.ast('print.linebreak()');
43+
44+
return template.ast('write.linebreak()');
45+
}

packages/plugin-printer/lib/apply-linebreak/index.spec.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,13 @@ test('rule: apply-linebreak: transform', (t) => {
1919
t.transform('apply-linebreak');
2020
t.end();
2121
});
22+
23+
test('rule: apply-linebreak: transform: indent', (t) => {
24+
t.transform('indent');
25+
t.end();
26+
});
27+
28+
test('rule: apply-linebreak: transform: write', (t) => {
29+
t.transform('write');
30+
t.end();
31+
});
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
print.newline();
2+
print.space();
3+
4+
indent();
5+
indent.inc();
6+
indent.dec();
7+
8+
write.indent();
9+
write.indent.inc();
10+
write.indent.dec();
11+
12+
print.indent();
13+
print('hello');
14+
print.indent.inc();
15+
print.indent.dec();
16+
17+
write('hello');

0 commit comments

Comments
 (0)