UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

49 lines (48 loc) 2.26 kB
export interface SearchReplaceResult { content: string; applied: boolean; matchLevel: 'exact' | 'trimEnd' | 'indentNormalize' | 'none'; } /** * 通用「搜索-替换」工具 * * 适用场景:AI Agent / Code Mod 需要根据"搜索-替换对"对源文件进行原地修改的场景。 * * 提供两个函数: * - cleanLineNumberPrefix:清理 AI 输出 search/replace 块时常带的行号前缀(如 "12| " "12 | ") * - applySearchReplace:在源代码中查找 search 并替换为 replace,按 "精确 → 行级 → 子串" 三级策略匹配 */ /** * 清理 AI 输出 search/replace 块时常带的行号前缀 * * AI 在生成搜索字符串时,有时会无意把行号也带上,导致与源文件无法精确匹配。 * 本函数支持 5 种常见格式: * - "12| code" → "code" * - "12 | code" → "code" * - "12 code" → "code" (多空格分隔,仅当首行匹配且行号递增时才认为是行号) * - "12: code" → "code" * - "12. code""code" * * 为避免误删(如某些 markdown / 注释开头是数字),仅当: * - 首行能匹配到行号格式 * - 后续行行号严格递增(差值为 1) * 时才视为带行号前缀,全部清理。 * * @param text 原始字符串(来自 AI 输出的 search/replace 块) * @returns 清理后的字符串;不像行号前缀时原样返回 */ export declare function cleanLineNumberPrefix(text: string): string; /** * 在源代码中查找 search 并替换为 replace,按 3 级策略匹配 * * 策略: * 1. 精确匹配:原样查找 search * 2. 行级匹配:去除每行首尾空白后逐行对比(应对 AI 输出与源文件缩进不一致) * 3. 子串匹配:查找首行 trim 后的子串位置,从该位置开始截取与 search 等长的范围替换 * * @param source 源代码字符串 * @param search 要查找的字符串(可能被 AI 带了行号前缀,函数会自动清理) * @param replace 替换为的新字符串(同上,自动清理行号前缀) * @returns 替换后的字符串;查找失败返回 null */ export declare function applySearchReplace(fileContent: string, rawSearch: string, rawReplace: string): SearchReplaceResult;