@rightcapital/phpdoc-parser 0.3.2 → 0.3.3-bugfix-update-renovate-config.27.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/README.md +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -2
- package/dist/phpdoc-parser/ast/abstract-node-visitor.js +0 -1
- package/dist/phpdoc-parser/ast/base-node.js +0 -1
- package/dist/phpdoc-parser/ast/const-expr/const-expr-array-item-node.js +1 -2
- package/dist/phpdoc-parser/ast/const-expr/const-expr-array-node.js +0 -1
- package/dist/phpdoc-parser/ast/const-expr/const-expr-false-node.js +0 -1
- package/dist/phpdoc-parser/ast/const-expr/const-expr-float-node.js +0 -1
- package/dist/phpdoc-parser/ast/const-expr/const-expr-integer-node.js +0 -1
- package/dist/phpdoc-parser/ast/const-expr/const-expr-node.js +0 -1
- package/dist/phpdoc-parser/ast/const-expr/const-expr-null-node.js +0 -1
- package/dist/phpdoc-parser/ast/const-expr/const-expr-string-node.js +0 -1
- package/dist/phpdoc-parser/ast/const-expr/const-expr-true-node.js +0 -1
- package/dist/phpdoc-parser/ast/const-expr/const-fetch-node.js +0 -1
- package/dist/phpdoc-parser/ast/const-expr/quote-aware-const-expr-string-node.js +0 -1
- package/dist/phpdoc-parser/ast/node-traverser.js +18 -2
- package/dist/phpdoc-parser/ast/node-visitor/cloning-visitor.js +0 -1
- package/dist/phpdoc-parser/ast/node-visitor.js +0 -1
- package/dist/phpdoc-parser/ast/node.js +0 -1
- package/dist/phpdoc-parser/ast/php-doc/assert-tag-method-value-node.js +1 -2
- package/dist/phpdoc-parser/ast/php-doc/assert-tag-property-value-node.js +1 -2
- package/dist/phpdoc-parser/ast/php-doc/assert-tag-value-node.js +1 -2
- package/dist/phpdoc-parser/ast/php-doc/deprecated-tag-value-node.js +0 -1
- package/dist/phpdoc-parser/ast/php-doc/extends-tag-value-node.js +1 -2
- package/dist/phpdoc-parser/ast/php-doc/generic-tag-value-node.js +0 -1
- package/dist/phpdoc-parser/ast/php-doc/implements-tag-value-node.js +1 -2
- package/dist/phpdoc-parser/ast/php-doc/invalid-tag-value-node.js +0 -1
- package/dist/phpdoc-parser/ast/php-doc/method-tag-value-node.js +1 -2
- package/dist/phpdoc-parser/ast/php-doc/method-tag-value-parameter-node.js +4 -3
- package/dist/phpdoc-parser/ast/php-doc/mixin-tag-value-node.js +1 -2
- package/dist/phpdoc-parser/ast/php-doc/param-out-tag-value-node.js +1 -2
- package/dist/phpdoc-parser/ast/php-doc/param-tag-value-node.js +0 -1
- package/dist/phpdoc-parser/ast/php-doc/php-doc-child-node.js +0 -1
- package/dist/phpdoc-parser/ast/php-doc/php-doc-node.js +0 -1
- package/dist/phpdoc-parser/ast/php-doc/php-doc-tag-node.js +1 -2
- package/dist/phpdoc-parser/ast/php-doc/php-doc-tag-value-node.js +0 -1
- package/dist/phpdoc-parser/ast/php-doc/php-doc-text-node.js +0 -1
- package/dist/phpdoc-parser/ast/php-doc/property-tag-value-node.js +1 -2
- package/dist/phpdoc-parser/ast/php-doc/return-tag-value-node.js +1 -2
- package/dist/phpdoc-parser/ast/php-doc/self-out-tag-value-node.js +1 -2
- package/dist/phpdoc-parser/ast/php-doc/template-tag-value-node.js +4 -3
- package/dist/phpdoc-parser/ast/php-doc/throws-tag-value-node.js +1 -2
- package/dist/phpdoc-parser/ast/php-doc/type-alias-import-tag-value-node.js +2 -2
- package/dist/phpdoc-parser/ast/php-doc/type-alias-tag-value-node.js +1 -2
- package/dist/phpdoc-parser/ast/php-doc/typeless-param-tag-value-node.js +0 -1
- package/dist/phpdoc-parser/ast/php-doc/uses-tag-value-node.js +1 -2
- package/dist/phpdoc-parser/ast/php-doc/var-tag-value-node.js +1 -2
- package/dist/phpdoc-parser/ast/type/array-shape-item-node.js +0 -1
- package/dist/phpdoc-parser/ast/type/array-shape-node.js +0 -1
- package/dist/phpdoc-parser/ast/type/array-type-node.js +0 -1
- package/dist/phpdoc-parser/ast/type/callable-type-node.js +2 -3
- package/dist/phpdoc-parser/ast/type/callable-type-parameter-node.js +1 -2
- package/dist/phpdoc-parser/ast/type/conditional-type-for-parameter-node.js +1 -2
- package/dist/phpdoc-parser/ast/type/conditional-type-node.js +1 -2
- package/dist/phpdoc-parser/ast/type/const-type-node.js +0 -1
- package/dist/phpdoc-parser/ast/type/generic-type-node.js +2 -3
- package/dist/phpdoc-parser/ast/type/identifier-type-node.js +0 -1
- package/dist/phpdoc-parser/ast/type/intersection-type-node.js +0 -1
- package/dist/phpdoc-parser/ast/type/invalid-type-node.js +0 -1
- package/dist/phpdoc-parser/ast/type/nullable-type-node.js +1 -2
- package/dist/phpdoc-parser/ast/type/object-shape-item-node.js +1 -2
- package/dist/phpdoc-parser/ast/type/object-shape-node.js +0 -1
- package/dist/phpdoc-parser/ast/type/offset-access-type-node.js +2 -3
- package/dist/phpdoc-parser/ast/type/this-type-node.js +0 -1
- package/dist/phpdoc-parser/ast/type/type-node.js +0 -1
- package/dist/phpdoc-parser/ast/type/union-type-node.js +0 -1
- package/dist/phpdoc-parser/ast/types.js +0 -1
- package/dist/phpdoc-parser/lexer/lexer.js +0 -1
- package/dist/phpdoc-parser/parser/const-expr-parser.js +0 -1
- package/dist/phpdoc-parser/parser/node-collecting-visitor.js +0 -1
- package/dist/phpdoc-parser/parser/parser-exception.js +0 -1
- package/dist/phpdoc-parser/parser/php-doc-parser.d.ts +3 -1
- package/dist/phpdoc-parser/parser/php-doc-parser.js +72 -37
- package/dist/phpdoc-parser/parser/string-unescaper.js +0 -1
- package/dist/phpdoc-parser/parser/token-iterator.js +0 -1
- package/dist/phpdoc-parser/parser/type-parser.js +4 -5
- package/dist/phpdoc-parser/printer/diff-elem.d.ts +12 -0
- package/dist/phpdoc-parser/printer/diff-elem.js +19 -0
- package/dist/phpdoc-parser/printer/differ.d.ts +10 -0
- package/dist/phpdoc-parser/printer/differ.js +111 -0
- package/dist/phpdoc-parser/printer/printer.d.ts +20 -0
- package/dist/phpdoc-parser/printer/printer.js +612 -0
- package/package.json +14 -16
- package/dist/index.js.map +0 -1
- package/dist/phpdoc-parser/ast/abstract-node-visitor.js.map +0 -1
- package/dist/phpdoc-parser/ast/base-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/const-expr/const-expr-array-item-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/const-expr/const-expr-array-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/const-expr/const-expr-false-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/const-expr/const-expr-float-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/const-expr/const-expr-integer-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/const-expr/const-expr-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/const-expr/const-expr-null-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/const-expr/const-expr-string-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/const-expr/const-expr-true-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/const-expr/const-fetch-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/const-expr/quote-aware-const-expr-string-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/node-traverser.js.map +0 -1
- package/dist/phpdoc-parser/ast/node-visitor/cloning-visitor.js.map +0 -1
- package/dist/phpdoc-parser/ast/node-visitor.js.map +0 -1
- package/dist/phpdoc-parser/ast/node.js.map +0 -1
- package/dist/phpdoc-parser/ast/php-doc/assert-tag-method-value-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/php-doc/assert-tag-property-value-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/php-doc/assert-tag-value-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/php-doc/deprecated-tag-value-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/php-doc/extends-tag-value-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/php-doc/generic-tag-value-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/php-doc/implements-tag-value-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/php-doc/invalid-tag-value-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/php-doc/method-tag-value-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/php-doc/method-tag-value-parameter-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/php-doc/mixin-tag-value-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/php-doc/param-out-tag-value-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/php-doc/param-tag-value-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/php-doc/php-doc-child-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/php-doc/php-doc-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/php-doc/php-doc-tag-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/php-doc/php-doc-tag-value-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/php-doc/php-doc-text-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/php-doc/property-tag-value-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/php-doc/return-tag-value-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/php-doc/self-out-tag-value-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/php-doc/template-tag-value-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/php-doc/throws-tag-value-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/php-doc/type-alias-import-tag-value-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/php-doc/type-alias-tag-value-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/php-doc/typeless-param-tag-value-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/php-doc/uses-tag-value-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/php-doc/var-tag-value-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/type/array-shape-item-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/type/array-shape-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/type/array-type-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/type/callable-type-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/type/callable-type-parameter-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/type/conditional-type-for-parameter-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/type/conditional-type-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/type/const-type-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/type/generic-type-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/type/identifier-type-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/type/intersection-type-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/type/invalid-type-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/type/nullable-type-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/type/object-shape-item-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/type/object-shape-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/type/offset-access-type-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/type/this-type-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/type/type-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/type/union-type-node.js.map +0 -1
- package/dist/phpdoc-parser/ast/types.js.map +0 -1
- package/dist/phpdoc-parser/lexer/lexer.js.map +0 -1
- package/dist/phpdoc-parser/parser/const-expr-parser.js.map +0 -1
- package/dist/phpdoc-parser/parser/node-collecting-visitor.js.map +0 -1
- package/dist/phpdoc-parser/parser/parser-exception.js.map +0 -1
- package/dist/phpdoc-parser/parser/php-doc-parser.js.map +0 -1
- package/dist/phpdoc-parser/parser/string-unescaper.js.map +0 -1
- package/dist/phpdoc-parser/parser/token-iterator.js.map +0 -1
- package/dist/phpdoc-parser/parser/type-parser.js.map +0 -1
|
@@ -0,0 +1,612 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Printer = void 0;
|
|
4
|
+
const diff_elem_1 = require("./diff-elem");
|
|
5
|
+
const differ_1 = require("./differ");
|
|
6
|
+
const base_node_1 = require("../ast/base-node");
|
|
7
|
+
const const_expr_array_node_1 = require("../ast/const-expr/const-expr-array-node");
|
|
8
|
+
const const_expr_node_1 = require("../ast/const-expr/const-expr-node");
|
|
9
|
+
const assert_tag_method_value_node_1 = require("../ast/php-doc/assert-tag-method-value-node");
|
|
10
|
+
const assert_tag_property_value_node_1 = require("../ast/php-doc/assert-tag-property-value-node");
|
|
11
|
+
const assert_tag_value_node_1 = require("../ast/php-doc/assert-tag-value-node");
|
|
12
|
+
const extends_tag_value_node_1 = require("../ast/php-doc/extends-tag-value-node");
|
|
13
|
+
const implements_tag_value_node_1 = require("../ast/php-doc/implements-tag-value-node");
|
|
14
|
+
const method_tag_value_node_1 = require("../ast/php-doc/method-tag-value-node");
|
|
15
|
+
const method_tag_value_parameter_node_1 = require("../ast/php-doc/method-tag-value-parameter-node");
|
|
16
|
+
const mixin_tag_value_node_1 = require("../ast/php-doc/mixin-tag-value-node");
|
|
17
|
+
const param_out_tag_value_node_1 = require("../ast/php-doc/param-out-tag-value-node");
|
|
18
|
+
const param_tag_value_node_1 = require("../ast/php-doc/param-tag-value-node");
|
|
19
|
+
const php_doc_node_1 = require("../ast/php-doc/php-doc-node");
|
|
20
|
+
const php_doc_tag_node_1 = require("../ast/php-doc/php-doc-tag-node");
|
|
21
|
+
const php_doc_tag_value_node_1 = require("../ast/php-doc/php-doc-tag-value-node");
|
|
22
|
+
const php_doc_text_node_1 = require("../ast/php-doc/php-doc-text-node");
|
|
23
|
+
const property_tag_value_node_1 = require("../ast/php-doc/property-tag-value-node");
|
|
24
|
+
const return_tag_value_node_1 = require("../ast/php-doc/return-tag-value-node");
|
|
25
|
+
const self_out_tag_value_node_1 = require("../ast/php-doc/self-out-tag-value-node");
|
|
26
|
+
const template_tag_value_node_1 = require("../ast/php-doc/template-tag-value-node");
|
|
27
|
+
const throws_tag_value_node_1 = require("../ast/php-doc/throws-tag-value-node");
|
|
28
|
+
const type_alias_import_tag_value_node_1 = require("../ast/php-doc/type-alias-import-tag-value-node");
|
|
29
|
+
const type_alias_tag_value_node_1 = require("../ast/php-doc/type-alias-tag-value-node");
|
|
30
|
+
const uses_tag_value_node_1 = require("../ast/php-doc/uses-tag-value-node");
|
|
31
|
+
const var_tag_value_node_1 = require("../ast/php-doc/var-tag-value-node");
|
|
32
|
+
const array_shape_item_node_1 = require("../ast/type/array-shape-item-node");
|
|
33
|
+
const array_shape_node_1 = require("../ast/type/array-shape-node");
|
|
34
|
+
const array_type_node_1 = require("../ast/type/array-type-node");
|
|
35
|
+
const callable_type_node_1 = require("../ast/type/callable-type-node");
|
|
36
|
+
const callable_type_parameter_node_1 = require("../ast/type/callable-type-parameter-node");
|
|
37
|
+
const conditional_type_for_parameter_node_1 = require("../ast/type/conditional-type-for-parameter-node");
|
|
38
|
+
const conditional_type_node_1 = require("../ast/type/conditional-type-node");
|
|
39
|
+
const const_type_node_1 = require("../ast/type/const-type-node");
|
|
40
|
+
const generic_type_node_1 = require("../ast/type/generic-type-node");
|
|
41
|
+
const identifier_type_node_1 = require("../ast/type/identifier-type-node");
|
|
42
|
+
const intersection_type_node_1 = require("../ast/type/intersection-type-node");
|
|
43
|
+
const invalid_type_node_1 = require("../ast/type/invalid-type-node");
|
|
44
|
+
const nullable_type_node_1 = require("../ast/type/nullable-type-node");
|
|
45
|
+
const object_shape_item_node_1 = require("../ast/type/object-shape-item-node");
|
|
46
|
+
const object_shape_node_1 = require("../ast/type/object-shape-node");
|
|
47
|
+
const offset_access_type_node_1 = require("../ast/type/offset-access-type-node");
|
|
48
|
+
const this_type_node_1 = require("../ast/type/this-type-node");
|
|
49
|
+
const type_node_1 = require("../ast/type/type-node");
|
|
50
|
+
const union_type_node_1 = require("../ast/type/union-type-node");
|
|
51
|
+
const types_1 = require("../ast/types");
|
|
52
|
+
const lexer_1 = require("../lexer/lexer");
|
|
53
|
+
class Printer {
|
|
54
|
+
constructor() {
|
|
55
|
+
this.listInsertionMap = {
|
|
56
|
+
[`${php_doc_node_1.PhpDocNode.name}->children`]: '\n * ',
|
|
57
|
+
[`${union_type_node_1.UnionTypeNode.name}->types`]: '|',
|
|
58
|
+
[`${intersection_type_node_1.IntersectionTypeNode.name}->types`]: '&',
|
|
59
|
+
[`${array_shape_node_1.ArrayShapeNode.name}->items`]: ', ',
|
|
60
|
+
[`${object_shape_node_1.ObjectShapeNode.name}->items`]: ', ',
|
|
61
|
+
[`${callable_type_node_1.CallableTypeNode.name}->parameters`]: ', ',
|
|
62
|
+
[`${generic_type_node_1.GenericTypeNode.name}->genericTypes`]: ', ',
|
|
63
|
+
[`${const_expr_array_node_1.ConstExprArrayNode.name}->items`]: ', ',
|
|
64
|
+
[`${method_tag_value_node_1.MethodTagValueNode.name}->parameters`]: ', ',
|
|
65
|
+
};
|
|
66
|
+
this.emptyListInsertionMap = {
|
|
67
|
+
[`${callable_type_node_1.CallableTypeNode.name}->parameters`]: ['(', '', ''],
|
|
68
|
+
[`${array_shape_node_1.ArrayShapeNode.name}->items`]: ['{', '', '}'],
|
|
69
|
+
[`${object_shape_node_1.ObjectShapeNode.name}->items`]: ['{', '', '}'],
|
|
70
|
+
};
|
|
71
|
+
this.parenthesesMap = {
|
|
72
|
+
[`${callable_type_node_1.CallableTypeNode.name}->returnType`]: [
|
|
73
|
+
callable_type_node_1.CallableTypeNode.name,
|
|
74
|
+
union_type_node_1.UnionTypeNode.name,
|
|
75
|
+
intersection_type_node_1.IntersectionTypeNode.name,
|
|
76
|
+
],
|
|
77
|
+
[`${array_type_node_1.ArrayTypeNode.name}->type`]: [
|
|
78
|
+
callable_type_node_1.CallableTypeNode.name,
|
|
79
|
+
union_type_node_1.UnionTypeNode.name,
|
|
80
|
+
intersection_type_node_1.IntersectionTypeNode.name,
|
|
81
|
+
const_type_node_1.ConstTypeNode.name,
|
|
82
|
+
nullable_type_node_1.NullableTypeNode.name,
|
|
83
|
+
],
|
|
84
|
+
[`${offset_access_type_node_1.OffsetAccessTypeNode.name}->type`]: [
|
|
85
|
+
callable_type_node_1.CallableTypeNode.name,
|
|
86
|
+
union_type_node_1.UnionTypeNode.name,
|
|
87
|
+
intersection_type_node_1.IntersectionTypeNode.name,
|
|
88
|
+
const_type_node_1.ConstTypeNode.name,
|
|
89
|
+
nullable_type_node_1.NullableTypeNode.name,
|
|
90
|
+
],
|
|
91
|
+
};
|
|
92
|
+
this.parenthesesListMap = {
|
|
93
|
+
[`${intersection_type_node_1.IntersectionTypeNode.name}->types`]: [
|
|
94
|
+
intersection_type_node_1.IntersectionTypeNode.name,
|
|
95
|
+
union_type_node_1.UnionTypeNode.name,
|
|
96
|
+
nullable_type_node_1.NullableTypeNode.name,
|
|
97
|
+
],
|
|
98
|
+
[`${union_type_node_1.UnionTypeNode.name}->types`]: [
|
|
99
|
+
intersection_type_node_1.IntersectionTypeNode.name,
|
|
100
|
+
union_type_node_1.UnionTypeNode.name,
|
|
101
|
+
nullable_type_node_1.NullableTypeNode.name,
|
|
102
|
+
],
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
printFormatPreserving(node, originalNode, originalTokens) {
|
|
106
|
+
this.differ = new differ_1.Differ((a, b) => {
|
|
107
|
+
if (a instanceof base_node_1.BaseNode && b instanceof base_node_1.BaseNode) {
|
|
108
|
+
return a === b.getAttribute(types_1.Attribute.ORIGINAL_NODE);
|
|
109
|
+
}
|
|
110
|
+
return false;
|
|
111
|
+
});
|
|
112
|
+
let tokenIndex = 0;
|
|
113
|
+
let result;
|
|
114
|
+
[result, tokenIndex] = this.printArrayFormatPreserving(node.children, originalNode.children, originalTokens, tokenIndex, php_doc_node_1.PhpDocNode.name, 'children');
|
|
115
|
+
if (result !== null) {
|
|
116
|
+
return (result +
|
|
117
|
+
originalTokens.getContentBetween(tokenIndex, originalTokens.getTokenCount()));
|
|
118
|
+
}
|
|
119
|
+
return this.print(node);
|
|
120
|
+
}
|
|
121
|
+
print(node) {
|
|
122
|
+
if (node instanceof php_doc_node_1.PhpDocNode) {
|
|
123
|
+
return `/**\n *${node.children
|
|
124
|
+
.map((child) => {
|
|
125
|
+
return ` ${this.print(child)}`;
|
|
126
|
+
})
|
|
127
|
+
.join('\n *')}\n */`;
|
|
128
|
+
}
|
|
129
|
+
if (node instanceof php_doc_text_node_1.PhpDocTextNode) {
|
|
130
|
+
return node.text;
|
|
131
|
+
}
|
|
132
|
+
if (node instanceof php_doc_tag_node_1.PhpDocTagNode) {
|
|
133
|
+
return `${node.name} ${this.print(node.value)}`.trim();
|
|
134
|
+
}
|
|
135
|
+
if (node instanceof php_doc_tag_value_node_1.PhpDocTagValueNode) {
|
|
136
|
+
return this.printTagValue(node);
|
|
137
|
+
}
|
|
138
|
+
if (node instanceof type_node_1.TypeNode) {
|
|
139
|
+
return this.printType(node);
|
|
140
|
+
}
|
|
141
|
+
if (node instanceof const_expr_node_1.ConstExprNode) {
|
|
142
|
+
return this.printConstExpr(node);
|
|
143
|
+
}
|
|
144
|
+
if (node instanceof method_tag_value_parameter_node_1.MethodTagValueParameterNode) {
|
|
145
|
+
const type = node.type ? `${this.print(node.type)} ` : '';
|
|
146
|
+
const isReference = node.isReference ? '&' : '';
|
|
147
|
+
const isVariadic = node.isVariadic ? '...' : '';
|
|
148
|
+
const defaultValue = node.defaultValue !== null ? ` = ${this.print(node.defaultValue)}` : '';
|
|
149
|
+
return `${type}${isReference}${isVariadic}${node.parameterName}${defaultValue}`;
|
|
150
|
+
}
|
|
151
|
+
if (node instanceof callable_type_parameter_node_1.CallableTypeParameterNode) {
|
|
152
|
+
const type = `${this.print(node.type)} `;
|
|
153
|
+
const isReference = node.isReference ? '&' : '';
|
|
154
|
+
const isVariadic = node.isVariadic ? '...' : '';
|
|
155
|
+
const isOptional = node.isOptional ? '=' : '';
|
|
156
|
+
return (`${type}${isReference}${isVariadic}${node.parameterName}`.trim() +
|
|
157
|
+
isOptional);
|
|
158
|
+
}
|
|
159
|
+
throw new Error(`Unknown node type ${node.getNodeType()}`);
|
|
160
|
+
}
|
|
161
|
+
printTagValue(node) {
|
|
162
|
+
if (node instanceof assert_tag_method_value_node_1.AssertTagMethodValueNode) {
|
|
163
|
+
const isNegated = node.isNegated ? '!' : '';
|
|
164
|
+
const isEquality = node.isEquality ? '=' : '';
|
|
165
|
+
const type = this.printType(node.type);
|
|
166
|
+
return `${isNegated}${isEquality}${type} ${node.parameter}->${node.method}() ${node.description}`.trim();
|
|
167
|
+
}
|
|
168
|
+
if (node instanceof assert_tag_property_value_node_1.AssertTagPropertyValueNode) {
|
|
169
|
+
const isNegated = node.isNegated ? '!' : '';
|
|
170
|
+
const isEquality = node.isEquality ? '=' : '';
|
|
171
|
+
const type = this.printType(node.type);
|
|
172
|
+
return `${isNegated}${isEquality}${type} ${node.parameter}->${node.property} ${node.description}`.trim();
|
|
173
|
+
}
|
|
174
|
+
if (node instanceof assert_tag_value_node_1.AssertTagValueNode) {
|
|
175
|
+
const isNegated = node.isNegated ? '!' : '';
|
|
176
|
+
const isEquality = node.isEquality ? '=' : '';
|
|
177
|
+
const type = this.printType(node.type);
|
|
178
|
+
return `${isNegated}${isEquality}${type} ${node.parameter} ${node.description}`.trim();
|
|
179
|
+
}
|
|
180
|
+
if (node instanceof extends_tag_value_node_1.ExtendsTagValueNode ||
|
|
181
|
+
node instanceof implements_tag_value_node_1.ImplementsTagValueNode) {
|
|
182
|
+
const type = this.printType(node.type);
|
|
183
|
+
return `${type} ${node.description}`.trim();
|
|
184
|
+
}
|
|
185
|
+
if (node instanceof method_tag_value_node_1.MethodTagValueNode) {
|
|
186
|
+
const staticValue = node.isStatic ? 'static ' : '';
|
|
187
|
+
const returnType = node.returnType !== null ? `${this.printType(node.returnType)} ` : '';
|
|
188
|
+
const parameters = node.parameters
|
|
189
|
+
.map((parameter) => {
|
|
190
|
+
return this.print(parameter);
|
|
191
|
+
})
|
|
192
|
+
.join(', ');
|
|
193
|
+
const description = node.description !== '' ? ` ${node.description}` : '';
|
|
194
|
+
const templateTypes = node.templateTypes.length > 0
|
|
195
|
+
? `<${node.templateTypes
|
|
196
|
+
.map((templateTag) => {
|
|
197
|
+
return this.print(templateTag);
|
|
198
|
+
})
|
|
199
|
+
.join(', ')}>`
|
|
200
|
+
: '';
|
|
201
|
+
return `${staticValue}${returnType}${node.methodName}${templateTypes}(${parameters})${description}`;
|
|
202
|
+
}
|
|
203
|
+
if (node instanceof mixin_tag_value_node_1.MixinTagValueNode) {
|
|
204
|
+
const type = this.printType(node.type);
|
|
205
|
+
return `${type} ${node.description}`.trim();
|
|
206
|
+
}
|
|
207
|
+
if (node instanceof param_out_tag_value_node_1.ParamOutTagValueNode) {
|
|
208
|
+
const type = this.printType(node.type);
|
|
209
|
+
return `${type} ${node.parameterName} ${node.description}`.trim();
|
|
210
|
+
}
|
|
211
|
+
if (node instanceof param_tag_value_node_1.ParamTagValueNode) {
|
|
212
|
+
const reference = node.isReference ? '&' : '';
|
|
213
|
+
const variadic = node.isVariadic ? '...' : '';
|
|
214
|
+
const type = this.printType(node.type);
|
|
215
|
+
return `${type} ${reference}${variadic}${node.parameterName} ${node.description}`.trim();
|
|
216
|
+
}
|
|
217
|
+
if (node instanceof property_tag_value_node_1.PropertyTagValueNode) {
|
|
218
|
+
const type = this.printType(node.type);
|
|
219
|
+
return `${type} ${node.propertyName} ${node.description}`.trim();
|
|
220
|
+
}
|
|
221
|
+
if (node instanceof return_tag_value_node_1.ReturnTagValueNode) {
|
|
222
|
+
const type = this.printType(node.type);
|
|
223
|
+
return `${type} ${node.description}`.trim();
|
|
224
|
+
}
|
|
225
|
+
if (node instanceof self_out_tag_value_node_1.SelfOutTagValueNode) {
|
|
226
|
+
const type = this.printType(node.type);
|
|
227
|
+
return `${type} ${node.description}`.trim();
|
|
228
|
+
}
|
|
229
|
+
if (node instanceof template_tag_value_node_1.TemplateTagValueNode) {
|
|
230
|
+
const bound = node.bound !== null ? ` of ${this.printType(node.bound)}` : '';
|
|
231
|
+
const defaultValue = node.defaultTypeNode !== null
|
|
232
|
+
? ` = ${this.printType(node.defaultTypeNode)}`
|
|
233
|
+
: '';
|
|
234
|
+
return `${node.name}${bound}${defaultValue} ${node.description}`.trim();
|
|
235
|
+
}
|
|
236
|
+
if (node instanceof throws_tag_value_node_1.ThrowsTagValueNode) {
|
|
237
|
+
const type = this.printType(node.type);
|
|
238
|
+
return `${type} ${node.description}`.trim();
|
|
239
|
+
}
|
|
240
|
+
if (node instanceof type_alias_import_tag_value_node_1.TypeAliasImportTagValueNode) {
|
|
241
|
+
return `${node.importedAlias} from ${this.printType(node.importedFrom)}${(node.importedAs !== null ? ` as ${node.importedAs}` : '').trim()}`;
|
|
242
|
+
}
|
|
243
|
+
if (node instanceof type_alias_tag_value_node_1.TypeAliasTagValueNode) {
|
|
244
|
+
const type = this.printType(node.type);
|
|
245
|
+
return `${node.alias} ${type}`.trim();
|
|
246
|
+
}
|
|
247
|
+
if (node instanceof uses_tag_value_node_1.UsesTagValueNode) {
|
|
248
|
+
const type = this.printType(node.type);
|
|
249
|
+
return `${type} ${node.description}`.trim();
|
|
250
|
+
}
|
|
251
|
+
if (node instanceof var_tag_value_node_1.VarTagValueNode) {
|
|
252
|
+
const type = this.printType(node.type);
|
|
253
|
+
return `${type} ${node.variableName} ${node.description}`.trim();
|
|
254
|
+
}
|
|
255
|
+
return node.toString();
|
|
256
|
+
}
|
|
257
|
+
printType(node) {
|
|
258
|
+
if (node instanceof array_shape_node_1.ArrayShapeNode) {
|
|
259
|
+
const items = node.items.map((item) => this.printType(item));
|
|
260
|
+
if (!node.sealed) {
|
|
261
|
+
items.push('...');
|
|
262
|
+
}
|
|
263
|
+
return `${node.kind}{${items.join(', ')}}`;
|
|
264
|
+
}
|
|
265
|
+
if (node instanceof array_shape_item_node_1.ArrayShapeItemNode) {
|
|
266
|
+
if (node.keyName !== null) {
|
|
267
|
+
return `${this.print(node.keyName)}${node.optional ? '?' : ''}: ${this.printType(node.valueType)}`;
|
|
268
|
+
}
|
|
269
|
+
return this.printType(node.valueType);
|
|
270
|
+
}
|
|
271
|
+
if (node instanceof array_type_node_1.ArrayTypeNode) {
|
|
272
|
+
return `${this.printOffsetAccessType(node.type)}[]`;
|
|
273
|
+
}
|
|
274
|
+
if (node instanceof callable_type_node_1.CallableTypeNode) {
|
|
275
|
+
const returnType = node.returnType instanceof callable_type_node_1.CallableTypeNode ||
|
|
276
|
+
node.returnType instanceof union_type_node_1.UnionTypeNode ||
|
|
277
|
+
node.returnType instanceof intersection_type_node_1.IntersectionTypeNode
|
|
278
|
+
? this.wrapInParentheses(node.returnType)
|
|
279
|
+
: this.printType(node.returnType);
|
|
280
|
+
const parameters = node.parameters
|
|
281
|
+
.map((parameter) => this.print(parameter))
|
|
282
|
+
.join(', ');
|
|
283
|
+
return `${node.identifier.toString()}(${parameters}): ${returnType}`;
|
|
284
|
+
}
|
|
285
|
+
if (node instanceof conditional_type_for_parameter_node_1.ConditionalTypeForParameterNode) {
|
|
286
|
+
return `(${node.parameterName} ${node.negated ? 'is not' : 'is'} ${this.printType(node.targetType)} ? ${this.printType(node.ifCondition)} : ${this.printType(node.elseCondition)})`;
|
|
287
|
+
}
|
|
288
|
+
if (node instanceof conditional_type_node_1.ConditionalTypeNode) {
|
|
289
|
+
return `(${this.printType(node.subjectType)} ${node.negated ? 'is not' : 'is'} ${this.printType(node.targetType)} ? ${this.printType(node.ifType)} : ${this.printType(node.elseType)})`;
|
|
290
|
+
}
|
|
291
|
+
if (node instanceof const_type_node_1.ConstTypeNode) {
|
|
292
|
+
return this.printConstExpr(node.constExpr);
|
|
293
|
+
}
|
|
294
|
+
if (node instanceof generic_type_node_1.GenericTypeNode) {
|
|
295
|
+
const genericTypes = node.genericTypes.map((type, index) => {
|
|
296
|
+
var _a;
|
|
297
|
+
const variance = (_a = node.variances[index]) !== null && _a !== void 0 ? _a : generic_type_node_1.GenericTypeNode.VARIANCE_INVARIANT;
|
|
298
|
+
if (variance === generic_type_node_1.GenericTypeNode.VARIANCE_INVARIANT) {
|
|
299
|
+
return this.printType(type);
|
|
300
|
+
}
|
|
301
|
+
if (variance === generic_type_node_1.GenericTypeNode.VARIANCE_BIVARIANT) {
|
|
302
|
+
return '*';
|
|
303
|
+
}
|
|
304
|
+
return `${variance} ${this.print(type)}`;
|
|
305
|
+
});
|
|
306
|
+
return `${node.type.toString()}<${genericTypes.join(', ')}>`;
|
|
307
|
+
}
|
|
308
|
+
if (node instanceof identifier_type_node_1.IdentifierTypeNode) {
|
|
309
|
+
return node.name;
|
|
310
|
+
}
|
|
311
|
+
if (node instanceof intersection_type_node_1.IntersectionTypeNode || node instanceof union_type_node_1.UnionTypeNode) {
|
|
312
|
+
const items = node.types.map((type) => {
|
|
313
|
+
if (type instanceof intersection_type_node_1.IntersectionTypeNode ||
|
|
314
|
+
type instanceof union_type_node_1.UnionTypeNode ||
|
|
315
|
+
type instanceof nullable_type_node_1.NullableTypeNode) {
|
|
316
|
+
return this.wrapInParentheses(type);
|
|
317
|
+
}
|
|
318
|
+
return this.printType(type);
|
|
319
|
+
});
|
|
320
|
+
return items.join(node instanceof intersection_type_node_1.IntersectionTypeNode ? '&' : '|');
|
|
321
|
+
}
|
|
322
|
+
if (node instanceof invalid_type_node_1.InvalidTypeNode) {
|
|
323
|
+
return node.toString();
|
|
324
|
+
}
|
|
325
|
+
if (node instanceof nullable_type_node_1.NullableTypeNode) {
|
|
326
|
+
if (node.type instanceof intersection_type_node_1.IntersectionTypeNode ||
|
|
327
|
+
node.type instanceof union_type_node_1.UnionTypeNode) {
|
|
328
|
+
return `?(${this.printType(node.type)})`;
|
|
329
|
+
}
|
|
330
|
+
return `?${this.printType(node.type)}`;
|
|
331
|
+
}
|
|
332
|
+
if (node instanceof object_shape_node_1.ObjectShapeNode) {
|
|
333
|
+
const items = node.items.map((item) => this.printType(item));
|
|
334
|
+
return `object{${items.join(', ')}}`;
|
|
335
|
+
}
|
|
336
|
+
if (node instanceof object_shape_item_node_1.ObjectShapeItemNode) {
|
|
337
|
+
if (node.keyName !== null) {
|
|
338
|
+
return `${this.print(node.keyName)}${node.optional ? '?' : ''}: ${this.printType(node.valueType)}`;
|
|
339
|
+
}
|
|
340
|
+
return this.printType(node.valueType);
|
|
341
|
+
}
|
|
342
|
+
if (node instanceof offset_access_type_node_1.OffsetAccessTypeNode) {
|
|
343
|
+
return `${this.printOffsetAccessType(node.type)}[${this.printType(node.offset)}]`;
|
|
344
|
+
}
|
|
345
|
+
if (node instanceof this_type_node_1.ThisTypeNode) {
|
|
346
|
+
return node.toString();
|
|
347
|
+
}
|
|
348
|
+
throw new Error(`Unknown type ${node.getNodeType()}`);
|
|
349
|
+
}
|
|
350
|
+
wrapInParentheses(node) {
|
|
351
|
+
return `(${this.printType(node)})`;
|
|
352
|
+
}
|
|
353
|
+
printOffsetAccessType(type) {
|
|
354
|
+
if (type instanceof callable_type_node_1.CallableTypeNode ||
|
|
355
|
+
type instanceof union_type_node_1.UnionTypeNode ||
|
|
356
|
+
type instanceof intersection_type_node_1.IntersectionTypeNode ||
|
|
357
|
+
type instanceof const_type_node_1.ConstTypeNode ||
|
|
358
|
+
type instanceof nullable_type_node_1.NullableTypeNode) {
|
|
359
|
+
return this.wrapInParentheses(type);
|
|
360
|
+
}
|
|
361
|
+
return this.printType(type);
|
|
362
|
+
}
|
|
363
|
+
printConstExpr(node) {
|
|
364
|
+
return node.toString();
|
|
365
|
+
}
|
|
366
|
+
printArrayFormatPreserving(nodes, originalNodes, originalTokens, tokenIndex, parentNodeClassName, subNodeName) {
|
|
367
|
+
var _a, _b, _c, _d, _e;
|
|
368
|
+
const diff = this.differ.diffWithReplacements(originalNodes, nodes);
|
|
369
|
+
const mapKey = `${parentNodeClassName}->${subNodeName}`;
|
|
370
|
+
let insertStr = (_a = this.listInsertionMap[mapKey]) !== null && _a !== void 0 ? _a : null;
|
|
371
|
+
let result = '';
|
|
372
|
+
let beforeFirstKeepOrReplace = true;
|
|
373
|
+
let delayedAdd = [];
|
|
374
|
+
let insertNewline = false;
|
|
375
|
+
const [isMultiline, beforeAsteriskIndent, afterAsteriskIndent] = this.isMultiline(tokenIndex, originalNodes, originalTokens);
|
|
376
|
+
if (insertStr === '\n * ') {
|
|
377
|
+
insertStr = `\n${beforeAsteriskIndent}*${afterAsteriskIndent}`;
|
|
378
|
+
}
|
|
379
|
+
for (let i = 0; i < diff.length; i++) {
|
|
380
|
+
const diffElem = diff[i];
|
|
381
|
+
const newNode = diffElem.new;
|
|
382
|
+
const originalNode = diffElem.old;
|
|
383
|
+
if (diffElem.type === diff_elem_1.DiffElemType.KEEP ||
|
|
384
|
+
diffElem.type === diff_elem_1.DiffElemType.REPLACE) {
|
|
385
|
+
beforeFirstKeepOrReplace = false;
|
|
386
|
+
if (!(newNode instanceof base_node_1.BaseNode) ||
|
|
387
|
+
!(originalNode instanceof base_node_1.BaseNode)) {
|
|
388
|
+
return null;
|
|
389
|
+
}
|
|
390
|
+
const itemStartPos = originalNode.getAttribute(types_1.Attribute.START_INDEX);
|
|
391
|
+
const itemEndPos = originalNode.getAttribute(types_1.Attribute.END_INDEX);
|
|
392
|
+
if (itemStartPos < 0 || itemEndPos < 0 || itemStartPos < tokenIndex) {
|
|
393
|
+
throw new Error('Invalid position');
|
|
394
|
+
}
|
|
395
|
+
result += originalTokens.getContentBetween(tokenIndex, itemStartPos);
|
|
396
|
+
if (delayedAdd.length > 0) {
|
|
397
|
+
for (const delayedNode of delayedAdd) {
|
|
398
|
+
const parenthesesNeeded = mapKey in this.parenthesesListMap &&
|
|
399
|
+
this.parenthesesListMap[mapKey].includes(delayedNode.constructor.name);
|
|
400
|
+
if (parenthesesNeeded) {
|
|
401
|
+
result += '(';
|
|
402
|
+
}
|
|
403
|
+
result += this.printNodeFormatPreserving(delayedNode, originalTokens);
|
|
404
|
+
if (parenthesesNeeded) {
|
|
405
|
+
result += ')';
|
|
406
|
+
}
|
|
407
|
+
if (insertNewline) {
|
|
408
|
+
result += `\n${beforeAsteriskIndent}*${afterAsteriskIndent}`;
|
|
409
|
+
}
|
|
410
|
+
else {
|
|
411
|
+
result += insertStr;
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
delayedAdd = [];
|
|
415
|
+
}
|
|
416
|
+
const parenthesesNeeded = ((_b = this.parenthesesListMap[mapKey]) === null || _b === void 0 ? void 0 : _b.includes(newNode.constructor.name)) &&
|
|
417
|
+
!((_c = this.parenthesesListMap[mapKey]) === null || _c === void 0 ? void 0 : _c.includes(originalNode.constructor.name));
|
|
418
|
+
const addParentheses = parenthesesNeeded &&
|
|
419
|
+
!originalTokens.hasParentheses(itemStartPos, itemEndPos);
|
|
420
|
+
if (addParentheses) {
|
|
421
|
+
result += '(';
|
|
422
|
+
}
|
|
423
|
+
result += this.printNodeFormatPreserving(newNode, originalTokens);
|
|
424
|
+
if (addParentheses) {
|
|
425
|
+
result += ')';
|
|
426
|
+
}
|
|
427
|
+
tokenIndex = itemEndPos + 1;
|
|
428
|
+
}
|
|
429
|
+
else if (diffElem.type === diff_elem_1.DiffElemType.ADD) {
|
|
430
|
+
if (insertStr === null) {
|
|
431
|
+
return null;
|
|
432
|
+
}
|
|
433
|
+
if (!(newNode instanceof base_node_1.BaseNode)) {
|
|
434
|
+
return null;
|
|
435
|
+
}
|
|
436
|
+
if (insertStr === ', ' && isMultiline) {
|
|
437
|
+
insertStr = ',';
|
|
438
|
+
insertNewline = true;
|
|
439
|
+
}
|
|
440
|
+
if (beforeFirstKeepOrReplace) {
|
|
441
|
+
delayedAdd.push(newNode);
|
|
442
|
+
continue;
|
|
443
|
+
}
|
|
444
|
+
const itemEndPos = tokenIndex - 1;
|
|
445
|
+
if (insertNewline) {
|
|
446
|
+
result += `${insertStr}\n${beforeAsteriskIndent}*${afterAsteriskIndent}`;
|
|
447
|
+
}
|
|
448
|
+
else {
|
|
449
|
+
result += insertStr;
|
|
450
|
+
}
|
|
451
|
+
const parenthesesNeeded = (_d = this.parenthesesListMap[mapKey]) === null || _d === void 0 ? void 0 : _d.includes(newNode.constructor.name);
|
|
452
|
+
if (parenthesesNeeded) {
|
|
453
|
+
result += '(';
|
|
454
|
+
}
|
|
455
|
+
result += this.printNodeFormatPreserving(newNode, originalTokens);
|
|
456
|
+
if (parenthesesNeeded) {
|
|
457
|
+
result += ')';
|
|
458
|
+
}
|
|
459
|
+
tokenIndex = itemEndPos + 1;
|
|
460
|
+
}
|
|
461
|
+
else if (diffElem.type === diff_elem_1.DiffElemType.REMOVE) {
|
|
462
|
+
if (!(originalNode instanceof base_node_1.BaseNode)) {
|
|
463
|
+
return null;
|
|
464
|
+
}
|
|
465
|
+
const itemStartPos = originalNode.getAttribute(types_1.Attribute.START_INDEX);
|
|
466
|
+
const itemEndPos = originalNode.getAttribute(types_1.Attribute.END_INDEX);
|
|
467
|
+
if (itemStartPos < 0 || itemEndPos < 0) {
|
|
468
|
+
throw new Error('Invalid index');
|
|
469
|
+
}
|
|
470
|
+
if (i === 0) {
|
|
471
|
+
const originalTokensArray = originalTokens.getTokens();
|
|
472
|
+
for (let j = tokenIndex; j < itemStartPos; j++) {
|
|
473
|
+
if (originalTokensArray[j][lexer_1.Lexer.TYPE_OFFSET] ===
|
|
474
|
+
lexer_1.Lexer.TOKEN_PHPDOC_EOL) {
|
|
475
|
+
break;
|
|
476
|
+
}
|
|
477
|
+
result += originalTokensArray[j][lexer_1.Lexer.VALUE_OFFSET];
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
tokenIndex = itemEndPos + 1;
|
|
481
|
+
}
|
|
482
|
+
if (delayedAdd.length > 0) {
|
|
483
|
+
if (!(mapKey in this.emptyListInsertionMap)) {
|
|
484
|
+
return null;
|
|
485
|
+
}
|
|
486
|
+
const [findToken, extraLeft, extraRight] = this.emptyListInsertionMap[mapKey];
|
|
487
|
+
if (findToken !== null) {
|
|
488
|
+
const originalTokensArray = originalTokens.getTokens();
|
|
489
|
+
for (; tokenIndex < originalTokensArray.length; tokenIndex++) {
|
|
490
|
+
result += originalTokensArray[tokenIndex][lexer_1.Lexer.VALUE_OFFSET];
|
|
491
|
+
if (originalTokensArray[tokenIndex][lexer_1.Lexer.VALUE_OFFSET] !== findToken) {
|
|
492
|
+
continue;
|
|
493
|
+
}
|
|
494
|
+
tokenIndex++;
|
|
495
|
+
break;
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
let isFirst = true;
|
|
499
|
+
result += extraLeft;
|
|
500
|
+
for (const delayedAddNode of delayedAdd) {
|
|
501
|
+
if (!isFirst) {
|
|
502
|
+
result += insertStr;
|
|
503
|
+
if (insertNewline) {
|
|
504
|
+
result += `${(_e = originalTokens.getDetectedNewline()) !== null && _e !== void 0 ? _e : '\n'}${beforeAsteriskIndent}${afterAsteriskIndent}`;
|
|
505
|
+
}
|
|
506
|
+
result += this.printNodeFormatPreserving(delayedAddNode, originalTokens);
|
|
507
|
+
isFirst = false;
|
|
508
|
+
}
|
|
509
|
+
result += extraRight;
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
return [result, tokenIndex];
|
|
514
|
+
}
|
|
515
|
+
isMultiline(initialIndex, nodes, originalTokens) {
|
|
516
|
+
let isMultiline = nodes.length > 1;
|
|
517
|
+
let pos = initialIndex;
|
|
518
|
+
let allText = '';
|
|
519
|
+
for (const node of nodes) {
|
|
520
|
+
if (!(node instanceof base_node_1.BaseNode)) {
|
|
521
|
+
continue;
|
|
522
|
+
}
|
|
523
|
+
const endPos = node.getAttribute(types_1.Attribute.END_INDEX) + 1;
|
|
524
|
+
const text = originalTokens.getContentBetween(pos, endPos);
|
|
525
|
+
allText += text;
|
|
526
|
+
if (text.indexOf('\n') === -1) {
|
|
527
|
+
isMultiline = false;
|
|
528
|
+
}
|
|
529
|
+
pos = endPos;
|
|
530
|
+
}
|
|
531
|
+
const matches = allText.matchAll(/\n(\s*)\*(\s*)/g);
|
|
532
|
+
let before = '';
|
|
533
|
+
let after = '';
|
|
534
|
+
for (const match of matches) {
|
|
535
|
+
if (match[1].length > before.length) {
|
|
536
|
+
before = match[1];
|
|
537
|
+
}
|
|
538
|
+
if (match[2].length > after.length) {
|
|
539
|
+
after = match[2];
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
return [isMultiline, before, after];
|
|
543
|
+
}
|
|
544
|
+
printNodeFormatPreserving(node, originalTokens) {
|
|
545
|
+
const originalNode = node.getAttribute(types_1.Attribute.ORIGINAL_NODE);
|
|
546
|
+
if (!originalNode) {
|
|
547
|
+
return this.print(node);
|
|
548
|
+
}
|
|
549
|
+
const className = node.constructor.name;
|
|
550
|
+
if (className !== originalNode.constructor.name) {
|
|
551
|
+
throw new Error('Class name mismatch');
|
|
552
|
+
}
|
|
553
|
+
const startPos = originalNode.getAttribute(types_1.Attribute.START_INDEX);
|
|
554
|
+
const endPos = originalNode.getAttribute(types_1.Attribute.END_INDEX);
|
|
555
|
+
if (startPos < 0 || endPos < 0) {
|
|
556
|
+
throw new Error('Invalid start or end index');
|
|
557
|
+
}
|
|
558
|
+
let result = '';
|
|
559
|
+
let pos = startPos;
|
|
560
|
+
const subNodeNames = Object.keys(node);
|
|
561
|
+
for (const subNodeName of subNodeNames) {
|
|
562
|
+
const subNode = node[subNodeName];
|
|
563
|
+
const origSubNode = originalNode[subNodeName];
|
|
564
|
+
if (!(subNode instanceof base_node_1.BaseNode) ||
|
|
565
|
+
!(origSubNode instanceof base_node_1.BaseNode)) {
|
|
566
|
+
if (subNode === origSubNode) {
|
|
567
|
+
continue;
|
|
568
|
+
}
|
|
569
|
+
if (Array.isArray(subNode) && Array.isArray(origSubNode)) {
|
|
570
|
+
let listResult;
|
|
571
|
+
[listResult, pos] = this.printArrayFormatPreserving(subNode, origSubNode, originalTokens, pos, className, subNodeName);
|
|
572
|
+
if (listResult === null) {
|
|
573
|
+
return this.print(node);
|
|
574
|
+
}
|
|
575
|
+
result += listResult;
|
|
576
|
+
continue;
|
|
577
|
+
}
|
|
578
|
+
return this.print(node);
|
|
579
|
+
}
|
|
580
|
+
const subStartPos = origSubNode.getAttribute(types_1.Attribute.START_INDEX);
|
|
581
|
+
const subEndPos = origSubNode.getAttribute(types_1.Attribute.END_INDEX);
|
|
582
|
+
if (subStartPos < 0 || subEndPos < 0) {
|
|
583
|
+
throw new Error('Invalid start or end index');
|
|
584
|
+
}
|
|
585
|
+
if (!subNode) {
|
|
586
|
+
return this.print(node);
|
|
587
|
+
}
|
|
588
|
+
result += originalTokens.getContentBetween(pos, subStartPos);
|
|
589
|
+
const mapKey = `${node.constructor.name}->${subNodeName}`;
|
|
590
|
+
let isParenthesesNeeded = mapKey in this.parenthesesMap &&
|
|
591
|
+
this.parenthesesMap[mapKey].includes(subNode.constructor.name);
|
|
592
|
+
if (subNode.getAttribute(types_1.Attribute.ORIGINAL_NODE) !== null) {
|
|
593
|
+
isParenthesesNeeded =
|
|
594
|
+
isParenthesesNeeded &&
|
|
595
|
+
this.parenthesesMap[mapKey].includes(subNode.getAttribute(types_1.Attribute.ORIGINAL_NODE)
|
|
596
|
+
.constructor.name);
|
|
597
|
+
}
|
|
598
|
+
const addParentheses = isParenthesesNeeded &&
|
|
599
|
+
!originalTokens.hasParentheses(subStartPos, subEndPos);
|
|
600
|
+
if (addParentheses) {
|
|
601
|
+
result += '(';
|
|
602
|
+
}
|
|
603
|
+
result += this.printNodeFormatPreserving(subNode, originalTokens);
|
|
604
|
+
if (addParentheses) {
|
|
605
|
+
result += ')';
|
|
606
|
+
}
|
|
607
|
+
pos = subEndPos + 1;
|
|
608
|
+
}
|
|
609
|
+
return result + originalTokens.getContentBetween(pos, endPos + 1);
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
exports.Printer = Printer;
|