Skip to content

Commit 7c8cec4

Browse files
committed
Refactor cleanup_api_response to use indexOf and lastIndexOf for robust extraction of single markdown code blocks when surrounded by text, replacing the unreliable regex approach
1 parent c41f72f commit 7c8cec4

37 files changed

Lines changed: 1654 additions & 95 deletions

File tree

‎packages/vscode/src/commands/apply-chat-response-command/utils/clipboard-parser/clipboard-parser.spec.ts‎

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,12 @@ describe('clipboard-parser', () => {
2222

2323
expect(result).toHaveLength(2)
2424
expect(result[0]).toMatchObject({
25+
type: 'file',
2526
file_path: 'src/index.ts',
2627
content: load_test_case_file(test_case, '1-file.txt')
2728
})
2829
expect(result[1]).toMatchObject({
30+
type: 'file',
2931
file_path: 'src/utils.py',
3032
content: load_test_case_file(test_case, '2-file.txt')
3133
})
@@ -41,6 +43,7 @@ describe('clipboard-parser', () => {
4143

4244
expect(result).toHaveLength(1)
4345
expect(result[0]).toMatchObject({
46+
type: 'file',
4447
file_path: 'src/hello.ts',
4548
content: load_test_case_file(test_case, '1-file.txt')
4649
})
@@ -56,6 +59,7 @@ describe('clipboard-parser', () => {
5659

5760
expect(result).toHaveLength(1)
5861
expect(result[0]).toMatchObject({
62+
type: 'file',
5963
file_path: 'src/index.ts',
6064
content: load_test_case_file(test_case, '1-file.txt')
6165
})
@@ -71,6 +75,7 @@ describe('clipboard-parser', () => {
7175

7276
expect(result).toHaveLength(1)
7377
expect(result[0]).toMatchObject({
78+
type: 'file',
7479
file_path: 'src/index.ts',
7580
content: load_test_case_file(test_case, '1-file.txt')
7681
})
@@ -86,6 +91,7 @@ describe('clipboard-parser', () => {
8691

8792
expect(result).toHaveLength(1)
8893
expect(result[0]).toMatchObject({
94+
type: 'file',
8995
file_path: 'src/index.ts',
9096
content: load_test_case_file(test_case, '1-file.txt')
9197
})
@@ -101,6 +107,7 @@ describe('clipboard-parser', () => {
101107

102108
expect(result).toHaveLength(1)
103109
expect(result[0]).toMatchObject({
110+
type: 'file',
104111
file_path: 'src/index.ts',
105112
content: load_test_case_file(test_case, '1-file.txt')
106113
})
@@ -116,6 +123,7 @@ describe('clipboard-parser', () => {
116123

117124
expect(result).toHaveLength(1)
118125
expect(result[0]).toMatchObject({
126+
type: 'file',
119127
file_path: 'src/index.ts',
120128
content: load_test_case_file(test_case, '1-file.txt')
121129
})
@@ -131,6 +139,7 @@ describe('clipboard-parser', () => {
131139

132140
expect(result).toHaveLength(1)
133141
expect(result[0]).toMatchObject({
142+
type: 'file',
134143
file_path: 'src/index.ts',
135144
content: load_test_case_file(test_case, '1-file.txt')
136145
})
@@ -146,6 +155,7 @@ describe('clipboard-parser', () => {
146155

147156
expect(result).toHaveLength(1)
148157
expect(result[0]).toMatchObject({
158+
type: 'file',
149159
file_path: 'src/index.ts',
150160
content: load_test_case_file(test_case, '1-file.txt')
151161
})
@@ -161,6 +171,7 @@ describe('clipboard-parser', () => {
161171

162172
expect(result).toHaveLength(1)
163173
expect(result[0]).toMatchObject({
174+
type: 'file',
164175
file_path: 'README.md',
165176
content: load_test_case_file(test_case, '1-file.txt')
166177
})
@@ -176,10 +187,12 @@ describe('clipboard-parser', () => {
176187

177188
expect(result).toHaveLength(2)
178189
expect(result[0]).toMatchObject({
190+
type: 'file',
179191
file_path: 'src/hello-world.html',
180192
content: load_test_case_file(test_case, '1-file.txt')
181193
})
182194
expect(result[1]).toMatchObject({
195+
type: 'file',
183196
file_path: 'src/lorem.css',
184197
content: load_test_case_file(test_case, '2-file.txt')
185198
})
@@ -195,6 +208,7 @@ describe('clipboard-parser', () => {
195208

196209
expect(result).toHaveLength(1)
197210
expect(result[0]).toMatchObject({
211+
type: 'file',
198212
file_path: 'src/index.ts',
199213
workspace_name: 'frontend',
200214
content: load_test_case_file(test_case, '1-file.txt')
@@ -210,7 +224,10 @@ describe('clipboard-parser', () => {
210224
})
211225

212226
expect(result).toHaveLength(1)
213-
expect(result[0]).toHaveProperty('file_path', 'frontend/src/index.ts')
227+
expect(result[0]).toMatchObject({
228+
type: 'file',
229+
file_path: 'frontend/src/index.ts'
230+
})
214231
})
215232

216233
it('merges content when the same file path appears in multiple code blocks', () => {
@@ -223,6 +240,7 @@ describe('clipboard-parser', () => {
223240

224241
expect(result).toHaveLength(1)
225242
expect(result[0]).toMatchObject({
243+
type: 'file',
226244
file_path: 'src/index.ts',
227245
content: load_test_case_file(test_case, '1-file.txt')
228246
})
@@ -238,10 +256,12 @@ describe('clipboard-parser', () => {
238256

239257
expect(result).toHaveLength(2)
240258
expect(result[0]).toMatchObject({
259+
type: 'file',
241260
file_path: 'src/index.ts',
242261
content: load_test_case_file(test_case, '1-file.txt')
243262
})
244263
expect(result[1]).toMatchObject({
264+
type: 'file',
245265
file_path: 'src/utils.py',
246266
content: load_test_case_file(test_case, '2-file.txt')
247267
})
@@ -257,10 +277,12 @@ describe('clipboard-parser', () => {
257277

258278
expect(result).toHaveLength(2)
259279
expect(result[0]).toMatchObject({
280+
type: 'file',
260281
file_path: 'src/index.ts',
261282
content: load_test_case_file(test_case, '1-file.txt')
262283
})
263284
expect(result[1]).toMatchObject({
285+
type: 'file',
264286
file_path: 'src/utils.py',
265287
content: load_test_case_file(test_case, '2-file.txt')
266288
})
@@ -276,6 +298,7 @@ describe('clipboard-parser', () => {
276298

277299
expect(result).toHaveLength(1)
278300
expect(result[0]).toMatchObject({
301+
type: 'file',
279302
file_path: 'src/utils.py',
280303
content: load_test_case_file(test_case, '1-file.txt')
281304
})
@@ -291,6 +314,7 @@ describe('clipboard-parser', () => {
291314

292315
expect(result).toHaveLength(1)
293316
expect(result[0]).toMatchObject({
317+
type: 'file',
294318
file_path: 'src/index.js',
295319
content: load_test_case_file(test_case, '1-file.txt')
296320
})
@@ -306,6 +330,7 @@ describe('clipboard-parser', () => {
306330

307331
expect(result).toHaveLength(1)
308332
expect(result[0]).toMatchObject({
333+
type: 'file',
309334
file_path: 'src/index.js',
310335
content: load_test_case_file(test_case, '1-file.txt')
311336
})
@@ -321,6 +346,7 @@ describe('clipboard-parser', () => {
321346

322347
expect(result).toHaveLength(1)
323348
expect(result[0]).toMatchObject({
349+
type: 'file',
324350
file_path: 'src/test.md',
325351
content: load_test_case_file(test_case, '1-file.txt')
326352
})
@@ -336,6 +362,7 @@ describe('clipboard-parser', () => {
336362

337363
expect(result).toHaveLength(1)
338364
expect(result[0]).toMatchObject({
365+
type: 'file',
339366
file_path: 'src/lorem.ts',
340367
content: load_test_case_file(test_case, '1-file.txt')
341368
})
@@ -351,6 +378,7 @@ describe('clipboard-parser', () => {
351378

352379
expect(result).toHaveLength(1)
353380
expect(result[0]).toMatchObject({
381+
type: 'file',
354382
file_path: 'src/main.js',
355383
content: load_test_case_file(test_case, '1-file.txt')
356384
})
@@ -366,10 +394,12 @@ describe('clipboard-parser', () => {
366394

367395
expect(result).toHaveLength(2)
368396
expect(result[0]).toMatchObject({
397+
type: 'file',
369398
file_path: 'src/lorem.ts',
370399
content: load_test_case_file(test_case, '1-file.txt')
371400
})
372401
expect(result[1]).toMatchObject({
402+
type: 'file',
373403
file_path: 'src/ipsum.ts',
374404
content: load_test_case_file(test_case, '2-file.txt')
375405
})
@@ -385,10 +415,12 @@ describe('clipboard-parser', () => {
385415

386416
expect(result).toHaveLength(2)
387417
expect(result[0]).toMatchObject({
418+
type: 'file',
388419
file_path: 'src/lorem.ts',
389420
content: load_test_case_file(test_case, '1-file.txt')
390421
})
391422
expect(result[1]).toMatchObject({
423+
type: 'file',
392424
file_path: 'src/ipsum.ts',
393425
content: load_test_case_file(test_case, '2-file.txt')
394426
})
@@ -404,6 +436,7 @@ describe('clipboard-parser', () => {
404436

405437
expect(result).toHaveLength(1)
406438
expect(result[0]).toMatchObject({
439+
type: 'file',
407440
file_path: 'src/index.php',
408441
content: load_test_case_file(test_case, '1-file.txt')
409442
})
@@ -419,6 +452,7 @@ describe('clipboard-parser', () => {
419452

420453
expect(result).toHaveLength(1)
421454
expect(result[0]).toMatchObject({
455+
type: 'file',
422456
file_path: 'src/index.ts',
423457
content: load_test_case_file(test_case, '1-file.txt')
424458
})
@@ -434,6 +468,7 @@ describe('clipboard-parser', () => {
434468

435469
expect(result).toHaveLength(1)
436470
expect(result[0]).toMatchObject({
471+
type: 'file',
437472
file_path: 'src/index.js',
438473
content: load_test_case_file(test_case, '1-file.txt')
439474
})
@@ -449,6 +484,7 @@ describe('clipboard-parser', () => {
449484

450485
expect(result).toHaveLength(1)
451486
expect(result[0]).toMatchObject({
487+
type: 'file',
452488
file_path: 'src/index.js',
453489
content: load_test_case_file(test_case, '1-file.txt')
454490
})
@@ -464,6 +500,7 @@ describe('clipboard-parser', () => {
464500

465501
expect(result).toHaveLength(1)
466502
expect(result[0]).toMatchObject({
503+
type: 'file',
467504
file_path: 'src/hello-world.ts',
468505
content: load_test_case_file(test_case, '1-file.txt')
469506
})
@@ -479,6 +516,7 @@ describe('clipboard-parser', () => {
479516

480517
expect(result).toHaveLength(1)
481518
expect(result[0]).toMatchObject({
519+
type: 'file',
482520
file_path: 'src/index.js',
483521
content: load_test_case_file(test_case, '1-file.txt')
484522
})
@@ -494,6 +532,7 @@ describe('clipboard-parser', () => {
494532

495533
expect(result).toHaveLength(1)
496534
expect(result[0]).toMatchObject({
535+
type: 'file',
497536
file_path: 'src/hello-world.ts',
498537
content: load_test_case_file(test_case, '1-file.txt')
499538
})
@@ -513,6 +552,7 @@ describe('clipboard-parser', () => {
513552
content: load_test_case_file(test_case, '1-text.txt')
514553
})
515554
expect(result[1]).toMatchObject({
555+
type: 'file',
516556
file_path: 'src/hello-world.ts',
517557
content: load_test_case_file(test_case, '2-file.txt')
518558
})
@@ -530,6 +570,7 @@ describe('clipboard-parser', () => {
530570

531571
expect(result).not.toBeNull()
532572
if (result) {
573+
expect(result.type).toBe('file')
533574
expect(result.file_path).toBe('src/index.ts')
534575
expect(result.content).toBe(
535576
load_test_case_file(test_case, '1-file.txt')
@@ -550,6 +591,7 @@ describe('clipboard-parser', () => {
550591

551592
expect(result).not.toBeNull()
552593
if (result) {
594+
expect(result.type).toBe('file')
553595
expect(result.file_path).toBe('src/index.ts')
554596
expect(result.content).toBe(
555597
load_test_case_file(test_case, '1-file.txt')

‎packages/vscode/src/commands/apply-chat-response-command/utils/clipboard-parser/parsers/multiple-files-parser.ts‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
// packages/vscode/src/commands/apply-chat-response-command/utils/clipboard-parser/parsers/multiple-files-parser.ts
21
import { extract_path_from_line_of_code } from '@shared/utils/extract-path-from-line-of-code'
32
import {
43
FileItem,

0 commit comments

Comments
 (0)