public IFileExtractor GetFileExtractor(string filePath) { var fileTypeManager = DefaultFileTypeManager.CreateInstance(true); var extensionPoint = PluginManager.DefaultPluginRegistry.GetExtensionPoint <FileTypeComponentBuilderAttribute>(); foreach (IExtension extension in extensionPoint.Extensions) { IFileTypeComponentBuilder extensionFileTypeComponentBuilder = (IFileTypeComponentBuilder)extension.CreateInstance(); extensionFileTypeComponentBuilder.FileTypeManager = fileTypeManager; IFileTypeInformation extensionFileTypeInformation = extensionFileTypeComponentBuilder.BuildFileTypeInformation(string.Empty); string extensionFileTypeDefinitionId = extensionFileTypeInformation.FileTypeDefinitionId.Id; if (Equals(extensionFileTypeDefinitionId, "SDL XLIFF 1.0 v 1.0.0.0")) { var extractor = extensionFileTypeComponentBuilder.BuildFileExtractor(filePath); return(extractor); } } return(null); }
public IFileTypeInformation BuildFileTypeInformation(string name) { var fileTypeInformation = Original.BuildFileTypeInformation(name); var settingsPages = fileTypeInformation.WinFormSettingsPageIds.ToList(); settingsPages.Add("CommunityEmbedddedContentProcessor_Settings"); fileTypeInformation.WinFormSettingsPageIds = settingsPages.ToArray(); return(fileTypeInformation); }
/// <summary> /// searches for matches in files and performs replace of found ones /// </summary> /// <param name="_settings"></param> public void ReplaceInFiles(SearchSettings _settings) { validateSetts(_settings, true); _fileResults = new List <FileData>(); foreach (string filePath in _files) { validateFile(filePath); createBackupFile(filePath); var fileTypeManager = DefaultFileTypeManager.CreateInstance(true); var extensionPoint = PluginManager.DefaultPluginRegistry.GetExtensionPoint <FileTypeComponentBuilderAttribute>(); //IFileExtractor parser = null; IBilingualDocumentGenerator writer = null; foreach (IExtension extension in extensionPoint.Extensions) { IFileTypeComponentBuilder extensionFileTypeComponentBuilder = (IFileTypeComponentBuilder)extension.CreateInstance(); extensionFileTypeComponentBuilder.FileTypeManager = fileTypeManager; IFileTypeInformation extensionFileTypeInformation = extensionFileTypeComponentBuilder.BuildFileTypeInformation(string.Empty); string extensionFileTypeDefinitionId = extensionFileTypeInformation.FileTypeDefinitionId.Id; FileTypeComponentBuilderAttribute attr = extension.ExtensionAttribute as FileTypeComponentBuilderAttribute; if (Equals(extensionFileTypeDefinitionId, "SDL XLIFF 1.0 v 1.0.0.0")) { //parser = extensionFileTypeComponentBuilder.BuildFileExtractor(filePath); writer = extensionFileTypeComponentBuilder.BuildBilingualGenerator(filePath); } } //XliffFileReader parser = new XliffFileReader(filePath); // var parser = FileReaderHelper.FileReader(filePath); var extractor = GetFileExtractor(filePath); if (extractor != null) { var converter = fileTypeManager.GetConverter(extractor.BilingualParser); SetFileExtractorProperties(extractor, converter); var parserProperties = extractor.BilingualParser as INativeContentCycleAware; var fileProperties = GetFileProperties(converter, filePath); parserProperties?.SetFileProperties(fileProperties); // var extractor = fileTypeManager.BuildFileExtractor(parser.BilingualParser, null); // var writer = FileWriterHelper.FileWriter(filePath); // create object to update file to replace found text FileReplaceProcessor replaceProcessor = new FileReplaceProcessor(filePath, _settings); // set extractor and processors // extractor.BilingualParser = parser.BilingualParser; // converter.AddExtractor(extractor); converter.SynchronizeDocumentProperties(); converter.AddBilingualProcessor(replaceProcessor); if (writer != null) { converter.AddBilingualProcessor(new BilingualContentHandlerAdapter(writer.Input)); } // start parsing the file converter.Parse(); // save replace results FileData fData = new FileData(filePath, replaceProcessor.ResultSource, replaceProcessor.ResultTarget); fData.ReplaceResults = replaceProcessor.ResultOfReplace; fData.Warnings = replaceProcessor.Warnings; _fileResults.Add(fData); if (fData.ReplaceResults.Count < 1) { removeCreatedFile(filePath); } else if (!_settings.MakeBackup) { removeBackupFile(filePath); } } } }