import { ICodeFile, ICodeEditor } from "./libs/interfaces/editor"; import { IClass, IMethod, IClassDeclaration, IMarker, CodeAnalysisResult, ChangeAnalysisResult } from "./libs/interfaces/declaration"; import { EventEmitter } from "./libs/events"; import { Languages } from "./libs/enum"; export declare abstract class CodeFile implements ICodeFile { protected editor: ICodeEditor; private _content?; /** 编辑器警告信息owner */ protected markersOwner: string; /** 编辑器实例 instance: monaco.editor.IStandaloneCodeEditor */ instance: any | undefined; protected structures: IClassDeclaration[]; /** 事件订阅 */ protected events: EventEmitter; /** 内容状态记录:编辑器内容是否修改(用来处理销毁前检查) */ private _changed; private _rendered; /** model: monaco.editor.ITextModel */ protected model?: Promise; /** 内容是否改变 */ readonly changed: boolean; /** model是否渲染到dom */ readonly rendered: boolean; /** 最后一次保存的文件内容 */ readonly content: string; /** * 获取编辑器内容 * @returns 编辑器内容 */ getValue(): Promise; setValue(content: string, force?: boolean, resetChangeFlag?: boolean): Promise; /** * 将方法描述转化未字符串 * @param method 方法 */ protected methodToString(method: IMethod): Promise; /** * 增加方法 * @param method 方法描述 * @param _class 类名(同一个文件可能会定义多个类,不传则认为是第一个类) */ addMethod(method: IMethod, _class?: string): Promise; /** * 根据内容转换类结构 * @param content 内容 * @param errorRecovery 是否忽略语法错误并继续解析 */ protected getStructure(content: string, errorRecovery?: boolean): Promise; /** * 校验类图定义是否完整 * @param structure 类结构描述模型 */ protected validate(structure: IClassDeclaration[]): IMarker[]; /** * 警告提示 * @param markers 提示信息 */ error(errors: IMarker[]): Promise; /** * 警告提示 * @param warning 提示信息 */ private warning; save(triggerChangedEvent: boolean): Promise; resolve(errorRecovery?: boolean): Promise<{ content: string; hasFatalError: boolean; classes?: IClass[]; }>; /** * 渲染到element * @param element html元素 */ render(element: HTMLElement): Promise; dispose(force?: boolean): Promise; /** * 格式化当前代码 */ format(): Promise; /** * 定位到某个类或者类的某个方法 * @param className 类名 * @param methodName 方法名 */ position(className: string, methodName?: string): Promise; /** 内容修改触发 */ protected analysis(): Promise; /** * 内容修改触发 * @remarks * 本方法是analysis方法的简化版,不会分析代码类结构,只查看代码是否变更 * analysis方法由防抖函数限制已防止出现性能问题,而simpleAnalysis方法立即执行,立刻反应代码变更情况 */ protected simpleAnalysis(): { changed: boolean; content: string; }; /** * 事件订阅 * @param event 事件名称 * @param fn 订阅方法 */ on(event: string, fn: (...args: any[]) => void, debounce?: number): EventEmitter; /** * 取消事件订阅 * @param event 事件名称 */ off(event: string): EventEmitter; localeData: any; /** * 创建编辑器文件 * @param editor 编辑器 * @param language 语法类型 * @param uri 文件uri uri: monaco.Uri * @param _content 文件内容 */ constructor(editor: ICodeEditor, language: Languages, uri: any, _content?: string); /** 处理文件内容变化事件 event: monaco.editor.IModelContentChangedEvent */ private handleDidChangeContent; }