import { SourceMapBuilder, SourceMapData } from "./sourceMap"; import { SourceMapTextWriter, TextWriter } from "./textWriter"; /** 表示一个文本文档,用于多次修改并生成新文本内容和源映射(Source Map)*/ export declare class TextDocument { /** 获取文档的原始内容 */ readonly content: string; /** 获取文档的原始路径 */ readonly path?: string; /** 获取文档的原始源映射 */ readonly sourceMap?: SourceMapBuilder; /** * 初始化新的文档 * @param content 文档的原始内容 * @param path 文档的原始路径 * @param sourceMap 文档的原始源映射 */ constructor(content: string, path?: string, sourceMap?: SourceMapData | null); /** 获取所有替换记录 */ readonly replacements: { /** 要替换的开始索引 */ startIndex: number; /** 要替换的结束索引(不含)*/ endIndex: number; /** * 计算要替换的新内容,如果是函数,则替换的内容将在最后生成时计算 * @param args 生成时的附加参数 * @returns 返回替换后的内容 */ content: string | { write: TextDocument["write"]; } | ((...args: readonly any[]) => string | { write: TextDocument["write"]; }); }[]; /** * 替换文档中指定区间的内容 * @param startIndex 要替换的开始索引 * @param endIndex 要替换的结束索引(不含) * @param content 要替换的新内容,如果是函数则为最后根据生成目标自动计算的内容 * @returns 返回替换记录 */ replace(startIndex: number, endIndex: number, content: TextDocument["replacements"][0]["content"]): { startIndex: number; endIndex: number; content: string | { write: (writer: TextWriter, ...args: any[]) => void; } | ((...args: readonly any[]) => string | { write: (writer: TextWriter, ...args: any[]) => void; }); }; /** * 在文档中指定位置插入内容 * @param index 要插入的索引 * @param content 要插入的内容,如果是函数则为最后根据生成目标自动计算的内容 * @returns 返回替换记录 */ insert(index: number, content: TextDocument["replacements"][0]["content"]): { startIndex: number; endIndex: number; content: string | { write: (writer: TextWriter, ...args: any[]) => void; } | ((...args: readonly any[]) => string | { write: (writer: TextWriter, ...args: any[]) => void; }); }; /** * 在文档末尾插入内容 * @param content 要插入的内容,如果是函数则为最后根据生成目标自动计算的内容 * @returns 返回替换记录 */ append(content: TextDocument["replacements"][0]["content"]): { startIndex: number; endIndex: number; content: string | { write: (writer: TextWriter, ...args: any[]) => void; } | ((...args: readonly any[]) => string | { write: (writer: TextWriter, ...args: any[]) => void; }); }; /** * 删除文档中指定区间的内容 * @param startIndex 要删除的开始索引 * @param endIndex 要删除的结束索引(不含) * @returns 返回替换记录 */ remove(startIndex: number, endIndex: number): { startIndex: number; endIndex: number; content: string | { write: (writer: TextWriter, ...args: any[]) => void; } | ((...args: readonly any[]) => string | { write: (writer: TextWriter, ...args: any[]) => void; }); }; /** 行号索引 */ private _lineMap?; /** * 将当前文档的内容写入到目标写入器 * @param writer 目标写入器 * @param args 传递给计算内容的函数参数 */ write(writer: TextWriter, ...args: any[]): void; /** * 生成最终文本内容和源映射 * @param args 传递给计算内容的函数参数 */ generate(...args: any[]): SourceMapTextWriter; /** * 生成最终文本内容 * @param args 传递给计算内容的函数参数 */ toString(...args: any[]): string; } /** * 增删指定的内容并更新源映射(Source Map) * @param data 要更新的数据 * @param data.content 要更新的内容 * @param data.path 内容的源路径,用于生成新的源映射 * @param data.sourceMapData 内容的源映射 * @param index 增删的索引(从 0 开始) * @param deleteCount 要删除的数目 * @param insert 要插入的字符串内容 * @returns 返回替换后的数据 */ export declare function splice(data: { content: string; path?: string; sourceMap?: SourceMapData | null; }, index: number, deleteCount: number, insert: any): SourceMapTextWriter | { content: string; path?: string; sourceMap?: SourceMapData | null; }; /** * 替换指定的内容并更新源映射(Source Map) * @param data 要更新的数据 * @param data.content 要更新的内容 * @param data.path 内容的源路径,用于生成新的源映射 * @param data.sourceMapData 内容的源映射 * @param search 要搜索的内容 * @param replacement 要替换的内容 * @returns 返回替换后的数据 */ export declare function replace(data: { content: string; path?: string; sourceMap?: SourceMapData | null; }, search: string | RegExp, replacement: any | ((source: string, ...args: any[]) => string)): SourceMapTextWriter | { content: string; path?: string; sourceMap?: SourceMapData; };