コード例 #1
0
        /// <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));
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        /// <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);
        }