video-flow-b/app/service/domain/valueObject.ts

79 lines
1.6 KiB
TypeScript

/**不同类型 将有不同元数据 */
export enum ScriptSliceType {
/** 文本 */
text = "text",
/**角色 */
role = "role",
/** 场景 */
scene = "scene",
}
/**
* 剧本片段值对象接口
*/
export interface ScriptSlice {
/**唯一标识符 */
readonly id: string;
/** 类型 */
type: ScriptSliceType;
/** 剧本内容 */
text: string;
/** 元数据 */
metaData: any;
}
/**
* @description: 剧本 值对象,将剧本文本转换为剧本对象
* @return {*}
*/
export class ScriptValueObject {
scriptSlices: ScriptSlice[] = [];
/**
* @description: 构造函数,初始化剧本
* @param scriptText 剧本文本字符串
*/
constructor(scriptText?: string) {
if (scriptText) {
this.parseFromString(scriptText);
}
}
/**
* @description: 从字符串解析剧本片段
* @param scriptText 剧本文本字符串
*/
parseFromString(scriptText: string): void {
// TODO: 实现字符串解析逻辑
}
/**
* @description: 检测剧本片段类型
* @param text 文本内容
* @returns ScriptSliceType
*/
private detectScriptType(text: string): ScriptSliceType {
// TODO: 实现类型检测逻辑
return ScriptSliceType.text;
}
/**
* @description: 提取元数据
* @param text 文本内容
* @returns any
*/
private extractMetadata(text: string): any {
// TODO: 实现元数据提取逻辑
return {};
}
/**
* @description: 将剧本片段转换为字符串
* @returns string
*/
toString(): string {
return this.scriptSlices.map((slice) => slice.text).join("");
}
}