@bscotch/gml-parser 1.14.2
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/LICENSE.md +29 -0
- package/README.md +151 -0
- package/assets/GmlSpec.xml +11419 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/jsdoc.d.ts +79 -0
- package/dist/jsdoc.d.ts.map +1 -0
- package/dist/jsdoc.feather.d.ts +23 -0
- package/dist/jsdoc.feather.d.ts.map +1 -0
- package/dist/jsdoc.feather.js +143 -0
- package/dist/jsdoc.feather.js.map +1 -0
- package/dist/jsdoc.js +468 -0
- package/dist/jsdoc.js.map +1 -0
- package/dist/jsdoc.test.d.ts +2 -0
- package/dist/jsdoc.test.d.ts.map +1 -0
- package/dist/jsdoc.test.js +185 -0
- package/dist/jsdoc.test.js.map +1 -0
- package/dist/lexer.d.ts +3 -0
- package/dist/lexer.d.ts.map +1 -0
- package/dist/lexer.js +14 -0
- package/dist/lexer.js.map +1 -0
- package/dist/lexer.test.d.ts +2 -0
- package/dist/lexer.test.d.ts.map +1 -0
- package/dist/lexer.test.js +78 -0
- package/dist/lexer.test.js.map +1 -0
- package/dist/lib.objects.d.ts +190 -0
- package/dist/lib.objects.d.ts.map +1 -0
- package/dist/lib.objects.js +242 -0
- package/dist/lib.objects.js.map +1 -0
- package/dist/logger.d.ts +13 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +14 -0
- package/dist/logger.js.map +1 -0
- package/dist/modules.d.ts +19 -0
- package/dist/modules.d.ts.map +1 -0
- package/dist/modules.js +320 -0
- package/dist/modules.js.map +1 -0
- package/dist/modules.test.d.ts +2 -0
- package/dist/modules.test.d.ts.map +1 -0
- package/dist/modules.test.js +57 -0
- package/dist/modules.test.js.map +1 -0
- package/dist/modules.types.d.ts +78 -0
- package/dist/modules.types.d.ts.map +1 -0
- package/dist/modules.types.js +2 -0
- package/dist/modules.types.js.map +1 -0
- package/dist/modules.util.d.ts +5 -0
- package/dist/modules.util.d.ts.map +1 -0
- package/dist/modules.util.js +13 -0
- package/dist/modules.util.js.map +1 -0
- package/dist/parser.d.ts +121 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +571 -0
- package/dist/parser.js.map +1 -0
- package/dist/parser.test.d.ts +2 -0
- package/dist/parser.test.d.ts.map +1 -0
- package/dist/parser.test.js +143 -0
- package/dist/parser.test.js.map +1 -0
- package/dist/parser.utility.d.ts +29 -0
- package/dist/parser.utility.d.ts.map +1 -0
- package/dist/parser.utility.js +125 -0
- package/dist/parser.utility.js.map +1 -0
- package/dist/project.asset.d.ts +115 -0
- package/dist/project.asset.d.ts.map +1 -0
- package/dist/project.asset.js +802 -0
- package/dist/project.asset.js.map +1 -0
- package/dist/project.code.d.ts +130 -0
- package/dist/project.code.d.ts.map +1 -0
- package/dist/project.code.js +570 -0
- package/dist/project.code.js.map +1 -0
- package/dist/project.d.ts +533 -0
- package/dist/project.d.ts.map +1 -0
- package/dist/project.diagnostics.d.ts +32 -0
- package/dist/project.diagnostics.d.ts.map +1 -0
- package/dist/project.diagnostics.js +23 -0
- package/dist/project.diagnostics.js.map +1 -0
- package/dist/project.js +1216 -0
- package/dist/project.js.map +1 -0
- package/dist/project.location.d.ts +133 -0
- package/dist/project.location.d.ts.map +1 -0
- package/dist/project.location.js +219 -0
- package/dist/project.location.js.map +1 -0
- package/dist/project.native.d.ts +26 -0
- package/dist/project.native.d.ts.map +1 -0
- package/dist/project.native.js +321 -0
- package/dist/project.native.js.map +1 -0
- package/dist/project.spec.d.ts +1298 -0
- package/dist/project.spec.d.ts.map +1 -0
- package/dist/project.spec.js +263 -0
- package/dist/project.spec.js.map +1 -0
- package/dist/project.test.d.ts +2 -0
- package/dist/project.test.d.ts.map +1 -0
- package/dist/project.test.js +633 -0
- package/dist/project.test.js.map +1 -0
- package/dist/shaderDefaults.d.ts +3 -0
- package/dist/shaderDefaults.d.ts.map +1 -0
- package/dist/shaderDefaults.js +32 -0
- package/dist/shaderDefaults.js.map +1 -0
- package/dist/signifiers.d.ts +54 -0
- package/dist/signifiers.d.ts.map +1 -0
- package/dist/signifiers.flags.d.ts +38 -0
- package/dist/signifiers.flags.d.ts.map +1 -0
- package/dist/signifiers.flags.js +131 -0
- package/dist/signifiers.flags.js.map +1 -0
- package/dist/signifiers.js +117 -0
- package/dist/signifiers.js.map +1 -0
- package/dist/spine.d.ts +28 -0
- package/dist/spine.d.ts.map +1 -0
- package/dist/spine.js +64 -0
- package/dist/spine.js.map +1 -0
- package/dist/spine.test.d.ts +2 -0
- package/dist/spine.test.d.ts.map +1 -0
- package/dist/spine.test.js +420 -0
- package/dist/spine.test.js.map +1 -0
- package/dist/spine.types.d.ts +89 -0
- package/dist/spine.types.d.ts.map +1 -0
- package/dist/spine.types.js +2 -0
- package/dist/spine.types.js.map +1 -0
- package/dist/test.lib.d.ts +3 -0
- package/dist/test.lib.d.ts.map +1 -0
- package/dist/test.lib.js +16 -0
- package/dist/test.lib.js.map +1 -0
- package/dist/tokens.categories.d.ts +22 -0
- package/dist/tokens.categories.d.ts.map +1 -0
- package/dist/tokens.categories.js +78 -0
- package/dist/tokens.categories.js.map +1 -0
- package/dist/tokens.code.d.ts +2 -0
- package/dist/tokens.code.d.ts.map +1 -0
- package/dist/tokens.code.js +523 -0
- package/dist/tokens.code.js.map +1 -0
- package/dist/tokens.d.ts +130 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +13 -0
- package/dist/tokens.js.map +1 -0
- package/dist/tokens.lib.d.ts +15 -0
- package/dist/tokens.lib.d.ts.map +1 -0
- package/dist/tokens.lib.js +12 -0
- package/dist/tokens.lib.js.map +1 -0
- package/dist/tokens.shared.d.ts +4 -0
- package/dist/tokens.shared.d.ts.map +1 -0
- package/dist/tokens.shared.js +35 -0
- package/dist/tokens.shared.js.map +1 -0
- package/dist/tokens.strings.d.ts +5 -0
- package/dist/tokens.strings.d.ts.map +1 -0
- package/dist/tokens.strings.js +111 -0
- package/dist/tokens.strings.js.map +1 -0
- package/dist/types.checks.d.ts +50 -0
- package/dist/types.checks.d.ts.map +1 -0
- package/dist/types.checks.js +246 -0
- package/dist/types.checks.js.map +1 -0
- package/dist/types.d.ts +152 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.feather.d.ts +21 -0
- package/dist/types.feather.d.ts.map +1 -0
- package/dist/types.feather.js +156 -0
- package/dist/types.feather.js.map +1 -0
- package/dist/types.hover.d.ts +4 -0
- package/dist/types.hover.d.ts.map +1 -0
- package/dist/types.hover.js +99 -0
- package/dist/types.hover.js.map +1 -0
- package/dist/types.js +457 -0
- package/dist/types.js.map +1 -0
- package/dist/types.primitives.d.ts +10 -0
- package/dist/types.primitives.d.ts.map +1 -0
- package/dist/types.primitives.js +88 -0
- package/dist/types.primitives.js.map +1 -0
- package/dist/types.sprites.d.ts +8 -0
- package/dist/types.sprites.d.ts.map +1 -0
- package/dist/types.sprites.js +417 -0
- package/dist/types.sprites.js.map +1 -0
- package/dist/types.test.d.ts +2 -0
- package/dist/types.test.d.ts.map +1 -0
- package/dist/types.test.js +62 -0
- package/dist/types.test.js.map +1 -0
- package/dist/util.d.ts +50 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +168 -0
- package/dist/util.js.map +1 -0
- package/dist/util.test.d.ts +3 -0
- package/dist/util.test.d.ts.map +1 -0
- package/dist/util.test.js +63 -0
- package/dist/util.test.js.map +1 -0
- package/dist/visitor.assign.d.ts +24 -0
- package/dist/visitor.assign.d.ts.map +1 -0
- package/dist/visitor.assign.js +112 -0
- package/dist/visitor.assign.js.map +1 -0
- package/dist/visitor.d.ts +89 -0
- package/dist/visitor.d.ts.map +1 -0
- package/dist/visitor.functionExpression.d.ts +7 -0
- package/dist/visitor.functionExpression.d.ts.map +1 -0
- package/dist/visitor.functionExpression.js +216 -0
- package/dist/visitor.functionExpression.js.map +1 -0
- package/dist/visitor.globals.d.ts +59 -0
- package/dist/visitor.globals.d.ts.map +1 -0
- package/dist/visitor.globals.js +271 -0
- package/dist/visitor.globals.js.map +1 -0
- package/dist/visitor.identifierAccessor.d.ts +6 -0
- package/dist/visitor.identifierAccessor.d.ts.map +1 -0
- package/dist/visitor.identifierAccessor.js +381 -0
- package/dist/visitor.identifierAccessor.js.map +1 -0
- package/dist/visitor.js +605 -0
- package/dist/visitor.js.map +1 -0
- package/dist/visitor.processor.d.ts +66 -0
- package/dist/visitor.processor.d.ts.map +1 -0
- package/dist/visitor.processor.js +147 -0
- package/dist/visitor.processor.js.map +1 -0
- package/package.json +63 -0
package/dist/jsdoc.js
ADDED
|
@@ -0,0 +1,468 @@
|
|
|
1
|
+
import { keysOf } from '@bscotch/utility';
|
|
2
|
+
import { flattenFeatherTypes } from './jsdoc.feather.js';
|
|
3
|
+
import { assert } from './util.js';
|
|
4
|
+
const patterns = {
|
|
5
|
+
param: `@(param(eter)?|arg(ument)?)\\b`,
|
|
6
|
+
description: `@desc(ription)?\\b`,
|
|
7
|
+
function: `@func(tion)?\\b`,
|
|
8
|
+
returns: `@returns?\\b`,
|
|
9
|
+
pure: `@pure\\b`,
|
|
10
|
+
mixin: `@mixin\\b`,
|
|
11
|
+
ignore: `@ignore\\b`,
|
|
12
|
+
deprecated: `@deprecated\\b`,
|
|
13
|
+
self: `@(context|self)\\b`,
|
|
14
|
+
type: `@type\\b`,
|
|
15
|
+
localvar: `@(localvar|var)\\b`,
|
|
16
|
+
globalvar: `@globalvar\\b`,
|
|
17
|
+
instancevar: `@(instancevar|prop(erty)?)\\b`,
|
|
18
|
+
template: `@template\\b`,
|
|
19
|
+
unknown: `@\\w+\\b`,
|
|
20
|
+
};
|
|
21
|
+
const typeGroupPattern = `(?<typeGroup>{\\s*(?<typeUnion>[^}]*?)?\\s*})`;
|
|
22
|
+
const linePrefixPattern = `^(\\s*(?<delim>///|\\*)\\s*)?`;
|
|
23
|
+
const descriptionPattern = `(?:\\s*-\\s*)?(?<info>.*)`;
|
|
24
|
+
const paramNamePattern = `(?<name>[a-zA-Z_][a-zA-Z_0-9]*)`;
|
|
25
|
+
const paramDefaultPattern = `(?:\\s*=\\s*(?<default>[^\\]]+?)\\s*)`;
|
|
26
|
+
const dotdotdot = `\\.\\.\\.`;
|
|
27
|
+
const optionalParamNamePattern = `\\[\\s*(?<optionalName>(?:[a-zA-Z_][a-zA-Z_0-9]*|${dotdotdot}))\\s*${paramDefaultPattern}?\\]`;
|
|
28
|
+
const names = keysOf(patterns);
|
|
29
|
+
for (const tagName of names) {
|
|
30
|
+
// Add the line prefix and a tag capture group
|
|
31
|
+
patterns[tagName] = `${linePrefixPattern}(?<tag>(?<${tagName}>${patterns[tagName]}))`;
|
|
32
|
+
}
|
|
33
|
+
// Types with required typeGroups
|
|
34
|
+
const typeTags = ['returns', 'type'];
|
|
35
|
+
for (const tagName of typeTags) {
|
|
36
|
+
patterns[tagName] = `${patterns[tagName]}\\s*${typeGroupPattern}`;
|
|
37
|
+
}
|
|
38
|
+
// Params
|
|
39
|
+
patterns.param = `${patterns.param}(\\s+${typeGroupPattern})?\\s+(${paramNamePattern}|${optionalParamNamePattern})`;
|
|
40
|
+
// Variable declaration patterns
|
|
41
|
+
for (const tagName of [
|
|
42
|
+
'localvar',
|
|
43
|
+
'globalvar',
|
|
44
|
+
'instancevar',
|
|
45
|
+
'template',
|
|
46
|
+
]) {
|
|
47
|
+
patterns[tagName] = `${patterns[tagName]}(\\s+${typeGroupPattern})?\\s+${paramNamePattern}`;
|
|
48
|
+
}
|
|
49
|
+
// Self (has a type but no group. Make brackets optional to be more forgiving)
|
|
50
|
+
patterns.self = `${patterns.self}\\s+(?<extraBracket>\\{\\s*)?(?<type>[a-zA-Z_][a-zA-Z_0-9.]*)(?:\\s*\\})?`;
|
|
51
|
+
// Descriptions
|
|
52
|
+
for (const tagName of names) {
|
|
53
|
+
patterns[tagName] = `${patterns[tagName]}(\\s+${descriptionPattern})?`;
|
|
54
|
+
}
|
|
55
|
+
const descriptionLine = `${linePrefixPattern}\\s*${descriptionPattern}`;
|
|
56
|
+
const regexes = names.reduce((acc, tagName) => {
|
|
57
|
+
// The 'd' flag is only supported in Node 18+, which VSCode doesn't support yet.
|
|
58
|
+
acc[tagName] = new RegExp(patterns[tagName]);
|
|
59
|
+
return acc;
|
|
60
|
+
}, {});
|
|
61
|
+
/**
|
|
62
|
+
* Given an IToken containing an entire JSDoc block,
|
|
63
|
+
* convert it to a list of lines, each with its own position.
|
|
64
|
+
*/
|
|
65
|
+
function jsdocBlockToLines(raw) {
|
|
66
|
+
raw = { ...raw }; // Clone so we don't mutate the original
|
|
67
|
+
const startPosition = {
|
|
68
|
+
line: raw.startLine,
|
|
69
|
+
column: raw.startColumn,
|
|
70
|
+
offset: raw.startOffset,
|
|
71
|
+
};
|
|
72
|
+
// If this starts with a /**, remove that.
|
|
73
|
+
raw.image = raw.image.replace(/^\/\*\*/, ' ');
|
|
74
|
+
// If this ends with a */, remove that.
|
|
75
|
+
raw.image = raw.image.replace(/\*\/$/, ' ');
|
|
76
|
+
const rawLines = raw.image.split(/(\r?\n)/);
|
|
77
|
+
const jsdocLines = [];
|
|
78
|
+
let jsdocLine = {
|
|
79
|
+
content: '',
|
|
80
|
+
start: startPosition,
|
|
81
|
+
};
|
|
82
|
+
for (let l = 0; l < rawLines.length; l++) {
|
|
83
|
+
const line = rawLines[l];
|
|
84
|
+
if (!line)
|
|
85
|
+
continue;
|
|
86
|
+
if (line.match(/\r?\n/)) {
|
|
87
|
+
// Then we need to add more space to the current jsdocline
|
|
88
|
+
// start position
|
|
89
|
+
jsdocLine.start.line++;
|
|
90
|
+
jsdocLine.start.column = 1;
|
|
91
|
+
jsdocLine.start.offset += line.length;
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
jsdocLine.content += line;
|
|
95
|
+
jsdocLines.push(jsdocLine);
|
|
96
|
+
// Create the next jsdoc line
|
|
97
|
+
jsdocLine = {
|
|
98
|
+
content: '',
|
|
99
|
+
start: {
|
|
100
|
+
line: jsdocLine.start.line,
|
|
101
|
+
column: jsdocLine.start.column + line.length,
|
|
102
|
+
offset: jsdocLine.start.offset + line.length,
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
return jsdocLines;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Given an array of ITokens, each containing a single line
|
|
110
|
+
* from a block of ///-style JSDoc comments, convert it to
|
|
111
|
+
* a common format.
|
|
112
|
+
*/
|
|
113
|
+
function jsdocGmlToLines(raw) {
|
|
114
|
+
// We already have lines as required, so just convert formats
|
|
115
|
+
return raw.map((token) => ({
|
|
116
|
+
content: token.image,
|
|
117
|
+
start: {
|
|
118
|
+
line: token.startLine,
|
|
119
|
+
column: token.startColumn,
|
|
120
|
+
offset: token.startOffset,
|
|
121
|
+
},
|
|
122
|
+
}));
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Given a raw string containing a JSDoc block in either GML
|
|
126
|
+
* or JS style, convert it
|
|
127
|
+
* to a list of lines, each with its own position.
|
|
128
|
+
*/
|
|
129
|
+
function jsdocStringToLines(raw, startPosition) {
|
|
130
|
+
const asIToken = {
|
|
131
|
+
image: raw,
|
|
132
|
+
startLine: startPosition?.line || 1,
|
|
133
|
+
startColumn: startPosition?.column || 1,
|
|
134
|
+
startOffset: startPosition?.offset || 0,
|
|
135
|
+
};
|
|
136
|
+
return jsdocBlockToLines(asIToken);
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Since single-line style comments make it impossible to
|
|
140
|
+
* tell when we're in a NEW doc, we need to break lines into
|
|
141
|
+
* groups
|
|
142
|
+
*/
|
|
143
|
+
export function gmlLinesByGroup(gmlLines) {
|
|
144
|
+
const lines = jsdocGmlToLines(gmlLines);
|
|
145
|
+
const groups = [[]];
|
|
146
|
+
let currentGroup = groups[0];
|
|
147
|
+
lines: for (const line of lines) {
|
|
148
|
+
if (!line) {
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
let match = null;
|
|
152
|
+
for (const tagName of names) {
|
|
153
|
+
match = line.content.match(regexes[tagName]);
|
|
154
|
+
if (!match) {
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
const parts = match.groups;
|
|
158
|
+
// Consider simpler groups and let the rest fall together
|
|
159
|
+
if (parts.localvar || parts.globalvar || parts.instancevar) {
|
|
160
|
+
// Then this is a new block!
|
|
161
|
+
currentGroup = [];
|
|
162
|
+
groups.push(currentGroup);
|
|
163
|
+
}
|
|
164
|
+
currentGroup.push(line);
|
|
165
|
+
continue lines; // Matches are exclusive, so go to the next line
|
|
166
|
+
}
|
|
167
|
+
// If we make it here then we didn't fine a match. Just add it to the currentgruop
|
|
168
|
+
currentGroup.push(line);
|
|
169
|
+
}
|
|
170
|
+
return groups.filter((g) => g.length);
|
|
171
|
+
}
|
|
172
|
+
export function parseJsdoc(raw,
|
|
173
|
+
/**
|
|
174
|
+
* The position of the first character of the jsdoc string,
|
|
175
|
+
* if it has been parsed out of a larger document. This is
|
|
176
|
+
* used to offset the positions of discovered tag components.
|
|
177
|
+
*/
|
|
178
|
+
startPosition) {
|
|
179
|
+
let lines;
|
|
180
|
+
if (typeof raw === 'string') {
|
|
181
|
+
lines = jsdocStringToLines(raw, startPosition);
|
|
182
|
+
}
|
|
183
|
+
else if (Array.isArray(raw)) {
|
|
184
|
+
if (raw[0] && 'image' in raw[0]) {
|
|
185
|
+
// Then this is a list of ITokens
|
|
186
|
+
lines = jsdocGmlToLines(raw);
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
// Then this is a list of JsdocLines
|
|
190
|
+
lines = raw;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
// Then this is a single IToken
|
|
195
|
+
lines = jsdocBlockToLines(raw);
|
|
196
|
+
}
|
|
197
|
+
assert(lines, 'Lines must be an array');
|
|
198
|
+
if (!lines.length)
|
|
199
|
+
return undefined;
|
|
200
|
+
assert(lines[0], 'No lines found in jsdoc block');
|
|
201
|
+
const start = lines[0].start;
|
|
202
|
+
const end = { ...lines.at(-1).start };
|
|
203
|
+
end.column += lines.at(-1).content.length;
|
|
204
|
+
end.offset += lines.at(-1).content.length;
|
|
205
|
+
// Default to a description-only doc, and update its type
|
|
206
|
+
// if we can infer it based on the tags.
|
|
207
|
+
const doc = {
|
|
208
|
+
kind: 'description',
|
|
209
|
+
description: '',
|
|
210
|
+
start,
|
|
211
|
+
end,
|
|
212
|
+
tags: [],
|
|
213
|
+
diagnostics: [],
|
|
214
|
+
typeRanges: [],
|
|
215
|
+
};
|
|
216
|
+
const addTypeRanges = (component) => {
|
|
217
|
+
if (!component)
|
|
218
|
+
return;
|
|
219
|
+
const types = flattenFeatherTypes(component.content);
|
|
220
|
+
for (const type of types) {
|
|
221
|
+
// Convert the offset to a range and add it to typeRanges
|
|
222
|
+
const start = {
|
|
223
|
+
line: component.start.line,
|
|
224
|
+
column: component.start.column + type.name.offset,
|
|
225
|
+
offset: component.start.offset + type.name.offset,
|
|
226
|
+
};
|
|
227
|
+
const end = { ...start };
|
|
228
|
+
end.column += type.name.content.length - 1;
|
|
229
|
+
end.offset += type.name.content.length - 1;
|
|
230
|
+
doc.typeRanges.push({
|
|
231
|
+
content: type.name.content,
|
|
232
|
+
start,
|
|
233
|
+
end,
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
let describing = doc;
|
|
238
|
+
const appendDescription = (currentDescription, newDescription) => {
|
|
239
|
+
newDescription ||= '';
|
|
240
|
+
if (currentDescription) {
|
|
241
|
+
return `${currentDescription}\n${newDescription}`;
|
|
242
|
+
}
|
|
243
|
+
return newDescription;
|
|
244
|
+
};
|
|
245
|
+
for (const line of lines) {
|
|
246
|
+
assert(line, 'Line does not exist');
|
|
247
|
+
// Check for a match against each of the tag patterns
|
|
248
|
+
// until we fined one. If we don't then `match` will
|
|
249
|
+
// stay null, and we can use the line as a description.
|
|
250
|
+
let match = null;
|
|
251
|
+
for (const tagName of names) {
|
|
252
|
+
match = line.content.match(regexes[tagName]);
|
|
253
|
+
const parts = match?.groups;
|
|
254
|
+
// TODO: In Node <18, this will be undefined. Once VSCode
|
|
255
|
+
// updates to use Node 18+ we can remove the `undefined` union.
|
|
256
|
+
// const indices = match?.indices?.groups as MatchIndices | undefined;
|
|
257
|
+
if (!match) {
|
|
258
|
+
// Then we haven't found a tag yet
|
|
259
|
+
continue;
|
|
260
|
+
}
|
|
261
|
+
// Add the tag to the list of tags
|
|
262
|
+
const tagMatch = line.content.match(/@\w+\b/);
|
|
263
|
+
assert(tagMatch, 'Tag match should exist');
|
|
264
|
+
assert(tagMatch[0], 'Tag match must be an array');
|
|
265
|
+
const tagIndices = [
|
|
266
|
+
tagMatch.index,
|
|
267
|
+
tagMatch.index + tagMatch[0].length,
|
|
268
|
+
];
|
|
269
|
+
doc.tags.push({
|
|
270
|
+
content: parts.tag,
|
|
271
|
+
...matchIndexToRange(line.start, tagIndices),
|
|
272
|
+
});
|
|
273
|
+
// Based on the tag type, update the doc
|
|
274
|
+
const impliesFunction = parts.function ||
|
|
275
|
+
parts.param ||
|
|
276
|
+
parts.returns ||
|
|
277
|
+
parts.pure ||
|
|
278
|
+
parts.template;
|
|
279
|
+
if (impliesFunction) {
|
|
280
|
+
doc.kind = 'function';
|
|
281
|
+
}
|
|
282
|
+
const matchIndices = [
|
|
283
|
+
match.index,
|
|
284
|
+
match.index + match[0].length,
|
|
285
|
+
];
|
|
286
|
+
const entireMatchRange = matchIndexToRange(line.start, matchIndices);
|
|
287
|
+
// If this uses an @description tag, then apply that description
|
|
288
|
+
// to the root doc.
|
|
289
|
+
if (parts.description) {
|
|
290
|
+
doc.description = appendDescription(doc.description, parts.info);
|
|
291
|
+
}
|
|
292
|
+
// If it's an unfamiliar tag, just skip it
|
|
293
|
+
else if (parts.unknown) {
|
|
294
|
+
// Unset the describe target
|
|
295
|
+
describing = null;
|
|
296
|
+
}
|
|
297
|
+
// Handle params, templates, and variables
|
|
298
|
+
else if (parts.param ||
|
|
299
|
+
parts.template ||
|
|
300
|
+
parts.localvar ||
|
|
301
|
+
parts.globalvar ||
|
|
302
|
+
parts.instancevar) {
|
|
303
|
+
// Until VSCode ships Node 18, and therefore has group
|
|
304
|
+
// indices, we'll have to get positions with a simple search
|
|
305
|
+
// per group.
|
|
306
|
+
const kind = parts.param
|
|
307
|
+
? 'param'
|
|
308
|
+
: parts.template
|
|
309
|
+
? 'template'
|
|
310
|
+
: parts.localvar
|
|
311
|
+
? 'localvar'
|
|
312
|
+
: parts.globalvar
|
|
313
|
+
? 'globalvar'
|
|
314
|
+
: 'instancevar';
|
|
315
|
+
const typeString = substringRange(line.content, parts.typeUnion, line.start);
|
|
316
|
+
addTypeRanges(typeString);
|
|
317
|
+
const entity = {
|
|
318
|
+
kind,
|
|
319
|
+
name: substringRange(line.content, parts.name || parts.optionalName, line.start),
|
|
320
|
+
optional: !!parts.optionalName,
|
|
321
|
+
type: typeString,
|
|
322
|
+
description: parts.info || '',
|
|
323
|
+
...entireMatchRange,
|
|
324
|
+
};
|
|
325
|
+
if (kind === 'param') {
|
|
326
|
+
doc.params = doc.params || [];
|
|
327
|
+
doc.params.push(entity);
|
|
328
|
+
}
|
|
329
|
+
else if (kind === 'template') {
|
|
330
|
+
doc.templates = doc.templates || [];
|
|
331
|
+
doc.templates.push(entity);
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
doc.kind = kind;
|
|
335
|
+
doc.type = entity.type;
|
|
336
|
+
doc.name = entity.name;
|
|
337
|
+
doc.description = entity.description;
|
|
338
|
+
}
|
|
339
|
+
// Update the current describing object in case the next line is a description
|
|
340
|
+
describing = entity;
|
|
341
|
+
}
|
|
342
|
+
// Handle returns
|
|
343
|
+
else if (parts.returns) {
|
|
344
|
+
if (doc.returns) {
|
|
345
|
+
// Then we don't want to overwrite.
|
|
346
|
+
break;
|
|
347
|
+
}
|
|
348
|
+
const typeString = substringRange(line.content, parts.typeUnion, line.start);
|
|
349
|
+
addTypeRanges(typeString);
|
|
350
|
+
const returns = {
|
|
351
|
+
kind: 'returns',
|
|
352
|
+
type: typeString,
|
|
353
|
+
description: parts.info || '',
|
|
354
|
+
...entireMatchRange,
|
|
355
|
+
};
|
|
356
|
+
doc.returns = returns;
|
|
357
|
+
// Update the current describing object in case the next line is a description
|
|
358
|
+
describing = returns;
|
|
359
|
+
}
|
|
360
|
+
// Handle Self
|
|
361
|
+
else if (parts.self) {
|
|
362
|
+
doc.self = substringRange(line.content, parts.type, line.start);
|
|
363
|
+
addTypeRanges(doc.self);
|
|
364
|
+
if (parts.extraBracket) {
|
|
365
|
+
doc.diagnostics.push({
|
|
366
|
+
message: '@self types should not be wrapped in brackets',
|
|
367
|
+
start: doc.self.start,
|
|
368
|
+
end: doc.self.end,
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
// Handle Type
|
|
373
|
+
else if (parts.type) {
|
|
374
|
+
doc.kind = 'type';
|
|
375
|
+
doc.type = substringRange(line.content, parts.typeUnion, line.start);
|
|
376
|
+
addTypeRanges(doc.type);
|
|
377
|
+
doc.description = appendDescription(doc.description, parts.info);
|
|
378
|
+
}
|
|
379
|
+
// Handle modifiers
|
|
380
|
+
else if (parts.deprecated) {
|
|
381
|
+
doc.deprecated = true;
|
|
382
|
+
}
|
|
383
|
+
else if (parts.ignore) {
|
|
384
|
+
doc.ignore = true;
|
|
385
|
+
}
|
|
386
|
+
else if (parts.mixin) {
|
|
387
|
+
doc.mixin = true;
|
|
388
|
+
}
|
|
389
|
+
break;
|
|
390
|
+
}
|
|
391
|
+
// If we haven't found a tag, then this is a description line
|
|
392
|
+
// Then this is a description-only line (or something invalid).
|
|
393
|
+
// Apply it to the current describing object.
|
|
394
|
+
if (!match && describing) {
|
|
395
|
+
const descriptionMatch = line.content.match(descriptionLine);
|
|
396
|
+
if (descriptionMatch) {
|
|
397
|
+
describing.description = appendDescription(describing.description, descriptionMatch.groups?.info);
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
if (doc.kind === 'description' && doc.self) {
|
|
402
|
+
// Then we don't know for sure what this context is for,
|
|
403
|
+
// but it's useful to call it a self doc.
|
|
404
|
+
doc.kind = 'self';
|
|
405
|
+
}
|
|
406
|
+
// Ensure that there are no redundantly-named params, since that
|
|
407
|
+
// is both not allowed and likely to cause weird problems later.
|
|
408
|
+
// The safest thing to do if we see a duplicate is to skip it and all
|
|
409
|
+
// subsequent params.
|
|
410
|
+
const paramNames = new Set();
|
|
411
|
+
for (let i = 0; i < (doc.params?.length || 0); i++) {
|
|
412
|
+
const param = doc.params[i];
|
|
413
|
+
if (paramNames.has(param.name.content)) {
|
|
414
|
+
doc.diagnostics.push({
|
|
415
|
+
message: `Duplicate param name: ${param.name.content}`,
|
|
416
|
+
start: param.name.start,
|
|
417
|
+
end: param.name.end,
|
|
418
|
+
});
|
|
419
|
+
// Add diagnostics for all subsequent params
|
|
420
|
+
for (let j = i + 1; j < doc.params.length; j++) {
|
|
421
|
+
const laterParam = doc.params[j];
|
|
422
|
+
doc.diagnostics.push({
|
|
423
|
+
message: `Skipping due to previous duplicate param`,
|
|
424
|
+
start: laterParam.name.start,
|
|
425
|
+
end: laterParam.name.end,
|
|
426
|
+
});
|
|
427
|
+
}
|
|
428
|
+
doc.params.splice(i);
|
|
429
|
+
break;
|
|
430
|
+
}
|
|
431
|
+
paramNames.add(param.name.content);
|
|
432
|
+
}
|
|
433
|
+
return doc;
|
|
434
|
+
}
|
|
435
|
+
function substringRange(string, substring, start) {
|
|
436
|
+
if (!substring) {
|
|
437
|
+
return undefined;
|
|
438
|
+
}
|
|
439
|
+
start = { ...start };
|
|
440
|
+
const index = string.indexOf(substring);
|
|
441
|
+
if (index < 0) {
|
|
442
|
+
return undefined;
|
|
443
|
+
}
|
|
444
|
+
start.column += index;
|
|
445
|
+
start.offset += index;
|
|
446
|
+
return {
|
|
447
|
+
start,
|
|
448
|
+
end: {
|
|
449
|
+
column: start.column + substring.length - 1,
|
|
450
|
+
line: start.line,
|
|
451
|
+
offset: start.offset + substring.length - 1,
|
|
452
|
+
},
|
|
453
|
+
content: substring,
|
|
454
|
+
};
|
|
455
|
+
}
|
|
456
|
+
function matchIndexToRange(startPosition, index) {
|
|
457
|
+
// Note that the IRange uses column and line indexes that start at 1, while the offset starts at 0.
|
|
458
|
+
const range = {
|
|
459
|
+
start: { ...startPosition },
|
|
460
|
+
end: { ...startPosition },
|
|
461
|
+
};
|
|
462
|
+
range.start.column += index?.[0] || 0;
|
|
463
|
+
range.start.offset += index?.[0] || 0;
|
|
464
|
+
range.end.column += index?.[1] || 0;
|
|
465
|
+
range.end.offset += index?.[1] || 0;
|
|
466
|
+
return range;
|
|
467
|
+
}
|
|
468
|
+
//# sourceMappingURL=jsdoc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsdoc.js","sourceRoot":"","sources":["../src/jsdoc.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsdoc.test.d.ts","sourceRoot":"","sources":["../src/jsdoc.test.ts"],"names":[],"mappings":""}
|