/// <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);
        }
Пример #5
0
 /// <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;
 }