public async void SetSearchFilter(string searchString) { searchString = searchString.ToLower(); ObservableCollection <GridItem> searchResultRemoveList = new ObservableCollection <GridItem>(); const string pathToSourceCode = @"SourceCodeAsContent\"; foreach (GridItem item in this.mainGridItems) { var fileText = await this.ReadFileTextAsync(pathToSourceCode + item.ControlType.Name + ".xaml"); fileText = CodeShowPage.ExtractMinCode(fileText); fileText = fileText.ToLower(); if (!fileText.Contains(searchString)) { fileText = await this.ReadFileTextAsync(pathToSourceCode + item.ControlType.Name + ".xaml.cs"); fileText = CodeShowPage.ExtractMinCode(fileText);; fileText = CodeShowPage.ExtractMinCode(fileText); fileText = fileText.ToLower(); if (!fileText.Contains(searchString)) { searchResultRemoveList.Add(item); } } } foreach (GridItem itemToBeRemoved in searchResultRemoveList) { this.DemoItems.Remove(itemToBeRemoved); } }
public async Task <List <string> > GetSearchTerms() { string searchableText = null; const string pathToSourceCode = @"SourceCodeAsContent\"; foreach (GridItem item in this.mainGridItems) { var fileText = await this.ReadFileTextAsync(pathToSourceCode + item.ControlType.Name + ".xaml"); searchableText += CodeShowPage.ExtractMinCode(fileText); fileText = await this.ReadFileTextAsync(pathToSourceCode + item.ControlType.Name + ".xaml.cs"); searchableText += CodeShowPage.ExtractMinCode(fileText); } const string regularExpression = @"[^a-zA-Z]"; searchableText = Regex.Replace(searchableText, regularExpression, " "); searchableText = Regex.Replace(searchableText, @"\s+", " "); //searchableText = searchableText.ToLower(); string[] words = searchableText.Split(' '); // Now lets trim the set to just objects that we might care about. List <string> winRtObjectNames = new List <string>(); Type rootType = typeof(TypeInfo); TypeInfo rootTypeInfo = typeof(TypeInfo).GetTypeInfo(); Assembly assembly = rootType.GetTypeInfo().Assembly; foreach (TypeInfo type in assembly.DefinedTypes) { winRtObjectNames.Add(type.Name); } rootType = typeof(SyntaxHighlighter); rootTypeInfo = typeof(SyntaxHighlighter).GetTypeInfo(); assembly = rootType.GetTypeInfo().Assembly; foreach (TypeInfo type in assembly.DefinedTypes) { winRtObjectNames.Add(type.Name); } rootType = typeof(Colors); rootTypeInfo = typeof(Colors).GetTypeInfo(); assembly = rootType.GetTypeInfo().Assembly; foreach (TypeInfo type in assembly.DefinedTypes) { winRtObjectNames.Add(type.Name); } rootType = typeof(DependencyObject); rootTypeInfo = typeof(DependencyObject).GetTypeInfo(); assembly = rootType.GetTypeInfo().Assembly; foreach (TypeInfo type in assembly.DefinedTypes) { winRtObjectNames.Add(type.Name); } rootType = typeof(DataRequestDeferral); rootTypeInfo = typeof(DependencyObject).GetTypeInfo(); assembly = rootType.GetTypeInfo().Assembly; foreach (TypeInfo type in assembly.DefinedTypes) { winRtObjectNames.Add(type.Name); } winRtObjectNames = winRtObjectNames.Distinct().ToList(); IEnumerable <string> wordList = new List <string>(words); IEnumerable <string> winrt = winRtObjectNames as IEnumerable <string>; IEnumerable <string> objectList = winrt.Intersect(wordList); SyntaxHighlighter.ObjectNames = new List <string>(objectList); return(new List <string>(wordList)); }