예제 #1
0
        // returns the templates whose:
        //      name or shortName contains the searchString
        //      matches by a registered alias
        public static IReadOnlyCollection <ITemplateInfo> List(string searchString)
        {
            HashSet <ITemplateInfo> matchingTemplates = new HashSet <ITemplateInfo>(TemplateEqualityComparer.Default);
            HashSet <ITemplateInfo> allTemplates      = new HashSet <ITemplateInfo>(TemplateEqualityComparer.Default);

            using (Timing.Over("load"))
                SettingsLoader.GetTemplates(allTemplates);

            using (Timing.Over("Search in loaded"))
                foreach (ITemplateInfo template in allTemplates)
                {
                    if (string.IsNullOrEmpty(searchString) ||
                        template.Name.IndexOf(searchString, StringComparison.OrdinalIgnoreCase) > -1 ||
                        template.ShortName.IndexOf(searchString, StringComparison.OrdinalIgnoreCase) > -1)
                    {
                        matchingTemplates.Add(template);
                    }
                }

            using (Timing.Over("Alias search"))
            {
#if !NET451
                IReadOnlyCollection <ITemplateInfo> allTemplatesCollection = allTemplates;
#else
                IReadOnlyCollection <ITemplateInfo> allTemplatesCollection = allTemplates.ToList();
#endif
                matchingTemplates.UnionWith(AliasRegistry.GetTemplatesForAlias(searchString, allTemplatesCollection));
            }

#if !NET451
            IReadOnlyCollection <ITemplateInfo> matchingTemplatesCollection = matchingTemplates;
#else
            IReadOnlyCollection <ITemplateInfo> matchingTemplatesCollection = matchingTemplates.ToList();
#endif
            return(matchingTemplatesCollection);
        }