public Dictionary <string, string> CreateDynamicMap(TokenMapEntity tokenMapEntity, DataRow dataRow)
        {
            var dynamicMap = new Dictionary <string, string>();

            foreach (TokenEntity tokenEntity in tokenMapEntity.TokenEntities)
            {
                string fieldValue = GetStringFromDataRow(dataRow, tokenEntity.FieldName);

                dynamicMap.Add(tokenEntity.TokenKey, fieldValue);
            }

            return(dynamicMap);
        }
        public TemplateMetadataEntity ParseTemplate(string template)
        {
            var templateMetadataEntity = new TemplateMetadataEntity();

            List <string> templateTokens = GetTokensFromTemplate(template);

            foreach (string viewName in GetAllViewsFromTokens(templateTokens))
            {
                var tokenMapEntity = new TokenMapEntity
                {
                    ViewName = viewName
                };

                foreach (string token in templateTokens.Where(s => s.StartsWith("{{" + viewName)))
                {
                    string fieldName = null;
                    string tokenKey  = token.ToString().Remove("{").Remove("}");

                    if (tokenMapEntity.TokenEntities.Any(te => te.TokenKey == tokenKey))
                    {
                        continue;
                    }

                    if (tokenKey != null && tokenKey.Contains(_delimeter))
                    {
                        fieldName = tokenKey.SubstringAfter(_delimeter);
                    }

                    tokenMapEntity.TokenEntities.Add(
                        new TokenEntity
                    {
                        TokenRaw  = token,
                        TokenKey  = tokenKey,
                        FieldName = fieldName
                    });
                }

                templateMetadataEntity.TokenMapEntities.Add(tokenMapEntity);
            }

            return(templateMetadataEntity);
        }