/// <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); } IExportSnippetExportable exportObject = data.ExportData[ExportConstants.ExportDataObject] as IExportSnippetExportable; if (exportObject == null) { return(code); } // Replace Export Snippet Placeholders FlexFieldObject flexFieldObject = data.ExportData[ExportConstants.ExportDataObject] as FlexFieldObject; return(await FillExportSnippetPlaceholders(code, exportObject, flexFieldObject)); }
/// <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 IExportSnippetExportable) { // Replace Export Snippet Placeholders IExportSnippetExportable exportObject = (IExportSnippetExportable)data.ExportData[ExportConstants.ExportDataObject]; FlexFieldObject flexFieldObject = data.ExportData[ExportConstants.ExportDataObject] as FlexFieldObject; return(await FillExportSnippetPlaceholders(code, exportObject, flexFieldObject)); } else if (data.ExportData[ExportConstants.ExportDataObject] is ExportSnippetFunction) { ExportSnippetFunction exportFunction = (ExportSnippetFunction)data.ExportData[ExportConstants.ExportDataObject]; return(FillFunctionPlaceholders(code, exportFunction)); } return(code); }
/// <summary> /// Fills the export snippet placeholders /// </summary> /// <param name="code">Code to fill</param> /// <param name="exportObject">Export object</param> /// <param name="flexFieldObject">Flex field object</param> /// <returns>Updated code</returns> private async Task <string> FillExportSnippetPlaceholders(string code, IExportSnippetExportable exportObject, FlexFieldObject flexFieldObject) { HashSet <string> usedExportSnippets = new HashSet <string>(); List <ObjectExportSnippet> exportSnippets = await _cachedDbAccess.GetObjectExportSnippetsByObject(exportObject.Id); code = ExportUtil.RenderPlaceholderIfTrue(code, Placeholder_HasAnyCodeSnippet_Start, Placeholder_HasAnyCodeSnippet_End, exportSnippets.Count > 0); code = ExportUtil.RenderPlaceholderIfTrue(code, Placeholder_HasNotAnyCodeSnippet_Start, Placeholder_HasNotAnyCodeSnippet_End, exportSnippets.Count == 0); code = ExportUtil.RenderPlaceholderIfFuncTrue(code, Placeholder_HasCodeSnippet_Start, Placeholder_HasCodeSnippet_End, (m) => { string snippetName = m.Groups[1].Value; snippetName = snippetName.ToLowerInvariant(); return(exportSnippets.Any(e => e.SnippetName.ToLowerInvariant() == snippetName)); }); code = ExportUtil.RenderPlaceholderIfFuncTrue(code, Placeholder_HasNotCodeSnippet_Start, Placeholder_HasNotCodeSnippet_End, (m) => { string snippetName = m.Groups[1].Value; snippetName = snippetName.ToLowerInvariant(); return(!exportSnippets.Any(e => e.SnippetName.ToLowerInvariant() == snippetName)); }); code = ExportUtil.BuildPlaceholderRegex(ExportConstants.ExportSnippetRegex, ExportConstants.ListIndentPrefix).Replace(code, (m) => { string snippetName = m.Groups[2].Value; snippetName = snippetName.ToLowerInvariant(); if (!usedExportSnippets.Contains(snippetName)) { usedExportSnippets.Add(snippetName); } return(ExportCodeSnippetContent(exportSnippets.FirstOrDefault(e => e.SnippetName.ToLowerInvariant() == snippetName), flexFieldObject, m.Groups[1].Value)); }); code = ExportUtil.RenderPlaceholderIfFuncTrue(code, Placeholder_ExportSnippet_HasCodeSnippet_Additional_Functions_Start, Placeholder_ExportSnippet_HasCodeSnippet_Additional_Functions_End, (m) => { string snippetName = m.Groups[1].Value; snippetName = snippetName.ToLowerInvariant(); return(HasCodeSnippetAdditionalFunctions(exportSnippets.FirstOrDefault(e => e.SnippetName.ToLowerInvariant() == snippetName), flexFieldObject)); }); code = ExportUtil.RenderPlaceholderIfFuncTrue(code, Placeholder_ExportSnippet_HasCodeSnippet_NoAdditional_Functions_Start, Placeholder_ExportSnippet_HasCodeSnippet_NoAdditional_Functions_End, (m) => { string snippetName = m.Groups[1].Value; snippetName = snippetName.ToLowerInvariant(); return(!HasCodeSnippetAdditionalFunctions(exportSnippets.FirstOrDefault(e => e.SnippetName.ToLowerInvariant() == snippetName), flexFieldObject)); }); code = ExportUtil.RenderPlaceholderIfFuncTrue(code, Placeholder_ExportSnippet_HasCodeSnippet_NoAdditional_Functions_Start, Placeholder_ExportSnippet_HasCodeSnippet_NoAdditional_Functions_End, (m) => { string snippetName = m.Groups[1].Value; snippetName = snippetName.ToLowerInvariant(); return(HasCodeSnippetAdditionalFunctions(exportSnippets.FirstOrDefault(e => e.SnippetName.ToLowerInvariant() == snippetName), flexFieldObject)); }); code = ExportUtil.BuildPlaceholderRegex(Placeholder_ExportSnippet_AdditionalFuntions, ExportConstants.ListIndentPrefix).Replace(code, (m) => { string snippetName = m.Groups[2].Value; snippetName = snippetName.ToLowerInvariant(); return(ExportCodeSnippetAdditionalFunctions(exportSnippets.FirstOrDefault(e => e.SnippetName.ToLowerInvariant() == snippetName), flexFieldObject, m.Groups[1].Value)); }); ValidateAllExportSnippetsUsed(usedExportSnippets, exportSnippets); return(code); }