// 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); }