Beispiel #1
0
        public void NoMatch_WithContext()
        {
            var data    = GetFactData();
            var target  = CompositionQuery.Parse("identity!=item-identity&tag2==tagVal2&$name==context-name");
            var context = new QueryablePropertyDictionary {
                new QueryableProperty("name", "context-name")
            };

            var result = target.Match(data, context);

            Assert.False(result);
        }
Beispiel #2
0
        public void Match_WithContext_NotEquals_Empty()
        {
            var data    = GetFactData();
            var target  = CompositionQuery.Parse("identity==item-identity&tag2==tagVal2&$name!=context-name");
            var context = new QueryablePropertyDictionary {
                new QueryableProperty("name", "")
            };

            var result = target.Match(data, context);

            Assert.True(result);
        }
Beispiel #3
0
        private static List <GenInfo> AddInCompositionTemplates(List <GenInfo> genQueue, UserSelection userSelection, bool newItemGeneration)
        {
            var compositionCatalog = GetCompositionCatalog(userSelection.Context.Platform).ToList();

            var context = new QueryablePropertyDictionary
            {
                new QueryableProperty("projecttype", userSelection.Context.ProjectType),
                new QueryableProperty("page", string.Join("|", userSelection.Pages.Select(p => p.TemplateId))),
                new QueryableProperty("feature", string.Join("|", userSelection.Features.Select(p => p.TemplateId))),
                new QueryableProperty("service", string.Join("|", userSelection.Services.Select(p => p.TemplateId))),
                new QueryableProperty("testing", string.Join("|", userSelection.Testing.Select(p => p.TemplateId))),
            };

            if (!string.IsNullOrEmpty(userSelection.Context.FrontEndFramework))
            {
                context.Add(new QueryableProperty("frontendframework", userSelection.Context.FrontEndFramework));
            }

            if (!string.IsNullOrEmpty(userSelection.Context.BackEndFramework))
            {
                context.Add(new QueryableProperty("backendframework", userSelection.Context.BackEndFramework));
            }

            foreach (var property in userSelection.Context.PropertyBag)
            {
                context.Add(new QueryableProperty(property.Key.ToLowerInvariant(), property.Value));
            }

            var combinedQueue = new List <GenInfo>();

            foreach (var genItem in genQueue)
            {
                combinedQueue.Add(genItem);
                var compositionQueue = new List <GenInfo>();

                context.AddOrUpdate(new QueryableProperty("ishomepage", (genItem.Name == userSelection.HomeName).ToString().ToLower()));

                foreach (var compositionItem in compositionCatalog)
                {
                    if (compositionItem.Template.GetLanguage() == userSelection.Context.Language &&
                        compositionItem.Query.Match(genItem.Template, context))
                    {
                        AddTemplate(genItem, compositionQueue, compositionItem.Template, userSelection, newItemGeneration);
                    }
                }

                combinedQueue.AddRange(compositionQueue.OrderBy(g => g.Template.GetCompositionOrder()));
            }

            return(combinedQueue);
        }
Beispiel #4
0
        public static QueryablePropertyDictionary GetQueryableProperties(this ITemplateInfo ti)
        {
            var properties = new QueryablePropertyDictionary();

            if (ti != null)
            {
                properties.Add(new QueryableProperty(nameof(ti.Name).ToLowerInvariant(), ti.Name));
                properties.Add(new QueryableProperty(nameof(ti.Identity).ToLowerInvariant(), ti.Identity));
                properties.Add(new QueryableProperty(nameof(ti.GroupIdentity).ToLowerInvariant(), ti.GroupIdentity));

                foreach (var t in ti.Tags)
                {
                    properties.Add(new QueryableProperty(t.Key, t.Value.DefaultValue));
                }
            }

            return(properties);
        }