skir 0.0.5 → 0.0.7
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/dist/casing.test.js +1 -1
- package/dist/casing.test.js.map +1 -1
- package/dist/command_line_parser.d.ts.map +1 -1
- package/dist/command_line_parser.js +76 -36
- package/dist/command_line_parser.js.map +1 -1
- package/dist/command_line_parser.test.js +119 -31
- package/dist/command_line_parser.test.js.map +1 -1
- package/dist/compiler.js +59 -84
- package/dist/compiler.js.map +1 -1
- package/dist/config.d.ts +2 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +6 -13
- package/dist/config.js.map +1 -1
- package/dist/config_parser.d.ts +31 -0
- package/dist/config_parser.d.ts.map +1 -0
- package/dist/config_parser.js +146 -0
- package/dist/config_parser.js.map +1 -0
- package/dist/config_parser.test.d.ts +2 -0
- package/dist/config_parser.test.d.ts.map +1 -0
- package/dist/config_parser.test.js +419 -0
- package/dist/config_parser.test.js.map +1 -0
- package/dist/doc_comment_parser.d.ts +3 -2
- package/dist/doc_comment_parser.d.ts.map +1 -1
- package/dist/doc_comment_parser.js +56 -49
- package/dist/doc_comment_parser.js.map +1 -1
- package/dist/doc_comment_parser.test.js +86 -154
- package/dist/doc_comment_parser.test.js.map +1 -1
- package/dist/error_renderer.d.ts +5 -0
- package/dist/error_renderer.d.ts.map +1 -1
- package/dist/error_renderer.js +27 -3
- package/dist/error_renderer.js.map +1 -1
- package/dist/exit_error.d.ts +8 -0
- package/dist/exit_error.d.ts.map +1 -0
- package/dist/exit_error.js +8 -0
- package/dist/exit_error.js.map +1 -0
- package/dist/io.d.ts +2 -0
- package/dist/io.d.ts.map +1 -1
- package/dist/io.js +22 -3
- package/dist/io.js.map +1 -1
- package/dist/module_collector.d.ts.map +1 -1
- package/dist/module_collector.js +12 -7
- package/dist/module_collector.js.map +1 -1
- package/dist/module_set.d.ts.map +1 -1
- package/dist/module_set.js +33 -16
- package/dist/module_set.js.map +1 -1
- package/dist/module_set.test.js +318 -173
- package/dist/module_set.test.js.map +1 -1
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +16 -16
- package/dist/parser.js.map +1 -1
- package/dist/project_initializer.d.ts.map +1 -1
- package/dist/project_initializer.js +97 -15
- package/dist/project_initializer.js.map +1 -1
- package/dist/tokenizer.d.ts +7 -1
- package/dist/tokenizer.d.ts.map +1 -1
- package/dist/tokenizer.js +12 -0
- package/dist/tokenizer.js.map +1 -1
- package/package.json +14 -9
- package/src/command_line_parser.ts +95 -40
- package/src/compiler.ts +74 -86
- package/src/config.ts +8 -15
- package/src/config_parser.ts +198 -0
- package/src/doc_comment_parser.ts +65 -49
- package/src/error_renderer.ts +45 -3
- package/src/exit_error.ts +6 -0
- package/src/io.ts +22 -3
- package/src/module_collector.ts +21 -7
- package/src/module_set.ts +35 -19
- package/src/parser.ts +22 -16
- package/src/project_initializer.ts +97 -15
- package/src/tokenizer.ts +20 -2
- package/dist/language_server.d.ts +0 -15
- package/dist/language_server.d.ts.map +0 -1
- package/dist/language_server.js +0 -248
- package/dist/language_server.js.map +0 -1
- package/src/language_server.ts +0 -301
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
import { expect } from "buckwheat";
|
|
2
|
+
import { describe, it } from "mocha";
|
|
3
|
+
import { parseSkirConfig } from "./config_parser.js";
|
|
4
|
+
describe("config_parser", () => {
|
|
5
|
+
describe("parseConfig", () => {
|
|
6
|
+
it("should parse valid config with single generator", async () => {
|
|
7
|
+
const yamlCode = `
|
|
8
|
+
generators:
|
|
9
|
+
- mod: "@example/generator"
|
|
10
|
+
outDir: ./skirout
|
|
11
|
+
config:
|
|
12
|
+
foo: bar
|
|
13
|
+
srcDir: src
|
|
14
|
+
`;
|
|
15
|
+
const result = await parseSkirConfig(yamlCode);
|
|
16
|
+
expect(result).toMatch({
|
|
17
|
+
skirConfig: {
|
|
18
|
+
generators: [
|
|
19
|
+
{
|
|
20
|
+
mod: "@example/generator",
|
|
21
|
+
outDir: "./skirout",
|
|
22
|
+
config: { foo: "bar" },
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
srcDir: "src",
|
|
26
|
+
},
|
|
27
|
+
errors: [],
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
it("should parse valid config with multiple generators", async () => {
|
|
31
|
+
const yamlCode = `
|
|
32
|
+
generators:
|
|
33
|
+
- mod: "@example/gen1"
|
|
34
|
+
outDir: ./skirout
|
|
35
|
+
config: {}
|
|
36
|
+
- mod: "@example/gen2"
|
|
37
|
+
config:
|
|
38
|
+
setting: value
|
|
39
|
+
outDir: custom/skirout
|
|
40
|
+
`;
|
|
41
|
+
const result = await parseSkirConfig(yamlCode);
|
|
42
|
+
expect(result).toMatch({
|
|
43
|
+
skirConfig: {
|
|
44
|
+
generators: [
|
|
45
|
+
{ mod: "@example/gen1", outDir: "./skirout", config: {} },
|
|
46
|
+
{
|
|
47
|
+
mod: "@example/gen2",
|
|
48
|
+
config: { setting: "value" },
|
|
49
|
+
outDir: "custom/skirout",
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
},
|
|
53
|
+
errors: [],
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
it("should parse config with outDir array", async () => {
|
|
57
|
+
const yamlCode = `
|
|
58
|
+
generators:
|
|
59
|
+
- mod: "@example/generator"
|
|
60
|
+
config: {}
|
|
61
|
+
outDir:
|
|
62
|
+
- path/to/skirout
|
|
63
|
+
- another/skirout
|
|
64
|
+
`;
|
|
65
|
+
const result = await parseSkirConfig(yamlCode);
|
|
66
|
+
expect(result).toMatch({
|
|
67
|
+
skirConfig: {
|
|
68
|
+
generators: [
|
|
69
|
+
{
|
|
70
|
+
mod: "@example/generator",
|
|
71
|
+
config: {},
|
|
72
|
+
outDir: ["path/to/skirout", "another/skirout"],
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
},
|
|
76
|
+
errors: [],
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
it("should parse config without optional srcDir", async () => {
|
|
80
|
+
const yamlCode = `
|
|
81
|
+
generators:
|
|
82
|
+
- mod: "@example/generator"
|
|
83
|
+
outDir: ./skirout
|
|
84
|
+
config: {}
|
|
85
|
+
`;
|
|
86
|
+
const result = await parseSkirConfig(yamlCode);
|
|
87
|
+
expect(result).toMatch({
|
|
88
|
+
skirConfig: {
|
|
89
|
+
generators: [
|
|
90
|
+
{ mod: "@example/generator", outDir: "./skirout", config: {} },
|
|
91
|
+
],
|
|
92
|
+
},
|
|
93
|
+
errors: [],
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
it("should return error for invalid YAML syntax", async () => {
|
|
97
|
+
const yamlCode = `
|
|
98
|
+
generators:
|
|
99
|
+
- mod: "@example/generator"
|
|
100
|
+
outDir: ./skirout
|
|
101
|
+
config:
|
|
102
|
+
invalid: [unclosed array
|
|
103
|
+
`;
|
|
104
|
+
const result = await parseSkirConfig(yamlCode);
|
|
105
|
+
expect(result).toMatch({
|
|
106
|
+
skirConfig: undefined,
|
|
107
|
+
errors: [{}], // At least one error
|
|
108
|
+
maybeForgotToEditAfterInit: undefined,
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
it("should return error for invalid YAML syntax", async () => {
|
|
112
|
+
const yamlCode = `
|
|
113
|
+
generators:
|
|
114
|
+
- mod: "@example/generator"
|
|
115
|
+
outDir: ./skirout
|
|
116
|
+
config:
|
|
117
|
+
invalid: [unclosed array
|
|
118
|
+
`;
|
|
119
|
+
const result = await parseSkirConfig(yamlCode);
|
|
120
|
+
expect(result).toMatch({
|
|
121
|
+
skirConfig: undefined,
|
|
122
|
+
errors: [{}], // At least one error
|
|
123
|
+
maybeForgotToEditAfterInit: undefined,
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
it("user maybe forgot to edit after init", async () => {
|
|
127
|
+
const yamlCode = `generators:
|
|
128
|
+
|
|
129
|
+
`;
|
|
130
|
+
const result = await parseSkirConfig(yamlCode);
|
|
131
|
+
expect(result).toMatch({
|
|
132
|
+
skirConfig: undefined,
|
|
133
|
+
errors: [
|
|
134
|
+
{
|
|
135
|
+
range: {
|
|
136
|
+
start: {
|
|
137
|
+
lineNumber: 1,
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
],
|
|
142
|
+
maybeForgotToEditAfterInit: true,
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
it("should return error for missing required field", async () => {
|
|
146
|
+
const yamlCode = `
|
|
147
|
+
generators:
|
|
148
|
+
- config: {}
|
|
149
|
+
`;
|
|
150
|
+
const result = await parseSkirConfig(yamlCode);
|
|
151
|
+
expect(result).toMatch({
|
|
152
|
+
skirConfig: undefined,
|
|
153
|
+
errors: [
|
|
154
|
+
{
|
|
155
|
+
message: /^Missing property 'mod': /,
|
|
156
|
+
range: {
|
|
157
|
+
start: {
|
|
158
|
+
lineNumber: 3,
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
message: /^Missing property 'outDir': /,
|
|
164
|
+
range: {
|
|
165
|
+
start: {
|
|
166
|
+
lineNumber: 3,
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
},
|
|
170
|
+
],
|
|
171
|
+
maybeForgotToEditAfterInit: false,
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
it("should return error for wrong type", async () => {
|
|
175
|
+
const yamlCode = `
|
|
176
|
+
generators: "not an array"
|
|
177
|
+
`;
|
|
178
|
+
const result = await parseSkirConfig(yamlCode);
|
|
179
|
+
expect(result).toMatch({
|
|
180
|
+
skirConfig: undefined,
|
|
181
|
+
errors: [{}], // At least one error
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
it("should return error with line/column for schema validation error", async () => {
|
|
185
|
+
const yamlCode = `
|
|
186
|
+
generators:
|
|
187
|
+
- mod: "@example/generator"
|
|
188
|
+
config: {}
|
|
189
|
+
outDir: invalid/path
|
|
190
|
+
`;
|
|
191
|
+
const result = await parseSkirConfig(yamlCode);
|
|
192
|
+
expect(result).toMatch({
|
|
193
|
+
skirConfig: undefined,
|
|
194
|
+
errors: [
|
|
195
|
+
{
|
|
196
|
+
message: 'Invalid string: must end with "/skirout"',
|
|
197
|
+
range: {
|
|
198
|
+
start: {
|
|
199
|
+
lineNumber: 5,
|
|
200
|
+
colNumber: 13,
|
|
201
|
+
offset: 70,
|
|
202
|
+
},
|
|
203
|
+
end: {
|
|
204
|
+
lineNumber: 5,
|
|
205
|
+
colNumber: 25,
|
|
206
|
+
offset: 82,
|
|
207
|
+
},
|
|
208
|
+
},
|
|
209
|
+
},
|
|
210
|
+
],
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
it("should return error for extra fields in strict schema", async () => {
|
|
214
|
+
const yamlCode = `
|
|
215
|
+
generators:
|
|
216
|
+
- mod: "@example/generator"
|
|
217
|
+
outDir: ./skirout
|
|
218
|
+
config: {}
|
|
219
|
+
extraField: value
|
|
220
|
+
`;
|
|
221
|
+
const result = await parseSkirConfig(yamlCode);
|
|
222
|
+
expect(result).toMatch({
|
|
223
|
+
skirConfig: undefined,
|
|
224
|
+
errors: [
|
|
225
|
+
{
|
|
226
|
+
message: /unrecognized/i,
|
|
227
|
+
},
|
|
228
|
+
],
|
|
229
|
+
});
|
|
230
|
+
});
|
|
231
|
+
it("should return error for invalid outDir pattern", async () => {
|
|
232
|
+
const yamlCode = `
|
|
233
|
+
generators:
|
|
234
|
+
- mod: "@example/generator"
|
|
235
|
+
config: {}
|
|
236
|
+
outDir: does/not/end/properly
|
|
237
|
+
`;
|
|
238
|
+
const result = await parseSkirConfig(yamlCode);
|
|
239
|
+
expect(result).toMatch({
|
|
240
|
+
skirConfig: undefined,
|
|
241
|
+
errors: [{}], // At least one error
|
|
242
|
+
});
|
|
243
|
+
});
|
|
244
|
+
it("should return error for invalid outDir array element", async () => {
|
|
245
|
+
const yamlCode = `
|
|
246
|
+
generators:
|
|
247
|
+
- mod: "@example/generator"
|
|
248
|
+
config: {}
|
|
249
|
+
outDir:
|
|
250
|
+
- valid/skirout
|
|
251
|
+
- invalid/path
|
|
252
|
+
`;
|
|
253
|
+
const result = await parseSkirConfig(yamlCode);
|
|
254
|
+
expect(result).toMatch({
|
|
255
|
+
skirConfig: undefined,
|
|
256
|
+
errors: [{}], // At least one error
|
|
257
|
+
});
|
|
258
|
+
});
|
|
259
|
+
it("should parse config with empty generators array", async () => {
|
|
260
|
+
const yamlCode = `
|
|
261
|
+
generators: []
|
|
262
|
+
`;
|
|
263
|
+
const result = await parseSkirConfig(yamlCode);
|
|
264
|
+
expect(result).toMatch({
|
|
265
|
+
skirConfig: {
|
|
266
|
+
generators: [],
|
|
267
|
+
},
|
|
268
|
+
errors: [],
|
|
269
|
+
});
|
|
270
|
+
});
|
|
271
|
+
it("should handle empty YAML document", async () => {
|
|
272
|
+
const yamlCode = "";
|
|
273
|
+
const result = await parseSkirConfig(yamlCode);
|
|
274
|
+
// Empty YAML parses as null/undefined, which fails schema validation
|
|
275
|
+
expect(result).toMatch({
|
|
276
|
+
skirConfig: undefined,
|
|
277
|
+
errors: [{}], // At least one error
|
|
278
|
+
});
|
|
279
|
+
});
|
|
280
|
+
it("should handle YAML with comments", async () => {
|
|
281
|
+
const yamlCode = `
|
|
282
|
+
# This is a comment
|
|
283
|
+
generators:
|
|
284
|
+
# Generator 1
|
|
285
|
+
- mod: "@example/generator"
|
|
286
|
+
outDir: ./skirout
|
|
287
|
+
config: {}
|
|
288
|
+
# Source directory
|
|
289
|
+
srcDir: src
|
|
290
|
+
`;
|
|
291
|
+
const result = await parseSkirConfig(yamlCode);
|
|
292
|
+
expect(result).toMatch({
|
|
293
|
+
skirConfig: {
|
|
294
|
+
generators: [
|
|
295
|
+
{
|
|
296
|
+
mod: "@example/generator",
|
|
297
|
+
outDir: "./skirout",
|
|
298
|
+
config: {},
|
|
299
|
+
},
|
|
300
|
+
],
|
|
301
|
+
srcDir: "src",
|
|
302
|
+
},
|
|
303
|
+
errors: [],
|
|
304
|
+
});
|
|
305
|
+
});
|
|
306
|
+
it("should return multiple errors for multiple validation issues", async () => {
|
|
307
|
+
const yamlCode = `
|
|
308
|
+
generators:
|
|
309
|
+
- config: {}
|
|
310
|
+
- mod: "@example/gen"
|
|
311
|
+
extraField: invalid
|
|
312
|
+
`;
|
|
313
|
+
const result = await parseSkirConfig(yamlCode);
|
|
314
|
+
expect(result).toMatch({
|
|
315
|
+
skirConfig: undefined,
|
|
316
|
+
errors: [{}, {}, {}, {}], // At least four errors
|
|
317
|
+
});
|
|
318
|
+
});
|
|
319
|
+
it("should handle complex nested config objects", async () => {
|
|
320
|
+
const yamlCode = `
|
|
321
|
+
generators:
|
|
322
|
+
- mod: "@example/generator"
|
|
323
|
+
outDir: ./skirout
|
|
324
|
+
config:
|
|
325
|
+
nested:
|
|
326
|
+
deeply:
|
|
327
|
+
value: 123
|
|
328
|
+
array:
|
|
329
|
+
- item1
|
|
330
|
+
- item2
|
|
331
|
+
boolean: true
|
|
332
|
+
`;
|
|
333
|
+
const result = await parseSkirConfig(yamlCode);
|
|
334
|
+
expect(result).toMatch({
|
|
335
|
+
skirConfig: {
|
|
336
|
+
generators: [
|
|
337
|
+
{
|
|
338
|
+
mod: "@example/generator",
|
|
339
|
+
outDir: "./skirout",
|
|
340
|
+
config: {
|
|
341
|
+
nested: {
|
|
342
|
+
deeply: {
|
|
343
|
+
value: 123,
|
|
344
|
+
},
|
|
345
|
+
},
|
|
346
|
+
array: ["item1", "item2"],
|
|
347
|
+
boolean: true,
|
|
348
|
+
},
|
|
349
|
+
},
|
|
350
|
+
],
|
|
351
|
+
},
|
|
352
|
+
errors: [],
|
|
353
|
+
});
|
|
354
|
+
});
|
|
355
|
+
it("should validate outDir ends with skirout", async () => {
|
|
356
|
+
const yamlCode = `
|
|
357
|
+
generators:
|
|
358
|
+
- mod: "@example/generator"
|
|
359
|
+
config: {}
|
|
360
|
+
outDir: path/to/skirout
|
|
361
|
+
`;
|
|
362
|
+
const result = await parseSkirConfig(yamlCode);
|
|
363
|
+
expect(result).toMatch({
|
|
364
|
+
skirConfig: {
|
|
365
|
+
generators: [
|
|
366
|
+
{
|
|
367
|
+
mod: "@example/generator",
|
|
368
|
+
config: {},
|
|
369
|
+
outDir: "path/to/skirout",
|
|
370
|
+
},
|
|
371
|
+
],
|
|
372
|
+
},
|
|
373
|
+
errors: [],
|
|
374
|
+
});
|
|
375
|
+
});
|
|
376
|
+
it("should handle YAML with duplicate keys as warning/error", async () => {
|
|
377
|
+
const yamlCode = `
|
|
378
|
+
generators:
|
|
379
|
+
- mod: "@example/generator"
|
|
380
|
+
outDir: ./skirout
|
|
381
|
+
config: {}
|
|
382
|
+
mod: "@another/generator"
|
|
383
|
+
`;
|
|
384
|
+
const result = await parseSkirConfig(yamlCode);
|
|
385
|
+
// YAML library should detect duplicate keys
|
|
386
|
+
// The exact behavior depends on yaml library settings
|
|
387
|
+
if (result.errors.length > 0) {
|
|
388
|
+
expect(result.skirConfig).toMatch(undefined);
|
|
389
|
+
}
|
|
390
|
+
});
|
|
391
|
+
it("should do validation on generator's config if known", async () => {
|
|
392
|
+
const yamlCode = `
|
|
393
|
+
generators:
|
|
394
|
+
- mod: skir-typescript-gen
|
|
395
|
+
outDir: ./skirout
|
|
396
|
+
config:
|
|
397
|
+
importPathExtension: .jss
|
|
398
|
+
`;
|
|
399
|
+
const result = await parseSkirConfig(yamlCode);
|
|
400
|
+
expect(result).toMatch({
|
|
401
|
+
errors: [
|
|
402
|
+
{
|
|
403
|
+
range: {
|
|
404
|
+
start: {
|
|
405
|
+
lineNumber: 6,
|
|
406
|
+
colNumber: 28,
|
|
407
|
+
},
|
|
408
|
+
end: {
|
|
409
|
+
lineNumber: 6,
|
|
410
|
+
colNumber: 32,
|
|
411
|
+
},
|
|
412
|
+
},
|
|
413
|
+
},
|
|
414
|
+
],
|
|
415
|
+
});
|
|
416
|
+
});
|
|
417
|
+
});
|
|
418
|
+
});
|
|
419
|
+
//# sourceMappingURL=config_parser.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config_parser.test.js","sourceRoot":"","sources":["../src/config_parser.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import type { Doc, Result, Token } from "skir-internal";
|
|
2
|
-
export declare function
|
|
1
|
+
import type { Doc, MutableDoc, Result, Token } from "skir-internal";
|
|
2
|
+
export declare function parseDocComment(docComment: Token): Result<Doc>;
|
|
3
|
+
export declare function mergeDocs(docs: readonly Doc[]): MutableDoc;
|
|
3
4
|
//# sourceMappingURL=doc_comment_parser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doc_comment_parser.d.ts","sourceRoot":"","sources":["../src/doc_comment_parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,GAAG,
|
|
1
|
+
{"version":3,"file":"doc_comment_parser.d.ts","sourceRoot":"","sources":["../src/doc_comment_parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,GAAG,EAIH,UAAU,EAGV,MAAM,EAEN,KAAK,EACN,MAAM,eAAe,CAAC;AAEvB,wBAAgB,eAAe,CAAC,UAAU,EAAE,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAG9D;AAuOD,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,GAAG,UAAU,CAqB1D"}
|
|
@@ -1,22 +1,29 @@
|
|
|
1
1
|
import { assert } from "node:console";
|
|
2
|
-
export function
|
|
3
|
-
const parser = new
|
|
2
|
+
export function parseDocComment(docComment) {
|
|
3
|
+
const parser = new DocCommentParser(docComment);
|
|
4
4
|
return parser.parse();
|
|
5
5
|
}
|
|
6
|
-
class
|
|
7
|
-
constructor(
|
|
8
|
-
this.
|
|
6
|
+
class DocCommentParser {
|
|
7
|
+
constructor(docComment) {
|
|
8
|
+
this.docComment = docComment;
|
|
9
9
|
this.pieces = [];
|
|
10
10
|
this.errors = [];
|
|
11
11
|
this.currentText = "";
|
|
12
|
-
this.docCommentIndex = -1;
|
|
13
12
|
this.charIndex = -1;
|
|
14
|
-
|
|
13
|
+
const { text } = docComment;
|
|
14
|
+
if (text.startsWith("/// ")) {
|
|
15
|
+
this.content = text.slice(4);
|
|
16
|
+
}
|
|
17
|
+
else if (text.startsWith("///")) {
|
|
18
|
+
this.content = text.slice(3);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
throw new Error("Expected doc comment to start with ///");
|
|
22
|
+
}
|
|
23
|
+
this.charIndex = 0;
|
|
15
24
|
}
|
|
16
25
|
parse() {
|
|
17
|
-
|
|
18
|
-
this.parseCurrentDocComment();
|
|
19
|
-
}
|
|
26
|
+
this.parseDocComment();
|
|
20
27
|
// Add any remaining text
|
|
21
28
|
if (this.currentText.length > 0) {
|
|
22
29
|
this.pieces.push({ kind: "text", text: this.currentText });
|
|
@@ -40,7 +47,7 @@ class DocCommentsParser {
|
|
|
40
47
|
errors: this.errors,
|
|
41
48
|
};
|
|
42
49
|
}
|
|
43
|
-
|
|
50
|
+
parseDocComment() {
|
|
44
51
|
// Matches unescaped [ or ], OR escaped [[ or ]]
|
|
45
52
|
const specialCharRegex = /\[\[|\]\]|\[|\]/g;
|
|
46
53
|
while (this.charIndex < this.content.length) {
|
|
@@ -84,15 +91,12 @@ class DocCommentsParser {
|
|
|
84
91
|
this.charIndex++;
|
|
85
92
|
}
|
|
86
93
|
}
|
|
87
|
-
// Add newline between comment lines (except after the last line)
|
|
88
|
-
if (this.docCommentIndex < this.docComments.length - 1) {
|
|
89
|
-
this.currentText += "\n";
|
|
90
|
-
}
|
|
91
94
|
}
|
|
92
95
|
parseReference() {
|
|
93
96
|
const { content, docComment } = this;
|
|
94
97
|
const leftBracketCharIndex = this.charIndex;
|
|
95
|
-
const
|
|
98
|
+
const contentOffset = docComment.text.length - content.length;
|
|
99
|
+
const startPosition = docComment.position + contentOffset + leftBracketCharIndex;
|
|
96
100
|
const rightBracketCharIndex = content.indexOf("]", leftBracketCharIndex);
|
|
97
101
|
// End position: right after the closing bracket or at end of the line if
|
|
98
102
|
// not found.
|
|
@@ -119,7 +123,8 @@ class DocCommentsParser {
|
|
|
119
123
|
const tokens = [];
|
|
120
124
|
while (this.charIndex < endCharIndex) {
|
|
121
125
|
const char = content[this.charIndex];
|
|
122
|
-
const
|
|
126
|
+
const contentOffset = docComment.text.length - content.length;
|
|
127
|
+
const position = docComment.position + contentOffset + this.charIndex;
|
|
123
128
|
const makeToken = (text) => ({
|
|
124
129
|
text: text,
|
|
125
130
|
originalText: text,
|
|
@@ -147,7 +152,8 @@ class DocCommentsParser {
|
|
|
147
152
|
}
|
|
148
153
|
else {
|
|
149
154
|
// Invalid character in reference (including whitespace)
|
|
150
|
-
const
|
|
155
|
+
const contentOffset = docComment.text.length - content.length;
|
|
156
|
+
const column = this.docComment.colNumber + contentOffset + this.charIndex;
|
|
151
157
|
hasError = true;
|
|
152
158
|
this.errors.push({
|
|
153
159
|
token: referenceRange,
|
|
@@ -157,25 +163,28 @@ class DocCommentsParser {
|
|
|
157
163
|
this.charIndex = endCharIndex;
|
|
158
164
|
}
|
|
159
165
|
}
|
|
160
|
-
const
|
|
166
|
+
const nameParts = hasError ? [] : this.parseNameParts(tokens);
|
|
161
167
|
return {
|
|
162
168
|
kind: "reference",
|
|
163
|
-
|
|
169
|
+
nameParts: nameParts,
|
|
164
170
|
absolute: tokens[0]?.text === ".",
|
|
165
171
|
referee: undefined,
|
|
166
172
|
docComment: this.docComment,
|
|
167
173
|
referenceRange: referenceRange,
|
|
168
174
|
};
|
|
169
175
|
}
|
|
170
|
-
|
|
171
|
-
const
|
|
176
|
+
parseNameParts(tokens) {
|
|
177
|
+
const nameParts = [];
|
|
172
178
|
let expect = "identifier or '.'";
|
|
173
179
|
for (const token of tokens) {
|
|
174
180
|
let expected;
|
|
175
181
|
if (/^[a-zA-Z]/.test(token.text)) {
|
|
176
182
|
expected = expect === "identifier or '.'" || expect === "identifier";
|
|
177
183
|
expect = "'.' or ']'";
|
|
178
|
-
|
|
184
|
+
nameParts.push({
|
|
185
|
+
token: token,
|
|
186
|
+
declaration: undefined,
|
|
187
|
+
});
|
|
179
188
|
}
|
|
180
189
|
else if (token.text === ".") {
|
|
181
190
|
expected = expect === "identifier or '.'" || expect === "'.' or ']'";
|
|
@@ -193,39 +202,37 @@ class DocCommentsParser {
|
|
|
193
202
|
return [];
|
|
194
203
|
}
|
|
195
204
|
if (token.text === "]") {
|
|
196
|
-
return
|
|
205
|
+
return nameParts;
|
|
197
206
|
}
|
|
198
207
|
}
|
|
199
208
|
// An error has already been pushed to signify the unterminated reference.
|
|
200
209
|
return [];
|
|
201
210
|
}
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
/// The text of the current doc comment being parsed.
|
|
207
|
-
get content() {
|
|
208
|
-
return this.docComment.text;
|
|
211
|
+
}
|
|
212
|
+
export function mergeDocs(docs) {
|
|
213
|
+
if (docs.length <= 0) {
|
|
214
|
+
return EMPTY_DOC;
|
|
209
215
|
}
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
}
|
|
220
|
-
else {
|
|
221
|
-
throw new Error("Expected doc comment to start with ///");
|
|
222
|
-
}
|
|
223
|
-
this.charIndex = this.contentOffset;
|
|
224
|
-
return true;
|
|
225
|
-
}
|
|
226
|
-
else {
|
|
227
|
-
return false;
|
|
216
|
+
// Insert '\n' between each doc comment (== line)
|
|
217
|
+
const text = docs.map((d) => d.text).join("\n");
|
|
218
|
+
const pieces = [];
|
|
219
|
+
for (let i = 0; i < docs.length; ++i) {
|
|
220
|
+
const doc = docs[i];
|
|
221
|
+
if (i !== 0) {
|
|
222
|
+
pieces.push({
|
|
223
|
+
kind: "text",
|
|
224
|
+
text: "\n",
|
|
225
|
+
});
|
|
228
226
|
}
|
|
227
|
+
doc.pieces.forEach((p) => pieces.push(p));
|
|
229
228
|
}
|
|
229
|
+
return {
|
|
230
|
+
text: text,
|
|
231
|
+
pieces: pieces,
|
|
232
|
+
};
|
|
230
233
|
}
|
|
234
|
+
const EMPTY_DOC = {
|
|
235
|
+
text: "",
|
|
236
|
+
pieces: [],
|
|
237
|
+
};
|
|
231
238
|
//# sourceMappingURL=doc_comment_parser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doc_comment_parser.js","sourceRoot":"","sources":["../src/doc_comment_parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"doc_comment_parser.js","sourceRoot":"","sources":["../src/doc_comment_parser.ts"],"names":[],"mappings":"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"}
|