public static IGrepEngine GetSearchEngine(string fileName, GrepEngineInitParams param, FileFilter filter) { Debug.Assert(param != null); Debug.Assert(filter != null); loadPlugins(); string fileExtension = Path.GetExtension(fileName).ToLower(); if (fileExtension.Length > 1) { fileExtension = fileExtension.Substring(1); } if (!fileTypeEngines.ContainsKey(fileExtension)) { foreach (GrepPlugin plugin in plugings) { if (plugin.Extensions.Contains(fileExtension)) { fileTypeEngines[fileExtension] = plugin; } } } GrepEnginePlainText plainTextEngine = new GrepEnginePlainText(); plainTextEngine.Initialize(param, filter); if (fileTypeEngines.ContainsKey(fileExtension) && fileTypeEngines[fileExtension].Enabled) { if (FrameworkVersionsAreCompatible(fileTypeEngines[fileExtension].Engine.FrameworkVersion, plainTextEngine.FrameworkVersion)) { if (fileTypeEngines[fileExtension].Engine.Initialize(param, filter)) { return(fileTypeEngines[fileExtension].Engine); } else { failedEngines[fileTypeEngines[fileExtension].Engine.GetType().Name] = "Failed to initialize the plugin. See error log for details."; return(plainTextEngine); } } else { failedEngines[fileTypeEngines[fileExtension].Engine.GetType().Name] = "Plugin developed under outdated framework. Please update the plugin."; return(plainTextEngine); } } else { return(plainTextEngine); } }
public static IGrepEngine GetSearchEngine(string fileName, GrepEngineInitParams param) { loadPlugins(); string fileExtension = Path.GetExtension(fileName).ToLower(); if (fileExtension.Length > 1) fileExtension = fileExtension.Substring(1); if (!fileTypeEngines.ContainsKey(fileExtension)) { foreach (GrepPlugin plugin in plugings) { if (plugin.Extensions.Contains(fileExtension)) { fileTypeEngines[fileExtension] = plugin; } } } GrepEnginePlainText plainTextEngine = new GrepEnginePlainText(); plainTextEngine.Initialize(param); if (fileTypeEngines.ContainsKey(fileExtension) && fileTypeEngines[fileExtension].Enabled) { if (FrameworkVersionsAreCompatible(fileTypeEngines[fileExtension].Engine.FrameworkVersion, plainTextEngine.FrameworkVersion)) { if (fileTypeEngines[fileExtension].Engine.Initialize(param)) { return fileTypeEngines[fileExtension].Engine; } else { failedEngines[fileTypeEngines[fileExtension].Engine.GetType().Name] = "Failed to initialize the plugin. See error log for details."; return plainTextEngine; } } else { failedEngines[fileTypeEngines[fileExtension].Engine.GetType().Name] = "Plugin developed under outdated framework. Please update the plugin."; return plainTextEngine; } } else return plainTextEngine; }
private static IGrepEngine GetPlainTextEngine(string fileExtension, GrepEngineInitParams param, FileFilter filter) { if (!poolKeys.ContainsKey(fileExtension)) { poolKeys.Add(fileExtension, "GrepEnginePlainText"); } IGrepEngine poolEngine = FetchFromPool(fileExtension); if (poolEngine != null) { poolEngine.Initialize(param, filter); return(poolEngine); } IGrepEngine engine = new GrepEnginePlainText(); loadedEngines.Add(engine); engine.Initialize(param, filter); return(engine); }
private void replace() { GrepEnginePlainText engine = new GrepEnginePlainText(); engine.Initialize(new GrepEngineInitParams(GrepSettings.Instance.Get<bool>(GrepSettings.Key.ShowLinesInContext), GrepSettings.Instance.Get<int>(GrepSettings.Key.ContextLinesBefore), GrepSettings.Instance.Get<int>(GrepSettings.Key.ContextLinesAfter), GrepSettings.Instance.Get<double>(GrepSettings.Key.FuzzyMatchThreshold))); List<GrepSearchResult> results = new List<GrepSearchResult>(); GrepSearchOption searchOptions = GrepSearchOption.None; if (Multiline) searchOptions |= GrepSearchOption.Multiline; if (CaseSensitive) searchOptions |= GrepSearchOption.CaseSensitive; if (Singleline) searchOptions |= GrepSearchOption.SingleLine; if (WholeWord) searchOptions |= GrepSearchOption.WholeWord; string replacedString = ""; using (Stream inputStream = new MemoryStream(Encoding.Default.GetBytes(SampleText))) using (Stream writeStream = new MemoryStream()) { engine.Replace(inputStream, writeStream, SearchFor, ReplaceWith, TypeOfSearch, searchOptions, Encoding.Default); writeStream.Position = 0; StreamReader reader = new StreamReader(writeStream); replacedString = reader.ReadToEnd(); } SearchResults.Clear(); SearchResults.AddRange(results); Paragraph paragraph = new Paragraph(); paragraph.Inlines.Add(new Run(replacedString)); TestOutput = paragraph.Inlines; TestOutputText = replacedString; }
private void search() { if (SampleText == null) SampleText = string.Empty; GrepEnginePlainText engine = new GrepEnginePlainText(); engine.Initialize(new GrepEngineInitParams(GrepSettings.Instance.Get<bool>(GrepSettings.Key.ShowLinesInContext), GrepSettings.Instance.Get<int>(GrepSettings.Key.ContextLinesBefore), GrepSettings.Instance.Get<int>(GrepSettings.Key.ContextLinesAfter), GrepSettings.Instance.Get<double>(GrepSettings.Key.FuzzyMatchThreshold))); List<GrepSearchResult> results = new List<GrepSearchResult>(); GrepSearchOption searchOptions = GrepSearchOption.None; if (Multiline) searchOptions |= GrepSearchOption.Multiline; if (CaseSensitive) searchOptions |= GrepSearchOption.CaseSensitive; if (Singleline) searchOptions |= GrepSearchOption.SingleLine; if (WholeWord) searchOptions |= GrepSearchOption.WholeWord; using (Stream inputStream = new MemoryStream(Encoding.Default.GetBytes(SampleText))) { try { results = engine.Search(inputStream, "test.txt", SearchFor, TypeOfSearch, searchOptions, Encoding.Default); if (results != null) { using (StringReader reader = new StringReader(SampleText)) { foreach (var result in results) { if (!result.HasSearchResults) result.SearchResults = Utils.GetLinesEx(reader, result.Matches, 0, 0); } } } } catch (ArgumentException ex) { MessageBox.Show("Incorrect pattern: " + ex.Message, "Warning", MessageBoxButton.OK, MessageBoxImage.Warning); } } SearchResults.Clear(); SearchResults.AddRange(results); Paragraph paragraph = new Paragraph(); if (SearchResults.Count == 1) { SearchResults[0].FormattedLines.Load(false); foreach (FormattedGrepLine line in SearchResults[0].FormattedLines) { // Copy children Inline to a temporary array. paragraph.Inlines.AddRange(line.FormattedText.ToList()); paragraph.Inlines.Add(new LineBreak()); paragraph.Inlines.Add(new Run("=================================")); paragraph.Inlines.Add(new LineBreak()); } } else { paragraph.Inlines.Add(new Run("No matches found")); } TestOutput = paragraph.Inlines; }