@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
|
@@ -8,11 +8,10 @@ class NullableTypeNode extends type_node_1.TypeNode {
|
|
|
8
8
|
this.type = type;
|
|
9
9
|
}
|
|
10
10
|
toString() {
|
|
11
|
-
return `?${this.type}`;
|
|
11
|
+
return `?${this.type.toString()}`;
|
|
12
12
|
}
|
|
13
13
|
getNodeType() {
|
|
14
14
|
return 'NullableTypeNode';
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
exports.NullableTypeNode = NullableTypeNode;
|
|
18
|
-
//# sourceMappingURL=nullable-type-node.js.map
|
|
@@ -11,7 +11,7 @@ class ObjectShapeItemNode extends type_node_1.TypeNode {
|
|
|
11
11
|
}
|
|
12
12
|
toString() {
|
|
13
13
|
if (this.keyName !== null) {
|
|
14
|
-
return `${this.keyName}${this.optional ? '?' : ''}: ${this.valueType}`;
|
|
14
|
+
return `${this.keyName.toString()}${this.optional ? '?' : ''}: ${this.valueType.toString()}`;
|
|
15
15
|
}
|
|
16
16
|
return this.valueType.toString();
|
|
17
17
|
}
|
|
@@ -20,4 +20,3 @@ class ObjectShapeItemNode extends type_node_1.TypeNode {
|
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
exports.ObjectShapeItemNode = ObjectShapeItemNode;
|
|
23
|
-
//# sourceMappingURL=object-shape-item-node.js.map
|
|
@@ -15,13 +15,12 @@ class OffsetAccessTypeNode extends type_node_1.TypeNode {
|
|
|
15
15
|
if (this.type instanceof callable_type_node_1.CallableTypeNode ||
|
|
16
16
|
this.type instanceof const_type_node_1.ConstTypeNode ||
|
|
17
17
|
this.type instanceof nullable_type_node_1.NullableTypeNode) {
|
|
18
|
-
return `(${this.type})[${this.offset}]`;
|
|
18
|
+
return `(${this.type.toString()})[${this.offset.toString()}]`;
|
|
19
19
|
}
|
|
20
|
-
return `${this.type}[${this.offset}]`;
|
|
20
|
+
return `${this.type.toString()}[${this.offset.toString()}]`;
|
|
21
21
|
}
|
|
22
22
|
getNodeType() {
|
|
23
23
|
return 'OffsetAccessTypeNode';
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
exports.OffsetAccessTypeNode = OffsetAccessTypeNode;
|
|
27
|
-
//# sourceMappingURL=offset-access-type-node.js.map
|
|
@@ -10,12 +10,14 @@ export declare class PhpDocParser {
|
|
|
10
10
|
requireWhitespaceBeforeDescription: boolean;
|
|
11
11
|
preserveTypeAliasesWithInvalidTypes: boolean;
|
|
12
12
|
parseDoctrineAnnotations: boolean;
|
|
13
|
+
private textBetweenTagsBelongsToDescription;
|
|
13
14
|
private useLinesAttributes;
|
|
14
15
|
private useIndexAttributes;
|
|
16
|
+
private static readonly DISALLOWED_DESCRIPTION_START_TOKENS;
|
|
15
17
|
constructor(typeParser: TypeParser, constantExprParser: ConstExprParser, requireWhitespaceBeforeDescription?: boolean, preserveTypeAliasesWithInvalidTypes?: boolean, usedAttributes?: {
|
|
16
18
|
lines: boolean;
|
|
17
19
|
indexes: boolean;
|
|
18
|
-
}, parseDoctrineAnnotations?: boolean);
|
|
20
|
+
}, parseDoctrineAnnotations?: boolean, textBetweenTagsBelongsToDescription?: boolean);
|
|
19
21
|
parse(tokens: TokenIterator): PhpDocNode;
|
|
20
22
|
private parseChild;
|
|
21
23
|
private enrichWithAttributes;
|
|
@@ -39,13 +39,14 @@ class PhpDocParser {
|
|
|
39
39
|
constructor(typeParser, constantExprParser, requireWhitespaceBeforeDescription = false, preserveTypeAliasesWithInvalidTypes = false, usedAttributes = {
|
|
40
40
|
lines: false,
|
|
41
41
|
indexes: false,
|
|
42
|
-
}, parseDoctrineAnnotations = false) {
|
|
42
|
+
}, parseDoctrineAnnotations = false, textBetweenTagsBelongsToDescription = false) {
|
|
43
43
|
var _a, _b;
|
|
44
44
|
this.typeParser = typeParser;
|
|
45
45
|
this.constantExprParser = constantExprParser;
|
|
46
46
|
this.requireWhitespaceBeforeDescription = requireWhitespaceBeforeDescription;
|
|
47
47
|
this.preserveTypeAliasesWithInvalidTypes = preserveTypeAliasesWithInvalidTypes;
|
|
48
48
|
this.parseDoctrineAnnotations = parseDoctrineAnnotations;
|
|
49
|
+
this.textBetweenTagsBelongsToDescription = textBetweenTagsBelongsToDescription;
|
|
49
50
|
this.useLinesAttributes = (_a = usedAttributes.lines) !== null && _a !== void 0 ? _a : false;
|
|
50
51
|
this.useIndexAttributes = (_b = usedAttributes.indexes) !== null && _b !== void 0 ? _b : false;
|
|
51
52
|
}
|
|
@@ -54,38 +55,45 @@ class PhpDocParser {
|
|
|
54
55
|
tokens.tryConsumeTokenType(lexer_1.Lexer.TOKEN_PHPDOC_EOL);
|
|
55
56
|
const children = [];
|
|
56
57
|
if (!tokens.isCurrentTokenType(lexer_1.Lexer.TOKEN_CLOSE_PHPDOC)) {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
58
|
+
children.push(this.parseChild(tokens));
|
|
59
|
+
while (tokens.tryConsumeTokenType(lexer_1.Lexer.TOKEN_PHPDOC_EOL) &&
|
|
60
|
+
!tokens.isCurrentTokenType(lexer_1.Lexer.TOKEN_CLOSE_PHPDOC)) {
|
|
61
|
+
children.push(this.parseChild(tokens));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
tokens.consumeTokenType(lexer_1.Lexer.TOKEN_CLOSE_PHPDOC);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
let name = '';
|
|
69
|
+
let startLine = tokens.currentTokenLine();
|
|
70
|
+
let startIndex = tokens.currentTokenIndex();
|
|
71
|
+
if (children.length > 0) {
|
|
72
|
+
const lastChild = children[children.length - 1];
|
|
73
|
+
if (lastChild instanceof php_doc_tag_node_1.PhpDocTagNode) {
|
|
74
|
+
name = lastChild.name;
|
|
75
|
+
startLine = tokens.currentTokenLine();
|
|
76
|
+
startIndex = tokens.currentTokenIndex();
|
|
75
77
|
}
|
|
76
|
-
lastChild = this.parseChild(tokens);
|
|
77
|
-
children.push(lastChild);
|
|
78
78
|
}
|
|
79
|
+
const tag = new php_doc_tag_node_1.PhpDocTagNode(name, this.enrichWithAttributes(tokens, new invalid_tag_value_node_1.InvalidTagValueNode(`${error === null || error === void 0 ? void 0 : error.message}`, error), startLine, startIndex));
|
|
80
|
+
tokens.forwardToTheEnd();
|
|
81
|
+
return this.enrichWithAttributes(tokens, new php_doc_node_1.PhpDocNode([
|
|
82
|
+
this.enrichWithAttributes(tokens, tag, startLine, startIndex),
|
|
83
|
+
]), 1, 0);
|
|
79
84
|
}
|
|
80
|
-
tokens.
|
|
81
|
-
return new php_doc_node_1.PhpDocNode(children);
|
|
85
|
+
return this.enrichWithAttributes(tokens, new php_doc_node_1.PhpDocNode(children), 1, 0);
|
|
82
86
|
}
|
|
83
87
|
parseChild(tokens) {
|
|
84
88
|
if (tokens.isCurrentTokenType(lexer_1.Lexer.TOKEN_PHPDOC_TAG)) {
|
|
85
|
-
|
|
89
|
+
const startLine = tokens.currentTokenLine();
|
|
90
|
+
const startIndex = tokens.currentTokenIndex();
|
|
91
|
+
return this.enrichWithAttributes(tokens, this.parseTag(tokens), startLine, startIndex);
|
|
86
92
|
}
|
|
93
|
+
const startLine = tokens.currentTokenLine();
|
|
94
|
+
const startIndex = tokens.currentTokenIndex();
|
|
87
95
|
const text = this.parseText(tokens);
|
|
88
|
-
return text;
|
|
96
|
+
return this.enrichWithAttributes(tokens, text, startLine, startIndex);
|
|
89
97
|
}
|
|
90
98
|
enrichWithAttributes(tokens, node, startLine, startIndex) {
|
|
91
99
|
if (this.useLinesAttributes) {
|
|
@@ -99,23 +107,48 @@ class PhpDocParser {
|
|
|
99
107
|
return node;
|
|
100
108
|
}
|
|
101
109
|
parseText(tokens) {
|
|
102
|
-
var _a;
|
|
110
|
+
var _a, _b;
|
|
103
111
|
let text = '';
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
112
|
+
let endTokens = [
|
|
113
|
+
lexer_1.Lexer.TOKEN_PHPDOC_EOL,
|
|
114
|
+
lexer_1.Lexer.TOKEN_CLOSE_PHPDOC,
|
|
115
|
+
lexer_1.Lexer.TOKEN_END,
|
|
116
|
+
];
|
|
117
|
+
if (this.textBetweenTagsBelongsToDescription) {
|
|
118
|
+
endTokens = [lexer_1.Lexer.TOKEN_CLOSE_PHPDOC, lexer_1.Lexer.TOKEN_END];
|
|
119
|
+
}
|
|
120
|
+
let savepoint = false;
|
|
121
|
+
while (this.textBetweenTagsBelongsToDescription ||
|
|
122
|
+
!tokens.isCurrentTokenType(lexer_1.Lexer.TOKEN_PHPDOC_EOL)) {
|
|
123
|
+
const tmpText = tokens.getSkippedHorizontalWhiteSpaceIfAny() +
|
|
124
|
+
tokens.joinUntil(lexer_1.Lexer.TOKEN_PHPDOC_EOL, ...endTokens);
|
|
125
|
+
text += tmpText;
|
|
107
126
|
if (!tokens.isCurrentTokenType(lexer_1.Lexer.TOKEN_PHPDOC_EOL)) {
|
|
108
127
|
break;
|
|
109
128
|
}
|
|
129
|
+
if (this.textBetweenTagsBelongsToDescription) {
|
|
130
|
+
if (!savepoint) {
|
|
131
|
+
tokens.pushSavePoint();
|
|
132
|
+
savepoint = true;
|
|
133
|
+
}
|
|
134
|
+
else if (tmpText !== '') {
|
|
135
|
+
tokens.dropSavePoint();
|
|
136
|
+
tokens.pushSavePoint();
|
|
137
|
+
}
|
|
138
|
+
}
|
|
110
139
|
tokens.pushSavePoint();
|
|
111
140
|
tokens.next();
|
|
112
|
-
if (tokens.isCurrentTokenType(lexer_1.Lexer.TOKEN_PHPDOC_TAG,
|
|
141
|
+
if (tokens.isCurrentTokenType(lexer_1.Lexer.TOKEN_PHPDOC_TAG, ...endTokens)) {
|
|
113
142
|
tokens.rollback();
|
|
114
143
|
break;
|
|
115
144
|
}
|
|
116
145
|
tokens.dropSavePoint();
|
|
117
146
|
text += (_a = tokens.getDetectedNewline()) !== null && _a !== void 0 ? _a : '\n';
|
|
118
147
|
}
|
|
148
|
+
if (savepoint) {
|
|
149
|
+
tokens.rollback();
|
|
150
|
+
text = text.replace(new RegExp(`[${(_b = tokens.getDetectedNewline()) !== null && _b !== void 0 ? _b : '\n'}]+$`, 'g'), '');
|
|
151
|
+
}
|
|
119
152
|
return new php_doc_text_node_1.PhpDocTextNode(text.trim());
|
|
120
153
|
}
|
|
121
154
|
parseTag(tokens) {
|
|
@@ -284,8 +317,8 @@ class PhpDocParser {
|
|
|
284
317
|
}
|
|
285
318
|
parseMethodTagValue(tokens) {
|
|
286
319
|
let isStatic = tokens.tryConsumeTokenValue('static');
|
|
287
|
-
|
|
288
|
-
|
|
320
|
+
let startLine = tokens.currentTokenLine();
|
|
321
|
+
let startIndex = tokens.currentTokenIndex();
|
|
289
322
|
const returnTypeOrName = this.typeParser.parse(tokens);
|
|
290
323
|
let returnType;
|
|
291
324
|
let name;
|
|
@@ -307,8 +340,8 @@ class PhpDocParser {
|
|
|
307
340
|
const templateTypes = [];
|
|
308
341
|
if (tokens.tryConsumeTokenType(lexer_1.Lexer.TOKEN_OPEN_ANGLE_BRACKET)) {
|
|
309
342
|
do {
|
|
310
|
-
|
|
311
|
-
|
|
343
|
+
startLine = tokens.currentTokenLine();
|
|
344
|
+
startIndex = tokens.currentTokenIndex();
|
|
312
345
|
const templateType = this.parseTemplateTagValue(tokens, false);
|
|
313
346
|
templateTypes.push(this.enrichWithAttributes(tokens, templateType, startLine, startIndex));
|
|
314
347
|
} while (tokens.tryConsumeTokenType(lexer_1.Lexer.TOKEN_COMMA));
|
|
@@ -320,8 +353,7 @@ class PhpDocParser {
|
|
|
320
353
|
const parameter = this.parseMethodTagValueParameter(tokens);
|
|
321
354
|
parameters.push(parameter);
|
|
322
355
|
while (tokens.tryConsumeTokenType(lexer_1.Lexer.TOKEN_COMMA)) {
|
|
323
|
-
|
|
324
|
-
parameters.push(parameter);
|
|
356
|
+
parameters.push(this.parseMethodTagValueParameter(tokens));
|
|
325
357
|
}
|
|
326
358
|
}
|
|
327
359
|
tokens.consumeTokenType(lexer_1.Lexer.TOKEN_CLOSE_PARENTHESES);
|
|
@@ -520,4 +552,7 @@ class PhpDocParser {
|
|
|
520
552
|
}
|
|
521
553
|
}
|
|
522
554
|
exports.PhpDocParser = PhpDocParser;
|
|
523
|
-
|
|
555
|
+
PhpDocParser.DISALLOWED_DESCRIPTION_START_TOKENS = [
|
|
556
|
+
lexer_1.Lexer.TOKEN_UNION,
|
|
557
|
+
lexer_1.Lexer.TOKEN_INTERSECTION,
|
|
558
|
+
];
|
|
@@ -262,9 +262,9 @@ class TypeParser {
|
|
|
262
262
|
if (tokens.tryConsumeTokenType(lexer_1.Lexer.TOKEN_CLOSE_ANGLE_BRACKET)) {
|
|
263
263
|
break;
|
|
264
264
|
}
|
|
265
|
-
const [
|
|
266
|
-
genericTypes.push(
|
|
267
|
-
variances.push(
|
|
265
|
+
const [genericTypeToAddInWhileLoop, varianceToAddInWhileLoop] = this.parseGenericTypeArgument(tokens);
|
|
266
|
+
genericTypes.push(genericTypeToAddInWhileLoop);
|
|
267
|
+
variances.push(varianceToAddInWhileLoop);
|
|
268
268
|
tokens.tryConsumeTokenType(lexer_1.Lexer.TOKEN_PHPDOC_EOL);
|
|
269
269
|
}
|
|
270
270
|
tokens.tryConsumeTokenType(lexer_1.Lexer.TOKEN_PHPDOC_EOL);
|
|
@@ -350,7 +350,7 @@ class TypeParser {
|
|
|
350
350
|
return type;
|
|
351
351
|
}
|
|
352
352
|
if (tokens.tryConsumeTokenType(lexer_1.Lexer.TOKEN_THIS_VARIABLE)) {
|
|
353
|
-
|
|
353
|
+
type = new this_type_node_1.ThisTypeNode();
|
|
354
354
|
if (tokens.isCurrentTokenType(lexer_1.Lexer.TOKEN_OPEN_SQUARE_BRACKET)) {
|
|
355
355
|
type = this.tryParseArrayOrOffsetAccess(tokens, this.enrichWithAttributes(tokens, type, startLine, startIndex));
|
|
356
356
|
}
|
|
@@ -574,4 +574,3 @@ class TypeParser {
|
|
|
574
574
|
}
|
|
575
575
|
}
|
|
576
576
|
exports.TypeParser = TypeParser;
|
|
577
|
-
//# sourceMappingURL=type-parser.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare class DiffElem<EleType> {
|
|
2
|
+
type: DiffElemType;
|
|
3
|
+
old: EleType;
|
|
4
|
+
new: EleType;
|
|
5
|
+
constructor(type: DiffElemType, oldEle: EleType, newEle: EleType);
|
|
6
|
+
}
|
|
7
|
+
export declare enum DiffElemType {
|
|
8
|
+
KEEP = 1,
|
|
9
|
+
REMOVE = 2,
|
|
10
|
+
ADD = 3,
|
|
11
|
+
REPLACE = 4
|
|
12
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DiffElemType = exports.DiffElem = void 0;
|
|
4
|
+
class DiffElem {
|
|
5
|
+
constructor(type, oldEle, newEle) {
|
|
6
|
+
this.type = type;
|
|
7
|
+
this.type = type;
|
|
8
|
+
this.old = oldEle;
|
|
9
|
+
this.new = newEle;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.DiffElem = DiffElem;
|
|
13
|
+
var DiffElemType;
|
|
14
|
+
(function (DiffElemType) {
|
|
15
|
+
DiffElemType[DiffElemType["KEEP"] = 1] = "KEEP";
|
|
16
|
+
DiffElemType[DiffElemType["REMOVE"] = 2] = "REMOVE";
|
|
17
|
+
DiffElemType[DiffElemType["ADD"] = 3] = "ADD";
|
|
18
|
+
DiffElemType[DiffElemType["REPLACE"] = 4] = "REPLACE";
|
|
19
|
+
})(DiffElemType || (exports.DiffElemType = DiffElemType = {}));
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DiffElem } from './diff-elem';
|
|
2
|
+
export declare class Differ<T> {
|
|
3
|
+
private isEqual;
|
|
4
|
+
constructor(isEqual: (a: T, b: T) => boolean);
|
|
5
|
+
diff(old: T[], newElements: T[]): DiffElem<T>[];
|
|
6
|
+
diffWithReplacements(old: T[], newElements: T[]): DiffElem<T>[];
|
|
7
|
+
private calculateTrace;
|
|
8
|
+
private extractDiff;
|
|
9
|
+
private coalesceReplacements;
|
|
10
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Differ = void 0;
|
|
4
|
+
const diff_elem_1 = require("./diff-elem");
|
|
5
|
+
class Differ {
|
|
6
|
+
constructor(isEqual) {
|
|
7
|
+
this.isEqual = isEqual;
|
|
8
|
+
}
|
|
9
|
+
diff(old, newElements) {
|
|
10
|
+
const [trace, x, y] = this.calculateTrace(old, newElements);
|
|
11
|
+
return this.extractDiff(trace, x, y, old, newElements);
|
|
12
|
+
}
|
|
13
|
+
diffWithReplacements(old, newElements) {
|
|
14
|
+
return this.coalesceReplacements(this.diff(old, newElements));
|
|
15
|
+
}
|
|
16
|
+
calculateTrace(old, newElements) {
|
|
17
|
+
const n = old.length;
|
|
18
|
+
const m = newElements.length;
|
|
19
|
+
const max = n + m;
|
|
20
|
+
const v = { 1: 0 };
|
|
21
|
+
const trace = [];
|
|
22
|
+
for (let d = 0; d <= max; d++) {
|
|
23
|
+
trace.push(Object.assign({}, v));
|
|
24
|
+
for (let k = -d; k <= d; k += 2) {
|
|
25
|
+
let x;
|
|
26
|
+
if (k === -d || (k !== d && v[k - 1] < v[k + 1])) {
|
|
27
|
+
x = v[k + 1];
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
x = v[k - 1] + 1;
|
|
31
|
+
}
|
|
32
|
+
let y = x - k;
|
|
33
|
+
while (x < n && y < m && this.isEqual(old[x], newElements[y])) {
|
|
34
|
+
x++;
|
|
35
|
+
y++;
|
|
36
|
+
}
|
|
37
|
+
v[k] = x;
|
|
38
|
+
if (x >= n && y >= m) {
|
|
39
|
+
return [trace, x, y];
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
throw new Error('Should not happen');
|
|
44
|
+
}
|
|
45
|
+
extractDiff(trace, x, y, old, newElements) {
|
|
46
|
+
const result = [];
|
|
47
|
+
for (let d = trace.length - 1; d >= 0; d--) {
|
|
48
|
+
const v = trace[d];
|
|
49
|
+
const k = x - y;
|
|
50
|
+
let prevK;
|
|
51
|
+
if (k === -d || (k !== d && v[k - 1] < v[k + 1])) {
|
|
52
|
+
prevK = k + 1;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
prevK = k - 1;
|
|
56
|
+
}
|
|
57
|
+
const prevX = v[prevK];
|
|
58
|
+
const prevY = prevX - prevK;
|
|
59
|
+
while (x > prevX && y > prevY) {
|
|
60
|
+
result.push(new diff_elem_1.DiffElem(diff_elem_1.DiffElemType.KEEP, old[x - 1], newElements[y - 1]));
|
|
61
|
+
x--;
|
|
62
|
+
y--;
|
|
63
|
+
}
|
|
64
|
+
if (d === 0) {
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
while (x > prevX) {
|
|
68
|
+
result.push(new diff_elem_1.DiffElem(diff_elem_1.DiffElemType.REMOVE, old[x - 1], null));
|
|
69
|
+
x--;
|
|
70
|
+
}
|
|
71
|
+
while (y > prevY) {
|
|
72
|
+
result.push(new diff_elem_1.DiffElem(diff_elem_1.DiffElemType.ADD, null, newElements[y - 1]));
|
|
73
|
+
y--;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return result.reverse();
|
|
77
|
+
}
|
|
78
|
+
coalesceReplacements(diff) {
|
|
79
|
+
const newDiff = [];
|
|
80
|
+
const c = diff.length;
|
|
81
|
+
for (let i = 0; i < c; i++) {
|
|
82
|
+
const diffType = diff[i].type;
|
|
83
|
+
if (diffType !== diff_elem_1.DiffElemType.REMOVE) {
|
|
84
|
+
newDiff.push(diff[i]);
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
let j = i;
|
|
88
|
+
while (j < c && diff[j].type === diff_elem_1.DiffElemType.REMOVE) {
|
|
89
|
+
j++;
|
|
90
|
+
}
|
|
91
|
+
let k = j;
|
|
92
|
+
while (k < c && diff[k].type === diff_elem_1.DiffElemType.ADD) {
|
|
93
|
+
k++;
|
|
94
|
+
}
|
|
95
|
+
if (j - i === k - j) {
|
|
96
|
+
const len = j - i;
|
|
97
|
+
for (let n = 0; n < len; n++) {
|
|
98
|
+
newDiff.push(new diff_elem_1.DiffElem(diff_elem_1.DiffElemType.REPLACE, diff[i + n].old, diff[j + n].new));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
for (; i < k; i++) {
|
|
103
|
+
newDiff.push(diff[i]);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
i = k - 1;
|
|
107
|
+
}
|
|
108
|
+
return newDiff;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
exports.Differ = Differ;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { BaseNode } from '../ast/base-node';
|
|
2
|
+
import { PhpDocNode } from '../ast/php-doc/php-doc-node';
|
|
3
|
+
import { TokenIterator } from '../parser/token-iterator';
|
|
4
|
+
export declare class Printer {
|
|
5
|
+
private differ;
|
|
6
|
+
private listInsertionMap;
|
|
7
|
+
private emptyListInsertionMap;
|
|
8
|
+
private parenthesesMap;
|
|
9
|
+
private parenthesesListMap;
|
|
10
|
+
printFormatPreserving(node: PhpDocNode, originalNode: PhpDocNode, originalTokens: TokenIterator): string;
|
|
11
|
+
print(node: BaseNode): string;
|
|
12
|
+
private printTagValue;
|
|
13
|
+
private printType;
|
|
14
|
+
private wrapInParentheses;
|
|
15
|
+
private printOffsetAccessType;
|
|
16
|
+
private printConstExpr;
|
|
17
|
+
private printArrayFormatPreserving;
|
|
18
|
+
private isMultiline;
|
|
19
|
+
private printNodeFormatPreserving;
|
|
20
|
+
}
|