@@ -290,6 +290,40 @@ export class TCVB {
290290 }
291291 ) ;
292292
293+ // 新增:处理GLOBAL-REPLACE中缺失OLD_CONTENT的情况
294+ content = content . replace (
295+ / # # O P E R A T I O N : G L O B A L - R E P L A C E \n ( [ \s \S ] * ?) (? = \n # # N E W _ C O N T E N T | \n # # O P E R A T I O N : | \n # # F I L E : | \n # # E N D _ T C V B | $ ) / g,
296+ ( match , codeSection ) => {
297+ // 如果已经有OLD_CONTENT标记,不做处理
298+ if ( / # # O L D _ C O N T E N T / . test ( match ) || / # # O L D _ C O N T E N T / . test ( match ) ) {
299+ return match ;
300+ }
301+
302+ const trimmed = codeSection . trim ( ) ;
303+ // 如果OPERATION和NEW_CONTENT之间有非空内容,视为缺失OLD_CONTENT
304+ if ( trimmed ) {
305+ // 处理代码块包裹
306+ const hasStart = trimmed . startsWith ( '```' ) ;
307+ const hasEnd = trimmed . endsWith ( '```' ) ;
308+
309+ let fixedCode = codeSection . trimEnd ( ) ;
310+
311+ if ( ! hasStart && ! hasEnd ) {
312+ fixedCode = `## OLD_CONTENT\n\`\`\`\n${ fixedCode } \n\`\`\`` ;
313+ } else if ( hasStart && ! hasEnd ) {
314+ fixedCode = `## OLD_CONTENT\n${ fixedCode } \n\`\`\`` ;
315+ } else if ( ! hasStart && hasEnd ) {
316+ fixedCode = `## OLD_CONTENT\n\`\`\`\n${ fixedCode } ` ;
317+ } else {
318+ fixedCode = `## OLD_CONTENT\n${ fixedCode } ` ;
319+ }
320+
321+ return `## OPERATION:GLOBAL-REPLACE\n${ fixedCode } ` ;
322+ }
323+ return match ;
324+ }
325+ ) ;
326+
293327 // 规则4/10:修复代码块包裹问题(精确处理需要代码块的操作)
294328 content = content . replace (
295329 / ( # # (?: O L D _ C O N T E N T | N E W _ C O N T E N T | O P E R A T I O N : C R E A T E ) \n ) ( [ \s \S ] * ?) (? = \n # # | \n # # E N D _ T C V B | $ ) / gis,
@@ -349,7 +383,6 @@ export class TCVB {
349383
350384 return content ;
351385 }
352-
353386 private parse ( tcStrContent : string ) : void {
354387
355388 tcStrContent = normalizeAllLineEndings ( tcStrContent ) ;
0 commit comments