/// <summary> /// Fills the function code for a daily routine /// </summary> /// <param name="code">Code to fill</param> /// <param name="function">Function data</param> /// <returns>Filled code</returns> public string FillFunctionCode(string code, DailyRoutineFunction function) { code = ExportUtil.RenderPlaceholderIfFuncTrue(code, Placeholder_HasAdditionalScriptFunctions_Start, Placeholder_HasAdditionalScriptFunctions_End, m => { return(false); }); code = ExportUtil.RenderPlaceholderIfFuncTrue(code, Placeholder_HasNoAdditionalScriptFunctions_Start, Placeholder_HasNoAdditionalScriptFunctions_End, m => { return(false); }); code = ExportUtil.BuildPlaceholderRegex(Placeholder_ScriptFunctionName).Replace(code, function.FunctionName); code = ExportUtil.BuildPlaceholderRegex(Placeholder_ScriptContent, ExportConstants.ListIndentPrefix).Replace(code, m => { return(ExportUtil.IndentListTemplate(function.Code, m.Groups[1].Value)); }); code = ExportUtil.BuildPlaceholderRegex(Placeholder_AdditionalScriptFunctions, ExportConstants.ListIndentPrefix).Replace(code, m => { return(string.Empty); }); code = ExportUtil.BuildPlaceholderRegex(Placeholder_Function_ParentPreview).Replace(code, !string.IsNullOrEmpty(function.ParentPreviewText) ? function.ParentPreviewText : "None"); return(code); }
/// <summary> /// Fills the placeholders of a code /// </summary> /// <param name="code">Code to fill</param> /// <param name="data">Export Data</param> /// <returns>Filled Code</returns> public async Task <string> FillPlaceholders(string code, ExportObjectData data) { // Check Data if (!data.ExportData.ContainsKey(ExportConstants.ExportDataObject)) { return(code); } if (data.ExportData[ExportConstants.ExportDataObject] is KortistoNpc) { // Replace daily routine Placeholders KortistoNpc npc = (KortistoNpc)data.ExportData[ExportConstants.ExportDataObject]; return(await FillDailyRoutinePlaceholders(code, npc, data)); } else if (data.ExportData[ExportConstants.ExportDataObject] is DailyRoutineFunction) { // Replace daily routine function DailyRoutineFunction function = (DailyRoutineFunction)data.ExportData[ExportConstants.ExportDataObject]; return(_eventContentPlaceholderResolver.FillFunctionCode(code, function)); } else if (data.ExportData[ExportConstants.ExportDataObject] is List <DailyRoutineFunction> ) { // Replace daily routine function List <DailyRoutineFunction> functions = (List <DailyRoutineFunction>)data.ExportData[ExportConstants.ExportDataObject]; return(await FillDailyRoutineFunctionListPlaceholders(code, functions)); } else { return(code); } }
/// <summary> /// Replaces the event function /// </summary> /// <param name="code">Function code</param> /// <param name="function">Function to render</param> /// <param name="errorCollection">Error collection</param> /// <returns>Rendered event function</returns> public async Task <string> ReplaceEventFunction(string code, DailyRoutineFunction function, ExportPlaceholderErrorCollection errorCollection) { ExportObjectData objectData = new ExportObjectData(); objectData.ExportData.Add(ExportConstants.ExportDataObject, function); ExportPlaceholderFillResult fillResult = await _templatePlaceholderResolver.FillPlaceholders(TemplateType.ObjectDailyRoutineFunction, code, objectData, ExportTemplateRenderingEngine.Scriban); errorCollection.Merge(fillResult.Errors); return(fillResult.Code); }
/// <summary> /// Collects the values for an export /// </summary> /// <param name="templateType">Template type</param> /// <param name="parsedTemplate">Parsed scriban template</param> /// <param name="scriptObject">Scriban script object to fill</param> /// <param name="data">Export Data</param> /// <returns>Task</returns> public override Task CollectValues(TemplateType templateType, Template parsedTemplate, ScriptObject scriptObject, ExportObjectData data) { DailyRoutineFunction inputFunction = data.ExportData[ExportConstants.ExportDataObject] as DailyRoutineFunction; if (inputFunction == null) { return(Task.CompletedTask); } scriptObject.AddOrUpdate(ExportConstants.ScribanDailyRoutineFunctionObjectKey, new ScribanExportDailyRoutineFunction(inputFunction)); return(Task.CompletedTask); }
/// <summary> /// Creates a export function based on an existing function /// </summary> /// <param name="dailyRoutineFunction">Existing function</param> public ScribanExportDailyRoutineFunction(DailyRoutineFunction dailyRoutineFunction) { this.FunctionName = dailyRoutineFunction.FunctionName; this.Code = dailyRoutineFunction.Code; this.ParentPreviewText = dailyRoutineFunction.ParentPreviewText; }