@putout/printer 7.1.2 → 7.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/ChangeLog CHANGED
@@ -1,3 +1,13 @@
1
+ 2023.12.18, v7.3.0
2
+
3
+ fix:
4
+ - 541b97e @putout/printer: isIndented: no loc
5
+
6
+ 2023.12.14, v7.2.0
7
+
8
+ feature:
9
+ - 389b695 @putout/printer: var inside if (coderaiser/putout#194)
10
+
1
11
  2023.12.12, v7.1.2
2
12
 
3
13
  feature:
package/README.md CHANGED
@@ -9,7 +9,10 @@
9
9
  [CoverageURL]: https://coveralls.io/github/putoutjs/printer?branch=master
10
10
  [CoverageIMGURL]: https://coveralls.io/repos/putoutjs/printer/badge.svg?branch=master&service=github
11
11
 
12
- Prints [**Babel AST**](https://github.com/coderaiser/estree-to-babel) to readable **JavaScript**. For **ESTree** use [`estree-to-babel`](https://github.com/coderaiser/estree-to-babel).
12
+ Prints [**Babel AST**](https://github.com/coderaiser/estree-to-babel) to readable **JavaScript**.
13
+ Use 🐊[**Putout**](https://github.com/coderaiser/putout) to parse your code.
14
+
15
+ You may also use [Babel 8](https://github.com/putoutjs/babel) with [`estree-to-babel`](https://github.com/coderaiser/estree-to-babel) for **ESTree** and **Babel AST** to put `.extra.raw` to `.raw` (which is simpler for transforms, no need to use [Optional Chaining](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining) and add extra values every time).
13
16
 
14
17
  - ☝️ Similar to **Recast**, but [twice faster](#speed-comparison), also simpler and easier in maintenance, since it supports only **Babel**.
15
18
  - ☝️ As opinionated as **Prettier**, but has more user-friendly output and works directly with **AST**.
@@ -52,7 +55,7 @@ To benefit from it.
52
55
 
53
56
  ```js
54
57
  const {print} = require('@putout/printer');
55
- const {parse} = require('@babel/parser');
58
+ const {parse} = require('putout');
56
59
  const ast = parse('const a = (b, c) => {const d = 5; return a;}');
57
60
 
58
61
  print(ast);
@@ -43,7 +43,7 @@ module.exports.isParentLast = (path) => isLast(path.parentPath);
43
43
 
44
44
  module.exports.isIndented = (path = {}) => {
45
45
  const {parentPath, node} = path;
46
- return node.loc.start.column !== parentPath.node.loc.start.column;
46
+ return node.loc?.start.column !== parentPath.node.loc.start.column;
47
47
  };
48
48
  module.exports.isCoupleLines = isCoupleLines;
49
49
 
@@ -32,6 +32,7 @@ module.exports.IfStatement = {
32
32
  const consequent = path.get('consequent');
33
33
  const alternate = path.get('alternate');
34
34
  const isConsequentBlock = consequent.isBlockStatement();
35
+ const isVar = consequent.isVariableDeclaration();
35
36
 
36
37
  if (isConsequentBlock) {
37
38
  print.space();
@@ -41,8 +42,10 @@ module.exports.IfStatement = {
41
42
  maybe.print.newline(isEmptyBody(consequent));
42
43
  } else {
43
44
  const is = !isEmptyConsequent(path);
45
+
44
46
  maybe.print.newline(is);
45
47
  maybe.indent.inc(is);
48
+ maybe.indent(isVar);
46
49
  print(consequent);
47
50
  maybe.indent.dec(is);
48
51
  }
@@ -56,6 +59,7 @@ module.exports.IfStatement = {
56
59
  write(' else ');
57
60
  traverse(alternate);
58
61
  } else if (exists(alternate)) {
62
+ maybe.write.newline(isVar);
59
63
  maybe.indent(!isConsequentBlock);
60
64
  maybe.write.space(isConsequentBlock);
61
65
  write('else');
@@ -1,11 +1,10 @@
1
1
  'use strict';
2
2
 
3
- const {markAfter} = require('../../mark');
3
+ const {parseImportSpecifiers} = require('parse-import-specifiers');
4
4
 
5
+ const {markAfter} = require('../../mark');
5
6
  const {isLast, isNext} = require('../../is');
6
7
 
7
- const {parseImportSpecifiers} = require('parse-import-specifiers');
8
-
9
8
  const {
10
9
  maybePrintAttributes,
11
10
  ImportAttribute,
@@ -21,6 +21,7 @@ const isParentBlock = (path) => /Program|BlockStatement|Export/.test(path.parent
21
21
  const isInsideBlock = (path) => /^(Program|BlockStatement|TSModuleBlock)$/.test(path.parentPath.type);
22
22
  const isParentSwitchCase = (path) => path.parentPath.isSwitchCase();
23
23
  const isFirstInSwitch = (path) => path.parentPath.get('consequent.0') === path;
24
+ const isParentIf = (path) => path.parentPath.isIfStatement();
24
25
 
25
26
  module.exports.VariableDeclaration = {
26
27
  beforeIf: shouldAddNewlineBefore,
@@ -73,7 +74,7 @@ module.exports.VariableDeclaration = {
73
74
 
74
75
  maybe.indent.dec(n);
75
76
 
76
- if (isParentBlock(path) || isParentSwitchCase(path) || isParentTSModuleBlock(path))
77
+ if (isParentBlock(path) || isParentSwitchCase(path) || isParentTSModuleBlock(path) || isParentIf(path))
77
78
  write(';');
78
79
 
79
80
  let wasNewline = false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@putout/printer",
3
- "version": "7.1.2",
3
+ "version": "7.3.0",
4
4
  "type": "commonjs",
5
5
  "author": "coderaiser <mnemonic.enemy@gmail.com> (https://github.com/coderaiser)",
6
6
  "description": "Simplest possible opinionated Babel AST printer for 🐊Putout",