├── .gitattributes ├── .gitignore ├── README.md ├── docs ├── _config.yml ├── images │ ├── screenshot.png │ └── screenshotSmall.png └── index.md ├── license.txt └── src └── FileSharper ├── FileSharper.sln ├── FileSharper ├── AboutControl.xaml ├── AboutControl.xaml.cs ├── App.xaml ├── App.xaml.cs ├── EulaControl.xaml ├── EulaControl.xaml.cs ├── FileSharper.csproj ├── FileSharper.ico ├── FileSharperFile.ico ├── FileSharperSettings.cs ├── FileSharperUtil.cs ├── MainViewModel.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── ManageTemplatesControl.xaml ├── ManageTemplatesControl.xaml.cs ├── PathHelpControl.xaml ├── PathHelpControl.xaml.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ ├── Settings.settings │ └── app.manifest ├── SearchTemplateInfo.cs ├── Templates │ ├── 01 Simple Search.fsh │ └── 02 Regex Replace.fsh ├── app.config └── packages.config ├── FileSharperCore.Tests ├── ExpectedResults │ ├── CommandLineProcessorTests │ │ └── RunsCommandLine │ │ │ └── BasicTextFile.txt │ ├── CopyFileProcessorTests │ │ ├── DoesNotOverwrite │ │ │ └── out.txt │ │ ├── Overwrites │ │ │ └── out.txt │ │ └── Success │ │ │ └── out.txt │ ├── CreateOrUpdateFileProcessorTests │ │ ├── CreatesFile │ │ │ └── out.txt │ │ ├── DoesNotUpdateDate │ │ │ └── out.txt │ │ ├── ExceptionUpdatingDate │ │ │ └── out.txt │ │ └── UpdatesDate │ │ │ └── out.txt │ ├── CsvProcessorTests │ │ ├── ClassicMacOS │ │ │ └── ClassicMacOS.csv │ │ ├── FullPath │ │ │ └── FullPath.csv │ │ ├── NameThenDirectory │ │ │ └── NameThenDirectory.csv │ │ ├── Unix │ │ │ └── Unix.csv │ │ └── Windows │ │ │ └── Windows.csv │ ├── FileDateProcessorTests │ │ ├── FailsWhenFileLocked │ │ │ └── out.txt │ │ ├── SetsAccessedDate │ │ │ └── out.txt │ │ ├── SetsCreatedDate │ │ │ └── out.txt │ │ └── SetsModificationDate │ │ │ └── out.txt │ ├── FilterLinesProcessorTests │ │ ├── FailsFileExists │ │ │ └── out.txt │ │ ├── FailsFileInUse │ │ │ └── out.txt │ │ ├── SuccessCaseInsensitiveNoRegex │ │ │ └── out.txt │ │ ├── SuccessCaseInsensitiveRegex │ │ │ └── out.txt │ │ ├── SuccessCaseSensitiveNoRegex │ │ │ └── out.txt │ │ ├── SuccessCaseSensitiveRegex │ │ │ └── out.txt │ │ ├── SuccessKeepNoRegex │ │ │ └── out.txt │ │ ├── SuccessKeepRegex │ │ │ └── out.txt │ │ ├── SuccessNoTrailingNewline │ │ │ └── out.txt │ │ ├── SuccessRemoveNoRegex │ │ │ └── out.txt │ │ └── SuccessRemoveRegex │ │ │ └── out.txt │ ├── ImageResizeProcessorTests │ │ ├── Height100Jpeg │ │ │ └── out.jpg │ │ ├── Height900Jpeg │ │ │ └── out.jpg │ │ ├── ResizeBeetleOverwriteFalse │ │ │ └── out.jpg │ │ ├── ResizeBeetleOverwriteTrueFailure │ │ │ └── out.jpg │ │ ├── ResizeBeetleOverwriteTrueSuccess │ │ │ └── out.jpg │ │ ├── Width100Bmp │ │ │ └── out.bmp │ │ ├── Width100Exif │ │ │ └── out.exif │ │ ├── Width100Gif │ │ │ └── out.gif │ │ ├── Width100Jpeg │ │ │ └── out.jpg │ │ ├── Width100Png │ │ │ └── out.png │ │ ├── Width100Tiff │ │ │ └── out.tif │ │ ├── Width1200Jpeg │ │ │ └── out.jpg │ │ └── out.jpg │ ├── LineProcessorTests │ │ ├── FailsExistingFile │ │ │ └── out.txt │ │ ├── FailsFileInUse │ │ │ └── out.txt │ │ ├── SucceedsExistingFile │ │ │ └── out.txt │ │ ├── Success │ │ │ └── out.txt │ │ ├── SuccessClassicMacOS │ │ │ └── out.txt │ │ ├── SuccessMatchInput │ │ │ └── out.txt │ │ ├── SuccessNoTrailingNewline │ │ │ └── out.txt │ │ ├── SuccessUnix │ │ │ └── out.txt │ │ ├── SuccessUtf16 │ │ │ └── out.txt │ │ └── SuccessWindows │ │ │ └── out.txt │ ├── PrependOrAppendTextProcessorTests │ │ ├── AppendOneNewlineSuccess │ │ │ └── out.txt │ │ ├── AppendSuccess │ │ │ └── out.txt │ │ ├── AppendTwoNewlineSuccess │ │ │ └── out.txt │ │ ├── FailsFileExists │ │ │ └── out.txt │ │ ├── FailsFileInUse │ │ │ └── out.txt │ │ ├── PrependClassicMacOSSuccess │ │ │ └── out.txt │ │ ├── PrependOneNewlineSuccess │ │ │ └── out.txt │ │ ├── PrependSuccess │ │ │ └── out.txt │ │ ├── PrependTwoNewlineSuccess │ │ │ └── out.txt │ │ ├── PrependUtf16Success │ │ │ └── out.txt │ │ └── SucceedsFileExists │ │ │ └── out.txt │ ├── ProcessorBaseTests │ │ ├── CopyAndDeleteTempFile_DoesNotOverwrite │ │ │ └── out.txt │ │ ├── CopyAndDeleteTempFile_MovesToRecycleBin │ │ │ └── out.txt │ │ ├── CopyAndDeleteTempFile_Overwrites │ │ │ └── out.txt │ │ ├── CopyAndDeleteTempFile_Success │ │ │ └── out.txt │ │ ├── GetProcessingResultFromCopyAndDeleteTempFile_Failure │ │ │ └── out.txt │ │ └── GetProcessingResultFromCopyAndDeleteTempFile_Successs │ │ │ └── out.txt │ ├── RecycleProcessorTests │ │ └── FailsWhenFileInUse │ │ │ └── out.txt │ ├── RemoveRepeatedLinesProcessorTests │ │ ├── FailsFileExists │ │ │ └── out.txt │ │ ├── FailsFileInUse │ │ │ └── out.txt │ │ ├── SucceedsFileExists │ │ │ └── out.txt │ │ ├── Success │ │ │ └── out.txt │ │ ├── SuccessClassicMacOS │ │ │ └── out.txt │ │ ├── SuccessNoTrailingNewline │ │ │ └── out.txt │ │ └── SuccessUtf16 │ │ │ └── out.txt │ └── ZipProcessorTests │ │ ├── GeneratedFiles_PerGeneratedFile │ │ ├── TextFile1ForZip.zip │ │ ├── TextFile2ForZip.zip │ │ └── TextFile3ForZip.zip │ │ ├── GeneratedFiles_PerInputFile │ │ └── BasicTextFile.zip │ │ ├── OneZipPerSearch │ │ └── output.zip │ │ ├── OneZipPerSearch_AddContainingFolder │ │ └── output.zip │ │ ├── OneZipPerSearch_DoesNotOverwrite │ │ └── output.zip │ │ ├── OneZipPerSearch_Overwrites │ │ └── output.zip │ │ ├── SingleFiles │ │ ├── TextFile1ForZip.zip │ │ ├── TextFile2ForZip.zip │ │ └── TextFile3ForZip.zip │ │ └── SingleFiles_AddContainingFolder │ │ ├── TextFile1ForZip.zip │ │ ├── TextFile2ForZip.zip │ │ └── TextFile3ForZip.zip ├── FileSharperCore.Tests.csproj ├── Processors │ ├── CommandLineProcessorTests.cs │ ├── CsvProcessorTests.cs │ ├── DoNothingProcessorTests.cs │ ├── Filesystem │ │ ├── CopyFileProcessorTests.cs │ │ ├── CreateDirectoryProcessorTests.cs │ │ ├── CreateOrUpdateFileProcessorTests.cs │ │ ├── FileDateProcessorTests.cs │ │ └── RecycleProcessorTests.cs │ ├── Image │ │ └── ImageResizeProcessorTests.cs │ ├── MultiProcessorTests.cs │ ├── ProcessorBaseTests.cs │ ├── SingleFileProcessorBaseTests.cs │ ├── Text │ │ ├── ChangeCaseProcessorTests.cs │ │ ├── ChangeLineEndingsProcessorTests.cs │ │ ├── FilterLinesProcessorTests.cs │ │ ├── LineProcessorTests.cs │ │ ├── PrependOrAppendTextProcessorTests.cs │ │ └── RemoveRepeatedLinesProcessorTests.cs │ └── ZipProcessorTests.cs ├── Properties │ └── AssemblyInfo.cs ├── TestBase.cs ├── TestFiles │ ├── BasicTextFile.txt │ ├── Lipsum.txt │ ├── LipsumWithRepeatedLines.txt │ ├── LipsumWithRepeatedLinesAndNoTrailingNewline.txt │ ├── TextFileWithNewlines.txt │ ├── TextFileWithNoTrailingNewline.txt │ ├── ZipHierarchy │ │ └── Subdir1 │ │ │ └── Subdir2 │ │ │ ├── Subdir3 │ │ │ ├── TextFile2ForZip.txt │ │ │ └── TextFile3ForZip.txt │ │ │ └── TextFile1ForZip.txt │ └── beetle.jpg ├── TestUtil.cs ├── app.config └── packages.config ├── FileSharperCore ├── ConditionCatalog.cs ├── ConditionNode.cs ├── Conditions │ ├── AllCondition.cs │ ├── AnyCondition.cs │ ├── Binary │ │ ├── BinaryDataContainsByteSequenceCondition.cs │ │ ├── BinaryDataContainsTextCondition.cs │ │ └── BinaryDataSearchCondition.cs │ ├── CompoundCondition.cs │ ├── ConditionBase.cs │ ├── Filesystem │ │ ├── FileAgeCondition.cs │ │ ├── FileDateCondition.cs │ │ ├── FileLengthCondition.cs │ │ ├── FilePathContainsTextCondition.cs │ │ └── ReadOnlyCondition.cs │ ├── Image │ │ ├── ImageAspectRatioCondition.cs │ │ └── ImageDimensionCondition.cs │ ├── MatchEverythingCondition.cs │ ├── NotCondition.cs │ ├── Text │ │ ├── ContainsTextCondition.cs │ │ ├── LineCountCondition.cs │ │ ├── LineEndingsCondition.cs │ │ ├── TextEncodingCondition.cs │ │ └── WordCountCondition.cs │ └── Xml │ │ ├── XPathNodeCountCondition.cs │ │ └── XPathStringValueCondition.cs ├── Editors │ ├── DateTimePickerEditor.cs │ ├── FileSharperMultiLineTextEditor.cs │ ├── FolderChooserEditor.xaml │ ├── FolderChooserEditor.xaml.cs │ ├── OpenFileEditor.xaml │ ├── OpenFileEditor.xaml.cs │ ├── SaveFileEditor.xaml │ └── SaveFileEditor.xaml.cs ├── Enums.cs ├── ExceptionInfo.cs ├── FieldSourceCatalog.cs ├── FieldSourceNode.cs ├── FieldSources │ ├── FieldSourceBase.cs │ ├── Filesystem │ │ ├── FileAgeFieldSource.cs │ │ ├── FileDateFieldSource.cs │ │ ├── FileLengthFieldSource.cs │ │ └── ReadOnlyFieldSource.cs │ ├── Image │ │ └── ImageDimensionsFieldSource.cs │ ├── NothingFieldSource.cs │ ├── Text │ │ ├── LineCountFieldSource.cs │ │ ├── LineEndingsFieldSource.cs │ │ ├── TextEncodingFieldSource.cs │ │ └── WordCountFieldSource.cs │ └── Xml │ │ ├── XPathNodeCountFieldSource.cs │ │ └── XPathStringValueFieldSource.cs ├── FieldSourcesNode.cs ├── FileCaches │ └── BitmapFileCache.cs ├── FileProgressInfo.cs ├── FileSharperCore.csproj ├── FileSourceCatalog.cs ├── FileSourceNode.cs ├── FileSources │ ├── DirectorySearchFileSource.cs │ ├── FileFileSource.cs │ ├── FileSourceBase.cs │ ├── ListFileSource.cs │ └── TempFileWithTextFileSource.cs ├── ICondition.cs ├── IFieldSource.cs ├── IFileCache.cs ├── IFileSource.cs ├── IPluggableItem.cs ├── IPluggableItemWithColumns.cs ├── IPluggableItemWithColumnsAndCacheTypes.cs ├── IProcessor.cs ├── IRunInfo.cs ├── MatchResult.cs ├── PluggableItemBase.cs ├── PluggableItemWithColumnsAndCacheTypesBase.cs ├── PluggableItemWithColumnsBase.cs ├── ProcessingResult.cs ├── ProcessorCatalog.cs ├── ProcessorNode.cs ├── Processors │ ├── CommandLineProcessor.cs │ ├── CsvProcessor.cs │ ├── DoNothingProcessor.cs │ ├── Filesystem │ │ ├── CopyFileProcessor.cs │ │ ├── CreateDirectoryProcessor.cs │ │ ├── CreateOrUpdateFileProcessor.cs │ │ ├── FileDateProcessor.cs │ │ └── RecycleProcessor.cs │ ├── Image │ │ └── ImageResizeProcessor.cs │ ├── MultiProcessor.cs │ ├── ProcessorBase.cs │ ├── Shell │ │ ├── OpenContainingFolderProcessor.cs │ │ └── OpenFileProcessor.cs │ ├── SingleFileProcessorBase.cs │ ├── Text │ │ ├── ChangeCaseProcessor.cs │ │ ├── ChangeLineEndingsProcessor.cs │ │ ├── FilterLinesProcessor.cs │ │ ├── LineProcessor.cs │ │ ├── PrependOrAppendTextProcessor.cs │ │ ├── RemoveRepeatedLinesProcessor.cs │ │ ├── ReplaceTextProcessor.cs │ │ ├── SortLinesProcessor.cs │ │ ├── SpacesToTabsProcessor.cs │ │ ├── TabsToSpacesProcessor.cs │ │ └── TrimWhitespaceProcessor.cs │ └── ZipProcessor.cs ├── ProcessorsNode.cs ├── Properties │ └── AssemblyInfo.cs ├── RunInfo.cs ├── SearchDocument.cs ├── SearchViewModel.cs ├── SharperEngine.cs ├── Util │ ├── CompareUtil.cs │ ├── HeaderUtil.cs │ ├── PositiveFraction.cs │ ├── ReplaceUtil.cs │ ├── ReverseComparer.cs │ ├── TextUtil.cs │ ├── UnitUtil.cs │ ├── UpgradeUtil.cs │ └── XmlUtil.cs ├── app.config └── packages.config ├── FileSharperSetup └── FileSharperSetup.vdproj ├── FileSharperUI ├── ConditionNodeControl.xaml ├── ConditionNodeControl.xaml.cs ├── ConditionNodeListControl.xaml ├── ConditionNodeListControl.xaml.cs ├── ConditionNodeRowControl.xaml ├── ConditionNodeRowControl.xaml.cs ├── FieldSourceNodeControl.xaml ├── FieldSourceNodeControl.xaml.cs ├── FieldSourceNodeRowControl.xaml ├── FieldSourceNodeRowControl.xaml.cs ├── FieldSourcesNodeControl.xaml ├── FieldSourcesNodeControl.xaml.cs ├── FileSharperUI.csproj ├── FileSourceNodeControl.xaml ├── FileSourceNodeControl.xaml.cs ├── MatchLimitsControl.xaml ├── MatchLimitsControl.xaml.cs ├── ProcessorNodeControl.xaml ├── ProcessorNodeControl.xaml.cs ├── ProcessorNodeRowControl.xaml ├── ProcessorNodeRowControl.xaml.cs ├── ProcessorsNodeControl.xaml ├── ProcessorsNodeControl.xaml.cs ├── Properties │ └── AssemblyInfo.cs ├── SearchDocumentControl.xaml ├── SearchDocumentControl.xaml.cs ├── SearchDocumentSetupControl.xaml ├── SearchDocumentSetupControl.xaml.cs ├── SearchViewModelControl.xaml ├── SearchViewModelControl.xaml.cs ├── app.config └── packages.config └── FileSharperUIHelpers ├── BoolToVisibilityConverter.cs ├── CountToVisibilityConverter.cs ├── FileSharperUIHelpers.csproj ├── HowOftenToVisibilityConverter.cs ├── InverseBooleanConverter.cs ├── ObjectToVisibilityConverter.cs ├── Properties └── AssemblyInfo.cs ├── SearchViewModelToDynamicGridViewConverter.cs ├── SubtractNumberConverter.cs ├── TypeNameToConditionConverter.cs ├── TypeNameToFieldSourceConverter.cs ├── TypeNameToFileSourceConverter.cs ├── TypeNameToProcessorConverter.cs └── app.config /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Many test files and test outputs have non-Windows line endings 5 | # that should be preserved. 6 | *.txt binary 7 | *.csv binary 8 | *.jpg binary 9 | *.png binary 10 | *.gif binary 11 | *.bmp binary 12 | *.exif binary 13 | *.zip binary 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # This .gitignore file was automatically created by Microsoft(R) Visual Studio. 3 | ################################################################################ 4 | 5 | /src/FileSharper/FileSharper/bin 6 | /src/FileSharper/FileSharper/obj 7 | /src/FileSharper/.vs 8 | /src/FileSharper/FileSharperCore/bin 9 | /src/FileSharper/FileSharperCore/obj 10 | /src/FileSharper/FileSharperUI/bin 11 | /src/FileSharper/FileSharperUI/obj 12 | /src/FileSharper/FileSharperUIHelpers/bin 13 | /src/FileSharper/FileSharperUIHelpers/obj 14 | /src/FileSharper/packages 15 | *.csproj.user 16 | /README.md.bak 17 | /src/FileSharper/FileSharper/Thumbs.db 18 | /src/FileSharper/FileSharperSetup/Debug 19 | /src/FileSharper/FileSharperSetup/Release 20 | /src/FileSharper/FileSharperCore.Tests/bin/Debug 21 | /src/FileSharper/FileSharperCore.Tests/obj/Debug 22 | /src/FileSharper/FileSharperCore.Tests/bin/Release 23 | /src/FileSharper/FileSharperCore.Tests/obj/Release 24 | -------------------------------------------------------------------------------- /docs/_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-slate -------------------------------------------------------------------------------- /docs/images/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/docs/images/screenshot.png -------------------------------------------------------------------------------- /docs/images/screenshotSmall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/docs/images/screenshotSmall.png -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | Hopefully this will be the new homepage. 2 | -------------------------------------------------------------------------------- /license.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Andrew Vardeman 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /src/FileSharper/FileSharper/AboutControl.xaml.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018 Andrew Vardeman. Published under the MIT license. 2 | // See license.txt in the FileSharper distribution or repository for the 3 | // full text of the license. 4 | 5 | using System.Windows.Controls; 6 | 7 | namespace FileSharper 8 | { 9 | /// 10 | /// Interaction logic for AboutControl.xaml 11 | /// 12 | public partial class AboutControl : UserControl 13 | { 14 | public AboutControl() 15 | { 16 | InitializeComponent(); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharper/App.xaml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharper/App.xaml.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Andrew Vardeman. Published under the MIT license. 2 | // See license.txt in the FileSharper distribution or repository for the 3 | // full text of the license. 4 | 5 | using System.Windows; 6 | using System.Windows.Threading; 7 | using System.Runtime.InteropServices; 8 | using System; 9 | using System.IO; 10 | using System.Collections.Generic; 11 | 12 | namespace FileSharper 13 | { 14 | /// 15 | /// Interaction logic for App.xaml 16 | /// 17 | public partial class App : Application 18 | { 19 | 20 | public static FileInfo[] StartupFiles { get; set; } 21 | 22 | // https://stackoverflow.com/a/13523188 23 | void Application_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) 24 | { 25 | COMException ex = e.Exception as COMException; 26 | if (ex != null && ex.ErrorCode == -2147221040) 27 | e.Handled = true; 28 | } 29 | 30 | private void Application_Startup(object sender, StartupEventArgs e) 31 | { 32 | DirectoryInfo dir = new DirectoryInfo(Environment.CurrentDirectory); 33 | List allFiles = new List(); 34 | foreach (string arg in e.Args) 35 | { 36 | try { 37 | // handle arguments like "*.fsh" 38 | allFiles.AddRange(dir.GetFiles(arg)); 39 | } 40 | catch (Exception ex) 41 | { 42 | try 43 | { 44 | // most common scenario: full path 45 | allFiles.Add(new FileInfo(arg)); 46 | } 47 | catch (Exception ex2) 48 | { 49 | // Oh I don't know. Whatever. 50 | } 51 | } 52 | } 53 | StartupFiles = allFiles.ToArray(); 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharper/EulaControl.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | License 11 | Copyright (c) 2017-2018 Andrew Vardeman 12 | Permission is hereby granted, free of charge, to any person obtaining a copy 13 | of this software and associated documentation files (the "Software"), to deal 14 | in the Software without restriction, including without limitation the rights 15 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 16 | copies of the Software, and to permit persons to whom the Software is 17 | furnished to do so, subject to the following conditions: 18 | The above copyright notice and this permission notice shall be included in all 19 | copies or substantial portions of the Software. 20 | 21 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 22 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 23 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 24 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 25 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 26 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 27 | SOFTWARE. 28 | 29 | 30 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharper/EulaControl.xaml.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018 Andrew Vardeman. Published under the MIT license. 2 | // See license.txt in the FileSharper distribution or repository for the 3 | // full text of the license. 4 | 5 | using System; 6 | using System.Collections.Generic; 7 | using System.Linq; 8 | using System.Text; 9 | using System.Threading.Tasks; 10 | using System.Windows; 11 | using System.Windows.Controls; 12 | using System.Windows.Data; 13 | using System.Windows.Documents; 14 | using System.Windows.Input; 15 | using System.Windows.Media; 16 | using System.Windows.Media.Imaging; 17 | using System.Windows.Navigation; 18 | using System.Windows.Shapes; 19 | 20 | namespace FileSharper 21 | { 22 | /// 23 | /// Interaction logic for EulaControl.xaml 24 | /// 25 | public partial class EulaControl : UserControl 26 | { 27 | public EulaControl() 28 | { 29 | InitializeComponent(); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharper/FileSharper.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharper/FileSharper.ico -------------------------------------------------------------------------------- /src/FileSharper/FileSharper/FileSharperFile.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharper/FileSharperFile.ico -------------------------------------------------------------------------------- /src/FileSharper/FileSharper/FileSharperUtil.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Andrew Vardeman. Published under the MIT license. 2 | // See license.txt in the FileSharper distribution or repository for the 3 | // full text of the license. 4 | 5 | using System; 6 | using System.Collections.Generic; 7 | using System.IO; 8 | using System.Reflection; 9 | 10 | namespace FileSharper 11 | { 12 | public class FileSharperUtil 13 | { 14 | public static void LoadAssemblies() 15 | { 16 | HashSet existingDlls = new HashSet(); 17 | List pathsToSearch = new List(); 18 | pathsToSearch.Add(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)); 19 | try 20 | { 21 | string appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 22 | string configDirPath = Path.Combine(appDataPath, "FileSharper"); 23 | Directory.CreateDirectory(configDirPath); 24 | string configFilePath = Path.Combine(configDirPath, "pluginDirs.conf"); 25 | if (File.Exists(configFilePath)) 26 | { 27 | pathsToSearch.AddRange(File.ReadAllLines(configFilePath)); 28 | } 29 | } 30 | catch (Exception) 31 | { 32 | Console.WriteLine("Error loading plugins"); 33 | } 34 | if (pathsToSearch.Count > 1) 35 | { 36 | foreach (string path in pathsToSearch) 37 | { 38 | try 39 | { 40 | DirectoryInfo dir = new DirectoryInfo(path); 41 | foreach (FileInfo dll in dir.GetFiles("*.dll")) 42 | { 43 | if (!existingDlls.Contains(dll.Name)) 44 | { 45 | Assembly.LoadFrom(dll.FullName); 46 | existingDlls.Add(dll.Name); 47 | } 48 | } 49 | } 50 | catch (Exception ex) 51 | { 52 | Console.WriteLine($"Error searching DLLs from {path}: {ex.ToString()}"); 53 | } 54 | } 55 | } 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharper/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Andrew Vardeman. Published under the MIT license. 2 | // See license.txt in the FileSharper distribution or repository for the 3 | // full text of the license. 4 | 5 | using System; 6 | using System.ComponentModel; 7 | using System.Windows; 8 | 9 | namespace FileSharper 10 | { 11 | /// 12 | /// Interaction logic for MainWindow.xaml 13 | /// 14 | public partial class MainWindow : Window 15 | { 16 | public MainWindow() 17 | { 18 | FileSharperUtil.LoadAssemblies(); 19 | InitializeComponent(); 20 | DataContext = new MainViewModel(); 21 | } 22 | 23 | protected override void OnClosing(CancelEventArgs e) 24 | { 25 | base.OnClosing(e); 26 | try 27 | { 28 | ((MainViewModel)DataContext)?.Settings?.Save(); 29 | } 30 | catch (Exception ex) 31 | { 32 | MessageBox.Show(this, "Error saving settings: " + ex.ToString()); 33 | } 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharper/ManageTemplatesControl.xaml.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018 Andrew Vardeman. Published under the MIT license. 2 | // See license.txt in the FileSharper distribution or repository for the 3 | // full text of the license. 4 | 5 | using System; 6 | using System.Collections.Generic; 7 | using System.Linq; 8 | using System.Text; 9 | using System.Threading.Tasks; 10 | using System.Windows; 11 | using System.Windows.Controls; 12 | using System.Windows.Data; 13 | using System.Windows.Documents; 14 | using System.Windows.Input; 15 | using System.Windows.Media; 16 | using System.Windows.Media.Imaging; 17 | using System.Windows.Navigation; 18 | using System.Windows.Shapes; 19 | 20 | namespace FileSharper 21 | { 22 | /// 23 | /// Interaction logic for ManageTemplatesControl.xaml 24 | /// 25 | public partial class ManageTemplatesControl : UserControl 26 | { 27 | public ManageTemplatesControl() 28 | { 29 | InitializeComponent(); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharper/PathHelpControl.xaml.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018 Andrew Vardeman. Published under the MIT license. 2 | // See license.txt in the FileSharper distribution or repository for the 3 | // full text of the license. 4 | 5 | using System.Windows.Controls; 6 | 7 | namespace FileSharper 8 | { 9 | /// 10 | /// Interaction logic for PathHelpControl.xaml 11 | /// 12 | public partial class PathHelpControl : UserControl 13 | { 14 | public PathHelpControl() 15 | { 16 | InitializeComponent(); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharper/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace FileSharper.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharper/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharper/Templates/01 Simple Search.fsh: -------------------------------------------------------------------------------- 1 | { 2 | "FileSourceExpanded": true, 3 | "ConditionExpanded": false, 4 | "FieldSourcesExpanded": false, 5 | "TestedProcessorsExpanded": false, 6 | "MatchedProcessorsExpanded": false, 7 | "FileSourceNode": { 8 | "FileSourceTypeName": "FileSharperCore.FileSources.DirectorySearchFileSource", 9 | "Description": "Searches through the specified directory for files matching the specified pattern.", 10 | "Parameters": { 11 | "Directory": "C:\\", 12 | "Recursive": true, 13 | "FilePattern": "*", 14 | "SearchOrder": "SystemDefault", 15 | "IncludeHidden": false, 16 | "IncludeSystem": false 17 | } 18 | }, 19 | "ConditionNode": { 20 | "ConditionTypeName": null, 21 | "Not": false, 22 | "Description": null, 23 | "Parameters": null, 24 | "ChildNodes": [] 25 | }, 26 | "FieldSourcesNode": { 27 | "FieldSourceNodes": [ 28 | { 29 | "FieldSourceTypeName": null, 30 | "Description": null, 31 | "Parameters": null 32 | } 33 | ] 34 | }, 35 | "TestedProcessorsNode": { 36 | "ProcessorNodes": [ 37 | { 38 | "ProcessorTypeName": null, 39 | "Description": null, 40 | "InputFileSource": "OriginalFile", 41 | "Parameters": null, 42 | "ChildProcessorsNode": null 43 | } 44 | ] 45 | }, 46 | "MatchedProcessorsNode": { 47 | "ProcessorNodes": [ 48 | { 49 | "ProcessorTypeName": null, 50 | "Description": null, 51 | "InputFileSource": "OriginalFile", 52 | "Parameters": null, 53 | "ChildProcessorsNode": null 54 | } 55 | ] 56 | }, 57 | "LimitMatches": false, 58 | "MaxToMatch": 1000, 59 | "MaxResultsDisplayed": 200, 60 | "MaxExceptionsDisplayed": 20 61 | } -------------------------------------------------------------------------------- /src/FileSharper/FileSharper/Templates/02 Regex Replace.fsh: -------------------------------------------------------------------------------- 1 | { 2 | "FileSourceExpanded": true, 3 | "ConditionExpanded": false, 4 | "FieldSourcesExpanded": false, 5 | "TestedProcessorsExpanded": false, 6 | "MatchedProcessorsExpanded": true, 7 | "FileSourceNode": { 8 | "FileSourceTypeName": "FileSharperCore.FileSources.DirectorySearchFileSource", 9 | "Description": "Searches through the specified directory for files matching the specified pattern.", 10 | "Parameters": { 11 | "Directory": "ENTER A DIRECTORY", 12 | "Recursive": true, 13 | "FilePattern": "*.txt", 14 | "SearchOrder": "SystemDefault", 15 | "IncludeHidden": false, 16 | "IncludeSystem": false 17 | } 18 | }, 19 | "ConditionNode": { 20 | "ConditionTypeName": null, 21 | "Not": false, 22 | "Description": null, 23 | "Parameters": null, 24 | "ChildNodes": [] 25 | }, 26 | "FieldSourcesNode": { 27 | "FieldSourceNodes": [ 28 | { 29 | "FieldSourceTypeName": null, 30 | "Description": null, 31 | "Parameters": null 32 | } 33 | ] 34 | }, 35 | "TestedProcessorsNode": { 36 | "ProcessorNodes": [ 37 | { 38 | "ProcessorTypeName": null, 39 | "Description": null, 40 | "InputFileSource": "OriginalFile", 41 | "Parameters": null, 42 | "ChildProcessorsNode": null 43 | } 44 | ] 45 | }, 46 | "MatchedProcessorsNode": { 47 | "ProcessorNodes": [ 48 | { 49 | "ProcessorTypeName": "FileSharperCore.Processors.Text.ReplaceTextProcessor", 50 | "Description": "Replace text, optionally using a regular expression", 51 | "InputFileSource": "OriginalFile", 52 | "Parameters": { 53 | "TextToMatch": "YOUR REGEX HERE", 54 | "ReplacementText": null, 55 | "MatchOnlyWithinSingleLine": true, 56 | "UseRegex": true, 57 | "RegexStartAndEndMatchPerLine": false, 58 | "RegexDotMatchesNewline": false, 59 | "CaseSensitive": false, 60 | "LineEndings": "SystemDefault", 61 | "OutputEncoding": "MatchInput", 62 | "FileName": "{DirectoryName}\\{NameWithoutExtension}{Extension}", 63 | "OverwriteExistingFile": true, 64 | "MoveOriginalToRecycleBin": true 65 | }, 66 | "ChildProcessorsNode": null 67 | } 68 | ] 69 | }, 70 | "LimitMatches": false, 71 | "MaxToMatch": 1000, 72 | "MaxResultsDisplayed": 200, 73 | "MaxExceptionsDisplayed": 20 74 | } -------------------------------------------------------------------------------- /src/FileSharper/FileSharper/app.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharper/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/CommandLineProcessorTests/RunsCommandLine/BasicTextFile.txt: -------------------------------------------------------------------------------- 1 | This is a text file. 2 | 3 | It is a basic text file. 4 | Some of the lines are close together like this. 5 | 6 | 7 | 8 | 9 | 10 | Some of the lines are far apart, like this. 11 | 12 | 13 | 14 | This file ends with a new line, as all good UNIX text files should. 15 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/CopyFileProcessorTests/DoesNotOverwrite/out.txt: -------------------------------------------------------------------------------- 1 | This file will not be overwritten. -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/CopyFileProcessorTests/Overwrites/out.txt: -------------------------------------------------------------------------------- 1 | This is a text file. 2 | 3 | It is a basic text file. 4 | Some of the lines are close together like this. 5 | 6 | 7 | 8 | 9 | 10 | Some of the lines are far apart, like this. 11 | 12 | 13 | 14 | This file ends with a new line, as all good UNIX text files should. 15 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/CopyFileProcessorTests/Success/out.txt: -------------------------------------------------------------------------------- 1 | This is a text file. 2 | 3 | It is a basic text file. 4 | Some of the lines are close together like this. 5 | 6 | 7 | 8 | 9 | 10 | Some of the lines are far apart, like this. 11 | 12 | 13 | 14 | This file ends with a new line, as all good UNIX text files should. 15 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/CreateOrUpdateFileProcessorTests/CreatesFile/out.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/CreateOrUpdateFileProcessorTests/CreatesFile/out.txt -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/CreateOrUpdateFileProcessorTests/DoesNotUpdateDate/out.txt: -------------------------------------------------------------------------------- 1 | This file will not have its date updated. -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/CreateOrUpdateFileProcessorTests/ExceptionUpdatingDate/out.txt: -------------------------------------------------------------------------------- 1 | This file will have its date updated. -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/CreateOrUpdateFileProcessorTests/UpdatesDate/out.txt: -------------------------------------------------------------------------------- 1 | This file will have its date updated. -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/CsvProcessorTests/ClassicMacOS/ClassicMacOS.csv: -------------------------------------------------------------------------------- 1 | Path,Filename,Matches,foo,bar,baz,hello,world \\Mac\Home\Documents\GitHub\FileSharper\src\FileSharper\FileSharperCore.Tests\TestFiles,BasicTextFile.txt,Yes,a,b,c,d,e \\Mac\Home\Documents\GitHub\FileSharper\src\FileSharper\FileSharperCore.Tests\TestFiles,TextFileWithNewlines.txt,No,q,w,e,r,t -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/CsvProcessorTests/FullPath/FullPath.csv: -------------------------------------------------------------------------------- 1 | Filename,Matches,foo,bar,baz,hello,world 2 | \\Mac\Home\Documents\GitHub\FileSharper\src\FileSharper\FileSharperCore.Tests\TestFiles\BasicTextFile.txt,Yes,a,b,c,d,e 3 | \\Mac\Home\Documents\GitHub\FileSharper\src\FileSharper\FileSharperCore.Tests\TestFiles\TextFileWithNewlines.txt,No,q,w,e,r,t 4 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/CsvProcessorTests/NameThenDirectory/NameThenDirectory.csv: -------------------------------------------------------------------------------- 1 | Filename,Path,Matches,foo,bar,baz,hello,world 2 | BasicTextFile.txt,\\Mac\Home\Documents\GitHub\FileSharper\src\FileSharper\FileSharperCore.Tests\TestFiles,Yes,a,b,c,d,e 3 | TextFileWithNewlines.txt,\\Mac\Home\Documents\GitHub\FileSharper\src\FileSharper\FileSharperCore.Tests\TestFiles,No,q,w,e,r,t 4 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/CsvProcessorTests/Unix/Unix.csv: -------------------------------------------------------------------------------- 1 | Path,Filename,Matches,foo,bar,baz,hello,world 2 | \\Mac\Home\Documents\GitHub\FileSharper\src\FileSharper\FileSharperCore.Tests\TestFiles,BasicTextFile.txt,Yes,a,b,c,d,e 3 | \\Mac\Home\Documents\GitHub\FileSharper\src\FileSharper\FileSharperCore.Tests\TestFiles,TextFileWithNewlines.txt,No,q,w,e,r,t 4 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/CsvProcessorTests/Windows/Windows.csv: -------------------------------------------------------------------------------- 1 | Path,Filename,Matches,foo,bar,baz,hello,world 2 | \\Mac\Home\Documents\GitHub\FileSharper\src\FileSharper\FileSharperCore.Tests\TestFiles,BasicTextFile.txt,Yes,a,b,c,d,e 3 | \\Mac\Home\Documents\GitHub\FileSharper\src\FileSharper\FileSharperCore.Tests\TestFiles,TextFileWithNewlines.txt,No,q,w,e,r,t 4 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/FileDateProcessorTests/FailsWhenFileLocked/out.txt: -------------------------------------------------------------------------------- 1 | This file will not have its date set. -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/FileDateProcessorTests/SetsAccessedDate/out.txt: -------------------------------------------------------------------------------- 1 | This file will have its date set. -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/FileDateProcessorTests/SetsCreatedDate/out.txt: -------------------------------------------------------------------------------- 1 | This file will have its date set. -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/FileDateProcessorTests/SetsModificationDate/out.txt: -------------------------------------------------------------------------------- 1 | This file will have its date set. -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/FilterLinesProcessorTests/FailsFileExists/out.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/FilterLinesProcessorTests/FailsFileExists/out.txt -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/FilterLinesProcessorTests/FailsFileInUse/out.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/FilterLinesProcessorTests/FailsFileInUse/out.txt -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/FilterLinesProcessorTests/SuccessCaseInsensitiveNoRegex/out.txt: -------------------------------------------------------------------------------- 1 | Vivamus interdum lobortis semper. 2 | Vivamus eu ullamcorper erat. 3 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/FilterLinesProcessorTests/SuccessCaseInsensitiveRegex/out.txt: -------------------------------------------------------------------------------- 1 | Vivamus interdum lobortis semper. 2 | Vivamus eu ullamcorper erat. 3 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/FilterLinesProcessorTests/SuccessCaseSensitiveNoRegex/out.txt: -------------------------------------------------------------------------------- 1 |  2 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/FilterLinesProcessorTests/SuccessCaseSensitiveRegex/out.txt: -------------------------------------------------------------------------------- 1 |  2 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/FilterLinesProcessorTests/SuccessKeepNoRegex/out.txt: -------------------------------------------------------------------------------- 1 | Lorem ipsum dolor sit amet, 2 | consectetur adipiscing elit. 3 | in volutpat nisl consectetur et. 4 | Orci varius natoque penatibus et magnis dis parturient montes, 5 | nascetur ridiculus mus. 6 | Vestibulum maximus nulla pretium est fringilla placerat. 7 | Fusce sit amet erat a mi vehicula bibendum. 8 | Vestibulum vulputate mi eget est laoreet, 9 | id porttitor est pharetra. 10 | Quisque eget ligula auctor elit faucibus lacinia. 11 | Nunc sit amet maximus leo. 12 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/FilterLinesProcessorTests/SuccessKeepRegex/out.txt: -------------------------------------------------------------------------------- 1 | Lorem ipsum dolor sit amet, 2 | Orci varius natoque penatibus et magnis dis parturient montes, 3 | Vestibulum vulputate mi eget est laoreet, 4 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/FilterLinesProcessorTests/SuccessNoTrailingNewline/out.txt: -------------------------------------------------------------------------------- 1 | This text file has two lines of text 2 | and no trailing newline. -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/FilterLinesProcessorTests/SuccessRemoveNoRegex/out.txt: -------------------------------------------------------------------------------- 1 | Curabitur ac ipsum at purus malesuada sagittis. 2 | Vivamus interdum lobortis semper. 3 | Cras vestibulum eleifend dolor, 4 | Sed id est sem. 5 | Morbi ut orci est. 6 | Sed ornare ullamcorper magna, 7 | eu commodo sem. 8 | Pellentesque eros quam, 9 | tristique non maximus a, 10 | pellentesque ac dolor. 11 | Vivamus eu ullamcorper erat. 12 | Curabitur euismod dui sed felis pulvinar euismod. 13 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/FilterLinesProcessorTests/SuccessRemoveRegex/out.txt: -------------------------------------------------------------------------------- 1 | consectetur adipiscing elit. 2 | Curabitur ac ipsum at purus malesuada sagittis. 3 | Vivamus interdum lobortis semper. 4 | Cras vestibulum eleifend dolor, 5 | in volutpat nisl consectetur et. 6 | Sed id est sem. 7 | nascetur ridiculus mus. 8 | Vestibulum maximus nulla pretium est fringilla placerat. 9 | Morbi ut orci est. 10 | Sed ornare ullamcorper magna, 11 | eu commodo sem. 12 | Pellentesque eros quam, 13 | tristique non maximus a, 14 | pellentesque ac dolor. 15 | Fusce sit amet erat a mi vehicula bibendum. 16 | Vivamus eu ullamcorper erat. 17 | id porttitor est pharetra. 18 | Quisque eget ligula auctor elit faucibus lacinia. 19 | Nunc sit amet maximus leo. 20 | Curabitur euismod dui sed felis pulvinar euismod. 21 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ImageResizeProcessorTests/Height100Jpeg/out.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/ImageResizeProcessorTests/Height100Jpeg/out.jpg -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ImageResizeProcessorTests/Height900Jpeg/out.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/ImageResizeProcessorTests/Height900Jpeg/out.jpg -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ImageResizeProcessorTests/ResizeBeetleOverwriteFalse/out.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/ImageResizeProcessorTests/ResizeBeetleOverwriteFalse/out.jpg -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ImageResizeProcessorTests/ResizeBeetleOverwriteTrueFailure/out.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/ImageResizeProcessorTests/ResizeBeetleOverwriteTrueFailure/out.jpg -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ImageResizeProcessorTests/ResizeBeetleOverwriteTrueSuccess/out.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/ImageResizeProcessorTests/ResizeBeetleOverwriteTrueSuccess/out.jpg -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ImageResizeProcessorTests/Width100Bmp/out.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/ImageResizeProcessorTests/Width100Bmp/out.bmp -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ImageResizeProcessorTests/Width100Exif/out.exif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/ImageResizeProcessorTests/Width100Exif/out.exif -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ImageResizeProcessorTests/Width100Gif/out.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/ImageResizeProcessorTests/Width100Gif/out.gif -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ImageResizeProcessorTests/Width100Jpeg/out.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/ImageResizeProcessorTests/Width100Jpeg/out.jpg -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ImageResizeProcessorTests/Width100Png/out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/ImageResizeProcessorTests/Width100Png/out.png -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ImageResizeProcessorTests/Width100Tiff/out.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/ImageResizeProcessorTests/Width100Tiff/out.tif -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ImageResizeProcessorTests/Width1200Jpeg/out.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/ImageResizeProcessorTests/Width1200Jpeg/out.jpg -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ImageResizeProcessorTests/out.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/ImageResizeProcessorTests/out.jpg -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/LineProcessorTests/FailsExistingFile/out.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/LineProcessorTests/FailsExistingFile/out.txt -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/LineProcessorTests/FailsFileInUse/out.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/LineProcessorTests/FailsFileInUse/out.txt -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/LineProcessorTests/SucceedsExistingFile/out.txt: -------------------------------------------------------------------------------- 1 | The transformed line 2 | The transformed line 3 | The transformed line 4 | The transformed line 5 | The transformed line 6 | The transformed line 7 | The transformed line 8 | The transformed line 9 | The transformed line 10 | The transformed line 11 | The transformed line 12 | The transformed line 13 | The transformed line 14 | The transformed line 15 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/LineProcessorTests/Success/out.txt: -------------------------------------------------------------------------------- 1 | The transformed line 2 | The transformed line 3 | The transformed line 4 | The transformed line 5 | The transformed line 6 | The transformed line 7 | The transformed line 8 | The transformed line 9 | The transformed line 10 | The transformed line 11 | The transformed line 12 | The transformed line 13 | The transformed line 14 | The transformed line 15 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/LineProcessorTests/SuccessClassicMacOS/out.txt: -------------------------------------------------------------------------------- 1 | The transformed line The transformed line The transformed line The transformed line The transformed line The transformed line The transformed line The transformed line The transformed line The transformed line The transformed line The transformed line The transformed line The transformed line -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/LineProcessorTests/SuccessMatchInput/out.txt: -------------------------------------------------------------------------------- 1 | The transformed line 2 | The transformed line 3 | The transformed line 4 | The transformed line 5 | The transformed line 6 | The transformed line 7 | The transformed line 8 | The transformed line 9 | The transformed line 10 | The transformed line 11 | The transformed line 12 | The transformed line 13 | The transformed line 14 | The transformed line 15 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/LineProcessorTests/SuccessNoTrailingNewline/out.txt: -------------------------------------------------------------------------------- 1 | The transformed line 2 | The transformed line -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/LineProcessorTests/SuccessUnix/out.txt: -------------------------------------------------------------------------------- 1 | The transformed line 2 | The transformed line 3 | The transformed line 4 | The transformed line 5 | The transformed line 6 | The transformed line 7 | The transformed line 8 | The transformed line 9 | The transformed line 10 | The transformed line 11 | The transformed line 12 | The transformed line 13 | The transformed line 14 | The transformed line 15 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/LineProcessorTests/SuccessUtf16/out.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/LineProcessorTests/SuccessUtf16/out.txt -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/LineProcessorTests/SuccessWindows/out.txt: -------------------------------------------------------------------------------- 1 | The transformed line 2 | The transformed line 3 | The transformed line 4 | The transformed line 5 | The transformed line 6 | The transformed line 7 | The transformed line 8 | The transformed line 9 | The transformed line 10 | The transformed line 11 | The transformed line 12 | The transformed line 13 | The transformed line 14 | The transformed line 15 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/PrependOrAppendTextProcessorTests/AppendOneNewlineSuccess/out.txt: -------------------------------------------------------------------------------- 1 | Lorem ipsum dolor sit amet, 2 | consectetur adipiscing elit. 3 | Curabitur ac ipsum at purus malesuada sagittis. 4 | Vivamus interdum lobortis semper. 5 | Cras vestibulum eleifend dolor, 6 | in volutpat nisl consectetur et. 7 | Sed id est sem. 8 | Orci varius natoque penatibus et magnis dis parturient montes, 9 | nascetur ridiculus mus. 10 | Vestibulum maximus nulla pretium est fringilla placerat. 11 | Morbi ut orci est. 12 | Sed ornare ullamcorper magna, 13 | eu commodo sem. 14 | Pellentesque eros quam, 15 | tristique non maximus a, 16 | pellentesque ac dolor. 17 | Fusce sit amet erat a mi vehicula bibendum. 18 | Vivamus eu ullamcorper erat. 19 | Vestibulum vulputate mi eget est laoreet, 20 | id porttitor est pharetra. 21 | Quisque eget ligula auctor elit faucibus lacinia. 22 | Nunc sit amet maximus leo. 23 | Curabitur euismod dui sed felis pulvinar euismod. 24 | foo bar baz 25 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/PrependOrAppendTextProcessorTests/AppendSuccess/out.txt: -------------------------------------------------------------------------------- 1 | Lorem ipsum dolor sit amet, 2 | consectetur adipiscing elit. 3 | Curabitur ac ipsum at purus malesuada sagittis. 4 | Vivamus interdum lobortis semper. 5 | Cras vestibulum eleifend dolor, 6 | in volutpat nisl consectetur et. 7 | Sed id est sem. 8 | Orci varius natoque penatibus et magnis dis parturient montes, 9 | nascetur ridiculus mus. 10 | Vestibulum maximus nulla pretium est fringilla placerat. 11 | Morbi ut orci est. 12 | Sed ornare ullamcorper magna, 13 | eu commodo sem. 14 | Pellentesque eros quam, 15 | tristique non maximus a, 16 | pellentesque ac dolor. 17 | Fusce sit amet erat a mi vehicula bibendum. 18 | Vivamus eu ullamcorper erat. 19 | Vestibulum vulputate mi eget est laoreet, 20 | id porttitor est pharetra. 21 | Quisque eget ligula auctor elit faucibus lacinia. 22 | Nunc sit amet maximus leo. 23 | Curabitur euismod dui sed felis pulvinar euismod. 24 | foo bar baz -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/PrependOrAppendTextProcessorTests/AppendTwoNewlineSuccess/out.txt: -------------------------------------------------------------------------------- 1 | Lorem ipsum dolor sit amet, 2 | consectetur adipiscing elit. 3 | Curabitur ac ipsum at purus malesuada sagittis. 4 | Vivamus interdum lobortis semper. 5 | Cras vestibulum eleifend dolor, 6 | in volutpat nisl consectetur et. 7 | Sed id est sem. 8 | Orci varius natoque penatibus et magnis dis parturient montes, 9 | nascetur ridiculus mus. 10 | Vestibulum maximus nulla pretium est fringilla placerat. 11 | Morbi ut orci est. 12 | Sed ornare ullamcorper magna, 13 | eu commodo sem. 14 | Pellentesque eros quam, 15 | tristique non maximus a, 16 | pellentesque ac dolor. 17 | Fusce sit amet erat a mi vehicula bibendum. 18 | Vivamus eu ullamcorper erat. 19 | Vestibulum vulputate mi eget est laoreet, 20 | id porttitor est pharetra. 21 | Quisque eget ligula auctor elit faucibus lacinia. 22 | Nunc sit amet maximus leo. 23 | Curabitur euismod dui sed felis pulvinar euismod. 24 | foo bar baz 25 | 26 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/PrependOrAppendTextProcessorTests/FailsFileExists/out.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/PrependOrAppendTextProcessorTests/FailsFileExists/out.txt -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/PrependOrAppendTextProcessorTests/FailsFileInUse/out.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/PrependOrAppendTextProcessorTests/FailsFileInUse/out.txt -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/PrependOrAppendTextProcessorTests/PrependClassicMacOSSuccess/out.txt: -------------------------------------------------------------------------------- 1 | foo bar bazLorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur ac ipsum at purus malesuada sagittis. Vivamus interdum lobortis semper. Cras vestibulum eleifend dolor, in volutpat nisl consectetur et. Sed id est sem. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vestibulum maximus nulla pretium est fringilla placerat. Morbi ut orci est. Sed ornare ullamcorper magna, eu commodo sem. Pellentesque eros quam, tristique non maximus a, pellentesque ac dolor. Fusce sit amet erat a mi vehicula bibendum. Vivamus eu ullamcorper erat. Vestibulum vulputate mi eget est laoreet, id porttitor est pharetra. Quisque eget ligula auctor elit faucibus lacinia. Nunc sit amet maximus leo. Curabitur euismod dui sed felis pulvinar euismod. -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/PrependOrAppendTextProcessorTests/PrependOneNewlineSuccess/out.txt: -------------------------------------------------------------------------------- 1 | foo bar baz 2 | Lorem ipsum dolor sit amet, 3 | consectetur adipiscing elit. 4 | Curabitur ac ipsum at purus malesuada sagittis. 5 | Vivamus interdum lobortis semper. 6 | Cras vestibulum eleifend dolor, 7 | in volutpat nisl consectetur et. 8 | Sed id est sem. 9 | Orci varius natoque penatibus et magnis dis parturient montes, 10 | nascetur ridiculus mus. 11 | Vestibulum maximus nulla pretium est fringilla placerat. 12 | Morbi ut orci est. 13 | Sed ornare ullamcorper magna, 14 | eu commodo sem. 15 | Pellentesque eros quam, 16 | tristique non maximus a, 17 | pellentesque ac dolor. 18 | Fusce sit amet erat a mi vehicula bibendum. 19 | Vivamus eu ullamcorper erat. 20 | Vestibulum vulputate mi eget est laoreet, 21 | id porttitor est pharetra. 22 | Quisque eget ligula auctor elit faucibus lacinia. 23 | Nunc sit amet maximus leo. 24 | Curabitur euismod dui sed felis pulvinar euismod. 25 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/PrependOrAppendTextProcessorTests/PrependSuccess/out.txt: -------------------------------------------------------------------------------- 1 | foo bar bazLorem ipsum dolor sit amet, 2 | consectetur adipiscing elit. 3 | Curabitur ac ipsum at purus malesuada sagittis. 4 | Vivamus interdum lobortis semper. 5 | Cras vestibulum eleifend dolor, 6 | in volutpat nisl consectetur et. 7 | Sed id est sem. 8 | Orci varius natoque penatibus et magnis dis parturient montes, 9 | nascetur ridiculus mus. 10 | Vestibulum maximus nulla pretium est fringilla placerat. 11 | Morbi ut orci est. 12 | Sed ornare ullamcorper magna, 13 | eu commodo sem. 14 | Pellentesque eros quam, 15 | tristique non maximus a, 16 | pellentesque ac dolor. 17 | Fusce sit amet erat a mi vehicula bibendum. 18 | Vivamus eu ullamcorper erat. 19 | Vestibulum vulputate mi eget est laoreet, 20 | id porttitor est pharetra. 21 | Quisque eget ligula auctor elit faucibus lacinia. 22 | Nunc sit amet maximus leo. 23 | Curabitur euismod dui sed felis pulvinar euismod. 24 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/PrependOrAppendTextProcessorTests/PrependTwoNewlineSuccess/out.txt: -------------------------------------------------------------------------------- 1 | foo bar baz 2 | 3 | Lorem ipsum dolor sit amet, 4 | consectetur adipiscing elit. 5 | Curabitur ac ipsum at purus malesuada sagittis. 6 | Vivamus interdum lobortis semper. 7 | Cras vestibulum eleifend dolor, 8 | in volutpat nisl consectetur et. 9 | Sed id est sem. 10 | Orci varius natoque penatibus et magnis dis parturient montes, 11 | nascetur ridiculus mus. 12 | Vestibulum maximus nulla pretium est fringilla placerat. 13 | Morbi ut orci est. 14 | Sed ornare ullamcorper magna, 15 | eu commodo sem. 16 | Pellentesque eros quam, 17 | tristique non maximus a, 18 | pellentesque ac dolor. 19 | Fusce sit amet erat a mi vehicula bibendum. 20 | Vivamus eu ullamcorper erat. 21 | Vestibulum vulputate mi eget est laoreet, 22 | id porttitor est pharetra. 23 | Quisque eget ligula auctor elit faucibus lacinia. 24 | Nunc sit amet maximus leo. 25 | Curabitur euismod dui sed felis pulvinar euismod. 26 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/PrependOrAppendTextProcessorTests/PrependUtf16Success/out.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/PrependOrAppendTextProcessorTests/PrependUtf16Success/out.txt -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/PrependOrAppendTextProcessorTests/SucceedsFileExists/out.txt: -------------------------------------------------------------------------------- 1 | foo bar bazLorem ipsum dolor sit amet, 2 | consectetur adipiscing elit. 3 | Curabitur ac ipsum at purus malesuada sagittis. 4 | Vivamus interdum lobortis semper. 5 | Cras vestibulum eleifend dolor, 6 | in volutpat nisl consectetur et. 7 | Sed id est sem. 8 | Orci varius natoque penatibus et magnis dis parturient montes, 9 | nascetur ridiculus mus. 10 | Vestibulum maximus nulla pretium est fringilla placerat. 11 | Morbi ut orci est. 12 | Sed ornare ullamcorper magna, 13 | eu commodo sem. 14 | Pellentesque eros quam, 15 | tristique non maximus a, 16 | pellentesque ac dolor. 17 | Fusce sit amet erat a mi vehicula bibendum. 18 | Vivamus eu ullamcorper erat. 19 | Vestibulum vulputate mi eget est laoreet, 20 | id porttitor est pharetra. 21 | Quisque eget ligula auctor elit faucibus lacinia. 22 | Nunc sit amet maximus leo. 23 | Curabitur euismod dui sed felis pulvinar euismod. 24 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ProcessorBaseTests/CopyAndDeleteTempFile_DoesNotOverwrite/out.txt: -------------------------------------------------------------------------------- 1 | This file will not be overwritten. -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ProcessorBaseTests/CopyAndDeleteTempFile_MovesToRecycleBin/out.txt: -------------------------------------------------------------------------------- 1 | This is the final text. -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ProcessorBaseTests/CopyAndDeleteTempFile_Overwrites/out.txt: -------------------------------------------------------------------------------- 1 | This is the final text. -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ProcessorBaseTests/CopyAndDeleteTempFile_Success/out.txt: -------------------------------------------------------------------------------- 1 | This is the output text. -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ProcessorBaseTests/GetProcessingResultFromCopyAndDeleteTempFile_Failure/out.txt: -------------------------------------------------------------------------------- 1 | This file will not be overwritten. -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ProcessorBaseTests/GetProcessingResultFromCopyAndDeleteTempFile_Successs/out.txt: -------------------------------------------------------------------------------- 1 | This is the final text. -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/RecycleProcessorTests/FailsWhenFileInUse/out.txt: -------------------------------------------------------------------------------- 1 | This file will not be moved to the Recycle Bin. -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/RemoveRepeatedLinesProcessorTests/FailsFileExists/out.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/RemoveRepeatedLinesProcessorTests/FailsFileExists/out.txt -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/RemoveRepeatedLinesProcessorTests/FailsFileInUse/out.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/RemoveRepeatedLinesProcessorTests/FailsFileInUse/out.txt -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/RemoveRepeatedLinesProcessorTests/SucceedsFileExists/out.txt: -------------------------------------------------------------------------------- 1 | Lorem ipsum dolor sit amet, 2 | consectetur adipiscing elit. 3 | Curabitur ac ipsum at purus malesuada sagittis. 4 | Vivamus interdum lobortis semper. 5 | Cras vestibulum eleifend dolor, 6 | in volutpat nisl consectetur et. 7 | Sed id est sem. 8 | Orci varius natoque penatibus et magnis dis parturient montes, 9 | nascetur ridiculus mus. 10 | Vestibulum maximus nulla pretium est fringilla placerat. 11 | Morbi ut orci est. 12 | Sed ornare ullamcorper magna, 13 | eu commodo sem. 14 | Pellentesque eros quam, 15 | tristique non maximus a, 16 | pellentesque ac dolor. 17 | Fusce sit amet erat a mi vehicula bibendum. 18 | Vivamus eu ullamcorper erat. 19 | Vestibulum vulputate mi eget est laoreet, 20 | id porttitor est pharetra. 21 | Quisque eget ligula auctor elit faucibus lacinia. 22 | Nunc sit amet maximus leo. 23 | Curabitur euismod dui sed felis pulvinar euismod. 24 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/RemoveRepeatedLinesProcessorTests/Success/out.txt: -------------------------------------------------------------------------------- 1 | Lorem ipsum dolor sit amet, 2 | consectetur adipiscing elit. 3 | Curabitur ac ipsum at purus malesuada sagittis. 4 | Vivamus interdum lobortis semper. 5 | Cras vestibulum eleifend dolor, 6 | in volutpat nisl consectetur et. 7 | Sed id est sem. 8 | Orci varius natoque penatibus et magnis dis parturient montes, 9 | nascetur ridiculus mus. 10 | Vestibulum maximus nulla pretium est fringilla placerat. 11 | Morbi ut orci est. 12 | Sed ornare ullamcorper magna, 13 | eu commodo sem. 14 | Pellentesque eros quam, 15 | tristique non maximus a, 16 | pellentesque ac dolor. 17 | Fusce sit amet erat a mi vehicula bibendum. 18 | Vivamus eu ullamcorper erat. 19 | Vestibulum vulputate mi eget est laoreet, 20 | id porttitor est pharetra. 21 | Quisque eget ligula auctor elit faucibus lacinia. 22 | Nunc sit amet maximus leo. 23 | Curabitur euismod dui sed felis pulvinar euismod. 24 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/RemoveRepeatedLinesProcessorTests/SuccessClassicMacOS/out.txt: -------------------------------------------------------------------------------- 1 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur ac ipsum at purus malesuada sagittis. Vivamus interdum lobortis semper. Cras vestibulum eleifend dolor, in volutpat nisl consectetur et. Sed id est sem. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vestibulum maximus nulla pretium est fringilla placerat. Morbi ut orci est. Sed ornare ullamcorper magna, eu commodo sem. Pellentesque eros quam, tristique non maximus a, pellentesque ac dolor. Fusce sit amet erat a mi vehicula bibendum. Vivamus eu ullamcorper erat. Vestibulum vulputate mi eget est laoreet, id porttitor est pharetra. Quisque eget ligula auctor elit faucibus lacinia. Nunc sit amet maximus leo. Curabitur euismod dui sed felis pulvinar euismod. -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/RemoveRepeatedLinesProcessorTests/SuccessNoTrailingNewline/out.txt: -------------------------------------------------------------------------------- 1 | Lorem ipsum dolor sit amet, 2 | consectetur adipiscing elit. 3 | Curabitur ac ipsum at purus malesuada sagittis. 4 | Vivamus interdum lobortis semper. 5 | Cras vestibulum eleifend dolor, 6 | in volutpat nisl consectetur et. 7 | Sed id est sem. 8 | Orci varius natoque penatibus et magnis dis parturient montes, 9 | nascetur ridiculus mus. 10 | Vestibulum maximus nulla pretium est fringilla placerat. 11 | Morbi ut orci est. 12 | Sed ornare ullamcorper magna, 13 | eu commodo sem. 14 | Pellentesque eros quam, 15 | tristique non maximus a, 16 | pellentesque ac dolor. 17 | Fusce sit amet erat a mi vehicula bibendum. 18 | Vivamus eu ullamcorper erat. 19 | Vestibulum vulputate mi eget est laoreet, 20 | id porttitor est pharetra. 21 | Quisque eget ligula auctor elit faucibus lacinia. 22 | Nunc sit amet maximus leo. 23 | Curabitur euismod dui sed felis pulvinar euismod. -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/RemoveRepeatedLinesProcessorTests/SuccessUtf16/out.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/RemoveRepeatedLinesProcessorTests/SuccessUtf16/out.txt -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ZipProcessorTests/GeneratedFiles_PerGeneratedFile/TextFile1ForZip.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/ZipProcessorTests/GeneratedFiles_PerGeneratedFile/TextFile1ForZip.zip -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ZipProcessorTests/GeneratedFiles_PerGeneratedFile/TextFile2ForZip.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/ZipProcessorTests/GeneratedFiles_PerGeneratedFile/TextFile2ForZip.zip -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ZipProcessorTests/GeneratedFiles_PerGeneratedFile/TextFile3ForZip.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/ZipProcessorTests/GeneratedFiles_PerGeneratedFile/TextFile3ForZip.zip -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ZipProcessorTests/GeneratedFiles_PerInputFile/BasicTextFile.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/ZipProcessorTests/GeneratedFiles_PerInputFile/BasicTextFile.zip -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ZipProcessorTests/OneZipPerSearch/output.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/ZipProcessorTests/OneZipPerSearch/output.zip -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ZipProcessorTests/OneZipPerSearch_AddContainingFolder/output.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/ZipProcessorTests/OneZipPerSearch_AddContainingFolder/output.zip -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ZipProcessorTests/OneZipPerSearch_DoesNotOverwrite/output.zip: -------------------------------------------------------------------------------- 1 | This file will not be replaced. Also it's not really a zip file. -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ZipProcessorTests/OneZipPerSearch_Overwrites/output.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/ZipProcessorTests/OneZipPerSearch_Overwrites/output.zip -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ZipProcessorTests/SingleFiles/TextFile1ForZip.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/ZipProcessorTests/SingleFiles/TextFile1ForZip.zip -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ZipProcessorTests/SingleFiles/TextFile2ForZip.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/ZipProcessorTests/SingleFiles/TextFile2ForZip.zip -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ZipProcessorTests/SingleFiles/TextFile3ForZip.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/ZipProcessorTests/SingleFiles/TextFile3ForZip.zip -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ZipProcessorTests/SingleFiles_AddContainingFolder/TextFile1ForZip.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/ZipProcessorTests/SingleFiles_AddContainingFolder/TextFile1ForZip.zip -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ZipProcessorTests/SingleFiles_AddContainingFolder/TextFile2ForZip.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/ZipProcessorTests/SingleFiles_AddContainingFolder/TextFile2ForZip.zip -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/ExpectedResults/ZipProcessorTests/SingleFiles_AddContainingFolder/TextFile3ForZip.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/ExpectedResults/ZipProcessorTests/SingleFiles_AddContainingFolder/TextFile3ForZip.zip -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/Processors/DoNothingProcessorTests.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2019 Andrew Vardeman. Published under the MIT license. 2 | // See license.txt in the FileSharper distribution or repository for the 3 | // full text of the license. 4 | 5 | using System.IO; 6 | using System.Threading; 7 | using FileSharperCore.Processors; 8 | using Microsoft.VisualStudio.TestTools.UnitTesting; 9 | 10 | namespace FileSharperCore.Tests.Processors 11 | { 12 | [TestClass] 13 | public class DoNothingProcessorTests: TestBase 14 | { 15 | [TestMethod] 16 | public void Succeeds() 17 | { 18 | DoNothingProcessor p = new DoNothingProcessor(); 19 | p.Init(RunInfo); 20 | FileInfo file = GetTestFile("BasicTextFile.txt"); 21 | ProcessingResult result = p.Process(file, MatchResultType.Yes, new string[0], new FileInfo[0], 22 | ProcessInput.OriginalFile, CancellationToken.None); 23 | Assert.AreEqual(ProcessingResultType.Success, result.Type); 24 | p.Cleanup(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/Processors/Filesystem/CreateDirectoryProcessorTests.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2019 Andrew Vardeman. Published under the MIT license. 2 | // See license.txt in the FileSharper distribution or repository for the 3 | // full text of the license. 4 | 5 | using System.IO; 6 | using System.Threading; 7 | using FileSharperCore.Processors.Filesystem; 8 | using Microsoft.VisualStudio.TestTools.UnitTesting; 9 | 10 | namespace FileSharperCore.Tests.Processors.Filesystem 11 | { 12 | [TestClass] 13 | public class CreateDirectoryProcessorTests : TestBase 14 | { 15 | [TestMethod] 16 | public void Success() 17 | { 18 | CreateDirectoryProcessor processor = new CreateDirectoryProcessor(); 19 | processor.SetParameter("DirectoryPath", GetCurrentTestResultsFilePath("Subdir")); 20 | FileInfo file = GetTestFile("BasicTextFile.txt"); 21 | processor.Init(RunInfo); 22 | ProcessingResult result = processor.Process(file, MatchResultType.Yes, 23 | new string[0], new FileInfo[0], ProcessInput.OriginalFile, 24 | CancellationToken.None); 25 | processor.Cleanup(); 26 | Assert.AreEqual(ProcessingResultType.Success, result.Type); 27 | Assert.AreEqual(0, result.OutputFiles.Length); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/Processors/Filesystem/RecycleProcessorTests.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2019 Andrew Vardeman. Published under the MIT license. 2 | // See license.txt in the FileSharper distribution or repository for the 3 | // full text of the license. 4 | 5 | using System.IO; 6 | using System.Threading; 7 | using FileSharperCore.Processors.Filesystem; 8 | using Microsoft.VisualStudio.TestTools.UnitTesting; 9 | 10 | namespace FileSharperCore.Tests.Processors.Filesystem 11 | { 12 | [TestClass] 13 | public class RecycleProcessorTests : TestBase 14 | { 15 | [TestMethod] 16 | public void RecyclesFile() 17 | { 18 | RecycleProcessor processor = new RecycleProcessor(); 19 | string outputPath = GetCurrentTestResultsFilePath("out.txt"); 20 | FileInfo outputFile = new FileInfo(outputPath); 21 | File.WriteAllText(outputPath, "This file will be moved to the Recycle Bin."); 22 | processor.Init(RunInfo); 23 | ProcessingResult result = processor.Process(outputFile, MatchResultType.Yes, 24 | new string[0], new FileInfo[0], ProcessInput.OriginalFile, CancellationToken.None); 25 | processor.Cleanup(); 26 | Assert.IsFalse(File.Exists(outputPath)); 27 | Assert.AreEqual(ProcessingResultType.Success, result.Type); 28 | Assert.AreEqual(0, result.OutputFiles.Length); 29 | } 30 | 31 | [TestMethod] 32 | public void FailsWhenFileInUse() 33 | { 34 | RecycleProcessor processor = new RecycleProcessor(); 35 | string outputPath = GetCurrentTestResultsFilePath("out.txt"); 36 | FileInfo outputFile = new FileInfo(outputPath); 37 | File.WriteAllText(outputPath, "This file will not be moved to the Recycle Bin."); 38 | ProcessingResult result; 39 | using (FileStream stream = File.OpenRead(outputPath)) 40 | { 41 | processor.Init(RunInfo); 42 | result = processor.Process(outputFile, MatchResultType.Yes, new string[0], 43 | new FileInfo[0], ProcessInput.OriginalFile, CancellationToken.None); 44 | processor.Cleanup(); 45 | } 46 | Assert.IsTrue(File.Exists(outputPath)); 47 | Assert.AreEqual(ProcessingResultType.Failure, result.Type); 48 | Assert.AreEqual(0, result.OutputFiles.Length); 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/Processors/Text/ChangeLineEndingsProcessorTests.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2019 Andrew Vardeman. Published under the MIT license. 2 | // See license.txt in the FileSharper distribution or repository for the 3 | // full text of the license. 4 | 5 | using FileSharperCore.Processors.Text; 6 | using Microsoft.VisualStudio.TestTools.UnitTesting; 7 | 8 | namespace FileSharperCore.Tests.Processors.Text 9 | { 10 | [TestClass] 11 | public class ChangeLineEndingsProcessorTests : TestBase 12 | { 13 | [TestMethod] 14 | public void ExposesParameters() 15 | { 16 | // The use of these properties is tested in LineProcessorTests. 17 | // All we need to do here is verify that the parameters are 18 | // being exposed properly. 19 | 20 | ChangeLineEndingsProcessor processor = new ChangeLineEndingsProcessor(); 21 | 22 | processor.SetParameter("MoveOriginalToRecycleBin", true); 23 | Assert.AreEqual(true, processor.MoveOriginalToRecycleBin); 24 | 25 | processor.SetParameter("LineEndings", LineEndingsNoFile.ClassicMacOS); 26 | Assert.AreEqual(LineEndings.ClassicMacOS, processor.LineEndings); 27 | 28 | processor.SetParameter("OutputEncoding", OutputEncodingType.UTF16_LE); 29 | Assert.AreEqual(OutputEncodingType.UTF16_LE, processor.OutputEncodingType); 30 | 31 | processor.SetParameter("FileName", @"C:\foo.txt"); 32 | Assert.AreEqual(@"C:\foo.txt", processor.FileName); 33 | 34 | processor.SetParameter("OverwriteExistingFile", true); 35 | Assert.AreEqual(true, processor.OverwriteExistingFile); 36 | } 37 | 38 | [TestMethod] 39 | public void TransformLineSuccess() 40 | { 41 | ChangeLineEndingsProcessor processor = new ChangeLineEndingsProcessor(); 42 | processor.SetParameter("LineEndings", LineEndingsNoFile.ClassicMacOS); 43 | 44 | processor.Init(RunInfo); 45 | 46 | string line = "The quick brown fox jumps over the lazy dog."; 47 | string transformedLine = processor.TransformLine(line); 48 | Assert.AreEqual(line, transformedLine); 49 | 50 | processor.Cleanup(); 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018 Andrew Vardeman. Published under the MIT license. 2 | // See license.txt in the FileSharper distribution or repository for the 3 | // full text of the license. 4 | 5 | using System.Reflection; 6 | using System.Runtime.CompilerServices; 7 | using System.Runtime.InteropServices; 8 | 9 | [assembly: AssemblyTitle("FileSharperCore.Tests")] 10 | [assembly: AssemblyDescription("")] 11 | [assembly: AssemblyConfiguration("")] 12 | [assembly: AssemblyCompany("")] 13 | [assembly: AssemblyProduct("FileSharperCore.Tests")] 14 | [assembly: AssemblyCopyright("Copyright © 2018")] 15 | [assembly: AssemblyTrademark("")] 16 | [assembly: AssemblyCulture("")] 17 | 18 | [assembly: ComVisible(false)] 19 | 20 | [assembly: Guid("5c535cf6-2b91-450e-9e53-b8160c2dd6b3")] 21 | 22 | // [assembly: AssemblyVersion("1.0.*")] 23 | [assembly: AssemblyVersion("1.0.0.0")] 24 | [assembly: AssemblyFileVersion("1.0.0.0")] 25 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/TestFiles/BasicTextFile.txt: -------------------------------------------------------------------------------- 1 | This is a text file. 2 | 3 | It is a basic text file. 4 | Some of the lines are close together like this. 5 | 6 | 7 | 8 | 9 | 10 | Some of the lines are far apart, like this. 11 | 12 | 13 | 14 | This file ends with a new line, as all good UNIX text files should. 15 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/TestFiles/Lipsum.txt: -------------------------------------------------------------------------------- 1 | Lorem ipsum dolor sit amet, 2 | consectetur adipiscing elit. 3 | Curabitur ac ipsum at purus malesuada sagittis. 4 | Vivamus interdum lobortis semper. 5 | Cras vestibulum eleifend dolor, 6 | in volutpat nisl consectetur et. 7 | Sed id est sem. 8 | Orci varius natoque penatibus et magnis dis parturient montes, 9 | nascetur ridiculus mus. 10 | Vestibulum maximus nulla pretium est fringilla placerat. 11 | Morbi ut orci est. 12 | Sed ornare ullamcorper magna, 13 | eu commodo sem. 14 | Pellentesque eros quam, 15 | tristique non maximus a, 16 | pellentesque ac dolor. 17 | Fusce sit amet erat a mi vehicula bibendum. 18 | Vivamus eu ullamcorper erat. 19 | Vestibulum vulputate mi eget est laoreet, 20 | id porttitor est pharetra. 21 | Quisque eget ligula auctor elit faucibus lacinia. 22 | Nunc sit amet maximus leo. 23 | Curabitur euismod dui sed felis pulvinar euismod. 24 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/TestFiles/LipsumWithRepeatedLines.txt: -------------------------------------------------------------------------------- 1 | Lorem ipsum dolor sit amet, 2 | consectetur adipiscing elit. 3 | Curabitur ac ipsum at purus malesuada sagittis. 4 | Curabitur ac ipsum at purus malesuada sagittis. 5 | Curabitur ac ipsum at purus malesuada sagittis. 6 | Curabitur ac ipsum at purus malesuada sagittis. 7 | Vivamus interdum lobortis semper. 8 | Cras vestibulum eleifend dolor, 9 | in volutpat nisl consectetur et. 10 | Sed id est sem. 11 | Orci varius natoque penatibus et magnis dis parturient montes, 12 | nascetur ridiculus mus. 13 | Vestibulum maximus nulla pretium est fringilla placerat. 14 | Morbi ut orci est. 15 | Sed ornare ullamcorper magna, 16 | Sed ornare ullamcorper magna, 17 | eu commodo sem. 18 | Pellentesque eros quam, 19 | tristique non maximus a, 20 | pellentesque ac dolor. 21 | Fusce sit amet erat a mi vehicula bibendum. 22 | Fusce sit amet erat a mi vehicula bibendum. 23 | Fusce sit amet erat a mi vehicula bibendum. 24 | Vivamus eu ullamcorper erat. 25 | Vestibulum vulputate mi eget est laoreet, 26 | id porttitor est pharetra. 27 | Quisque eget ligula auctor elit faucibus lacinia. 28 | Nunc sit amet maximus leo. 29 | Curabitur euismod dui sed felis pulvinar euismod. 30 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/TestFiles/LipsumWithRepeatedLinesAndNoTrailingNewline.txt: -------------------------------------------------------------------------------- 1 | Lorem ipsum dolor sit amet, 2 | consectetur adipiscing elit. 3 | Curabitur ac ipsum at purus malesuada sagittis. 4 | Curabitur ac ipsum at purus malesuada sagittis. 5 | Curabitur ac ipsum at purus malesuada sagittis. 6 | Curabitur ac ipsum at purus malesuada sagittis. 7 | Vivamus interdum lobortis semper. 8 | Cras vestibulum eleifend dolor, 9 | in volutpat nisl consectetur et. 10 | Sed id est sem. 11 | Orci varius natoque penatibus et magnis dis parturient montes, 12 | nascetur ridiculus mus. 13 | Vestibulum maximus nulla pretium est fringilla placerat. 14 | Morbi ut orci est. 15 | Sed ornare ullamcorper magna, 16 | Sed ornare ullamcorper magna, 17 | eu commodo sem. 18 | Pellentesque eros quam, 19 | tristique non maximus a, 20 | pellentesque ac dolor. 21 | Fusce sit amet erat a mi vehicula bibendum. 22 | Fusce sit amet erat a mi vehicula bibendum. 23 | Fusce sit amet erat a mi vehicula bibendum. 24 | Vivamus eu ullamcorper erat. 25 | Vestibulum vulputate mi eget est laoreet, 26 | id porttitor est pharetra. 27 | Quisque eget ligula auctor elit faucibus lacinia. 28 | Nunc sit amet maximus leo. 29 | Curabitur euismod dui sed felis pulvinar euismod. -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/TestFiles/TextFileWithNewlines.txt: -------------------------------------------------------------------------------- 1 | This line is the first line. 2 | This line is the second line. 3 | 4 | There was an empty line. 5 | Here is the fourth non-empty line. 6 | 7 | 8 | Above are two empty lines. 9 | 10 | Empty lines again. 11 | Two lines together. 12 | 13 | This file ends in two newlines. 14 | 15 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/TestFiles/TextFileWithNoTrailingNewline.txt: -------------------------------------------------------------------------------- 1 | This text file has two lines of text 2 | and no trailing newline. -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/TestFiles/ZipHierarchy/Subdir1/Subdir2/Subdir3/TextFile2ForZip.txt: -------------------------------------------------------------------------------- 1 | This is the second text file for testing the ZipProcessor. There is nothing special about it. 2 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/TestFiles/ZipHierarchy/Subdir1/Subdir2/Subdir3/TextFile3ForZip.txt: -------------------------------------------------------------------------------- 1 | This is the third text file for testing the ZipProcessor. There is nothing special about it. 2 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/TestFiles/ZipHierarchy/Subdir1/Subdir2/TextFile1ForZip.txt: -------------------------------------------------------------------------------- 1 | This is the first text file for testing the ZipProcessor. There is nothing special about it. 2 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/TestFiles/beetle.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adv12/FileSharper/af5c5c4114addf9aacaefc0f7cbd9adce87efbd3/src/FileSharper/FileSharperCore.Tests/TestFiles/beetle.jpg -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/app.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore.Tests/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore/Conditions/AllCondition.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Andrew Vardeman. Published under the MIT license. 2 | // See license.txt in the FileSharper distribution or repository for the 3 | // full text of the license. 4 | 5 | using System; 6 | using System.Collections.Generic; 7 | using System.IO; 8 | using System.Threading; 9 | 10 | namespace FileSharperCore.Conditions 11 | { 12 | public class AllCondition : CompoundCondition 13 | { 14 | 15 | public override object Parameters { get; } = new object(); 16 | 17 | public override string Name 18 | { 19 | get 20 | { 21 | return "All"; 22 | } 23 | } 24 | 25 | public override string Description 26 | { 27 | get 28 | { 29 | return "Returns Yes if all of the specified conditions return Yes"; 30 | } 31 | } 32 | 33 | public override MatchResult Matches(FileInfo file, Dictionary fileCaches, CancellationToken token) 34 | { 35 | List values = new List(); 36 | MatchResultType type = MatchResultType.Yes; 37 | foreach (ICondition c in Conditions) 38 | { 39 | token.ThrowIfCancellationRequested(); 40 | MatchResult result = c.Matches(file, fileCaches, token); 41 | if (result.Values != null) 42 | { 43 | values.AddRange(result.Values); 44 | } 45 | if (result.Type != MatchResultType.Yes) 46 | { 47 | type = MatchResultType.No; 48 | // DO NOT short-circuit. We need all conditions to be evaluated for their ouptut values. 49 | } 50 | } 51 | return new MatchResult(type, values.ToArray()); 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore/Conditions/AnyCondition.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Andrew Vardeman. Published under the MIT license. 2 | // See license.txt in the FileSharper distribution or repository for the 3 | // full text of the license. 4 | 5 | using System; 6 | using System.Collections.Generic; 7 | using System.IO; 8 | using System.Threading; 9 | 10 | namespace FileSharperCore.Conditions 11 | { 12 | public class AnyCondition : CompoundCondition 13 | { 14 | 15 | public override object Parameters { get; } = new object(); 16 | 17 | public override string Name => "Any"; 18 | 19 | public override string Description => "Returns Yes if any of the specified conditions returns Yes"; 20 | 21 | public override MatchResult Matches(FileInfo file, Dictionary fileCaches, CancellationToken token) 22 | { 23 | List values = new List(); 24 | MatchResultType type = MatchResultType.No; 25 | foreach (ICondition c in Conditions) 26 | { 27 | token.ThrowIfCancellationRequested(); 28 | MatchResult result = c.Matches(file, fileCaches, token); 29 | if (result.Values != null) 30 | { 31 | values.AddRange(result.Values); 32 | } 33 | if (result.Type == MatchResultType.Yes) 34 | { 35 | type = MatchResultType.Yes; 36 | // DO NOT short-circuit. We need all conditions to be evaluated for their ouptut values. 37 | } 38 | } 39 | return new MatchResult(type, values.ToArray()); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore/Conditions/Binary/BinaryDataContainsTextCondition.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018 Andrew Vardeman. Published under the MIT license. 2 | // See license.txt in the FileSharper distribution or repository for the 3 | // full text of the license. 4 | 5 | using System; 6 | using System.Collections.Generic; 7 | using System.IO; 8 | using System.Text; 9 | using System.Threading; 10 | using FileSharperCore.Util; 11 | using Xceed.Wpf.Toolkit.PropertyGrid.Attributes; 12 | 13 | namespace FileSharperCore.Conditions.Binary 14 | { 15 | public class BinaryDataContainsTextParameters 16 | { 17 | [PropertyOrder(1, UsageContextEnum.Both)] 18 | public string Text { get; set; } 19 | [PropertyOrder(2, UsageContextEnum.Both)] 20 | public SearchTextEncodingType Encoding { get; set; } = SearchTextEncodingType.UTF8; 21 | } 22 | 23 | public class BinaryDataContainsTextCondition : BinaryDataSearchCondition 24 | { 25 | private BinaryDataContainsTextParameters m_Parameters = new BinaryDataContainsTextParameters(); 26 | 27 | private byte[] m_bytes; 28 | 29 | protected override byte[] Bytes => m_bytes; 30 | 31 | public override int ColumnCount => 1; 32 | 33 | public override string[] ColumnHeaders => new string[] { "Binary Data Contains \"" + m_Parameters.Text + "\"" }; 34 | 35 | public override string Category => "Binary"; 36 | 37 | public override string Name => "Binary Data Contains Text"; 38 | 39 | public override string Description => "Tests whether a binary file's data contains the specified text in the specified encoding"; 40 | 41 | public override object Parameters => m_Parameters; 42 | 43 | public override void LocalInit() 44 | { 45 | base.LocalInit(); 46 | Encoding encoding = TextUtil.GetSearchTextEncoding(m_Parameters.Encoding); 47 | m_bytes = encoding.GetBytes(m_Parameters.Text); 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore/Conditions/Binary/BinaryDataSearchCondition.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018 Andrew Vardeman. Published under the MIT license. 2 | // See license.txt in the FileSharper distribution or repository for the 3 | // full text of the license. 4 | 5 | using System; 6 | using System.Collections.Generic; 7 | using System.IO; 8 | using System.Threading; 9 | 10 | namespace FileSharperCore.Conditions.Binary 11 | { 12 | public abstract class BinaryDataSearchCondition : ConditionBase 13 | { 14 | protected abstract byte[] Bytes { get; } 15 | 16 | public override MatchResult Matches(FileInfo file, Dictionary fileCaches, CancellationToken token) 17 | { 18 | LinkedList currentBytes = new LinkedList(); 19 | byte[] bytes = this.Bytes; 20 | using (FileStream stream = file.OpenRead()) 21 | { 22 | int b; 23 | if (stream.Length < bytes.Length) 24 | { 25 | return new MatchResult(MatchResultType.No, "No"); 26 | } 27 | for (int i = 0; i < bytes.Length - 1; i++) 28 | { 29 | currentBytes.AddLast((byte)stream.ReadByte()); 30 | } 31 | while ((b = stream.ReadByte()) != -1) 32 | { 33 | currentBytes.AddLast((byte)b); 34 | bool match = true; 35 | int i = 0; 36 | foreach (byte cb in currentBytes) 37 | { 38 | if (bytes[i++] != cb) 39 | { 40 | match = false; 41 | break; 42 | } 43 | } 44 | if (match) 45 | { 46 | return new MatchResult(MatchResultType.Yes, "Yes"); 47 | } 48 | currentBytes.RemoveFirst(); 49 | } 50 | } 51 | return new MatchResult(MatchResultType.No, "No"); 52 | } 53 | 54 | } 55 | 56 | 57 | } 58 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore/Conditions/ConditionBase.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Andrew Vardeman. Published under the MIT license. 2 | // See license.txt in the FileSharper distribution or repository for the 3 | // full text of the license. 4 | 5 | using System; 6 | using System.Collections.Generic; 7 | using System.IO; 8 | using System.Threading; 9 | 10 | namespace FileSharperCore.Conditions 11 | { 12 | public abstract class ConditionBase : PluggableItemWithColumnsAndCacheTypesBase, ICondition 13 | { 14 | public abstract MatchResult Matches(FileInfo file, Dictionary fileCaches, CancellationToken token); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore/Conditions/Filesystem/FileLengthCondition.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Andrew Vardeman. Published under the MIT license. 2 | // See license.txt in the FileSharper distribution or repository for the 3 | // full text of the license. 4 | 5 | using System; 6 | using System.Collections.Generic; 7 | using System.IO; 8 | using System.Threading; 9 | using FileSharperCore.Util; 10 | using Xceed.Wpf.Toolkit.PropertyGrid.Attributes; 11 | 12 | namespace FileSharperCore.Conditions.Filesystem 13 | { 14 | 15 | public class FileLengthComparisonParameters 16 | { 17 | [PropertyOrder(1, UsageContextEnum.Both)] 18 | public ComparisonType ComparisonType { get; set; } = ComparisonType.LessThan; 19 | [PropertyOrder(2, UsageContextEnum.Both)] 20 | public double Value { get; set; } = 1; 21 | [PropertyOrder(3, UsageContextEnum.Both)] 22 | public SizeUnits Units { get; set; } = SizeUnits.Kilobytes; 23 | [PropertyOrder(4, UsageContextEnum.Both)] 24 | public bool Metric { get; set; } 25 | [PropertyOrder(5, UsageContextEnum.Both)] 26 | public string Format { get; set; } = "F2"; 27 | } 28 | 29 | public class FileLengthCondition : ConditionBase 30 | { 31 | private FileLengthComparisonParameters m_Parameters = new FileLengthComparisonParameters(); 32 | 33 | public override string Name => "File Length"; 34 | 35 | public override string Description => "File length compares to the specified length"; 36 | 37 | public override string Category => "Filesystem"; 38 | 39 | public override object Parameters => m_Parameters; 40 | 41 | public override int ColumnCount => 1; 42 | 43 | public override string[] ColumnHeaders => new string[] { "File Length (" + UnitUtil.GetUnitSymbol(m_Parameters.Units) + ")" }; 44 | 45 | public override MatchResult Matches(FileInfo file, Dictionary fileCaches, CancellationToken token) 46 | { 47 | double size = UnitUtil.ConvertSize(file.Length, SizeUnits.Bytes, m_Parameters.Units, m_Parameters.Metric); 48 | MatchResultType resultType = CompareUtil.Compare(size, m_Parameters.ComparisonType, m_Parameters.Value); 49 | return new MatchResult(resultType, new string[] { size.ToString(m_Parameters.Format) }); 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore/Conditions/Filesystem/ReadOnlyCondition.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Andrew Vardeman. Published under the MIT license. 2 | // See license.txt in the FileSharper distribution or repository for the 3 | // full text of the license. 4 | 5 | using System; 6 | using System.Collections.Generic; 7 | using System.IO; 8 | using System.Threading; 9 | 10 | namespace FileSharperCore.Conditions.Filesystem 11 | { 12 | public class ReadOnlyCondition : ConditionBase 13 | { 14 | public override string Name => "Read-Only"; 15 | 16 | public override string Description => "File is read-only"; 17 | 18 | public override string Category => "Filesystem"; 19 | 20 | public override object Parameters => null; 21 | 22 | public override int ColumnCount => 1; 23 | 24 | public override string[] ColumnHeaders => new string[] { "Read-Only" }; 25 | 26 | public override MatchResult Matches(FileInfo file, Dictionary fileCaches, CancellationToken token) 27 | { 28 | string output = file.IsReadOnly ? "Yes" : "No"; 29 | string[] outputs = new string[] { output }; 30 | if (file.IsReadOnly) 31 | { 32 | return new MatchResult(MatchResultType.Yes, outputs); 33 | } 34 | else 35 | { 36 | return new MatchResult(MatchResultType.No, outputs); 37 | } 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore/Conditions/Image/ImageDimensionCondition.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Andrew Vardeman. Published under the MIT license. 2 | // See license.txt in the FileSharper distribution or repository for the 3 | // full text of the license. 4 | 5 | using System; 6 | using System.Collections.Generic; 7 | using System.Drawing; 8 | using System.IO; 9 | using System.Threading; 10 | using FileSharperCore.FileCaches; 11 | using FileSharperCore.Util; 12 | using Xceed.Wpf.Toolkit.PropertyGrid.Attributes; 13 | 14 | namespace FileSharperCore.Conditions.Image 15 | { 16 | public class ImageDimensionComparisonParameters 17 | { 18 | [PropertyOrder(1, UsageContextEnum.Both)] 19 | public MediaDimension Dimension { get; set; } 20 | [PropertyOrder(2, UsageContextEnum.Both)] 21 | public ComparisonType ComparisonType { get; set; } 22 | [PropertyOrder(3, UsageContextEnum.Both)] 23 | public int Size { get; set; } 24 | } 25 | 26 | public class ImageDimensionCondition : ConditionBase 27 | { 28 | private ImageDimensionComparisonParameters m_Parameters = new ImageDimensionComparisonParameters(); 29 | 30 | public override int ColumnCount => 1; 31 | 32 | public override string[] ColumnHeaders => new string[] { m_Parameters.Dimension.ToString() }; 33 | 34 | public override string Name => "Image Size"; 35 | 36 | public override string Category => "Image"; 37 | 38 | public override string Description => "Compares the width or height of an image to the specified value"; 39 | 40 | public override object Parameters => m_Parameters; 41 | 42 | public override Type[] CacheTypes => new Type[] { typeof(BitmapFileCache) }; 43 | 44 | public override MatchResult Matches(FileInfo file, Dictionary fileCaches, CancellationToken token) 45 | { 46 | BitmapFileCache cache = fileCaches[typeof(BitmapFileCache)] as BitmapFileCache; 47 | if (cache == null || !cache.IsBitmap) 48 | { 49 | return new MatchResult(MatchResultType.NotApplicable, "N/A"); 50 | } 51 | Bitmap bitmap = cache.Bitmap; 52 | int imageSize = m_Parameters.Dimension == MediaDimension.Height ? bitmap.Height : bitmap.Width; 53 | MatchResultType resultType = CompareUtil.Compare(imageSize, m_Parameters.ComparisonType, m_Parameters.Size); 54 | return new MatchResult(resultType, imageSize.ToString()); 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore/Conditions/MatchEverythingCondition.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Andrew Vardeman. Published under the MIT license. 2 | // See license.txt in the FileSharper distribution or repository for the 3 | // full text of the license. 4 | 5 | using System; 6 | using System.Collections.Generic; 7 | using System.IO; 8 | using System.Threading; 9 | 10 | namespace FileSharperCore.Conditions 11 | { 12 | public class MatchEverythingCondition : ConditionBase 13 | { 14 | public override string Name => null; 15 | 16 | public override string Description => null; 17 | 18 | public override string Category => string.Empty; 19 | 20 | public override object Parameters => null; 21 | 22 | public override int ColumnCount => 0; 23 | 24 | public override string[] ColumnHeaders => new string[0]; 25 | 26 | public override MatchResult Matches(FileInfo file, Dictionary fileCaches, CancellationToken token) 27 | { 28 | return new MatchResult(MatchResultType.Yes, new string[0]); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore/Conditions/Text/LineCountCondition.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Andrew Vardeman. Published under the MIT license. 2 | // See license.txt in the FileSharper distribution or repository for the 3 | // full text of the license. 4 | 5 | using System; 6 | using System.Collections.Generic; 7 | using System.IO; 8 | using System.Threading; 9 | using FileSharperCore.Util; 10 | 11 | namespace FileSharperCore.Conditions.Text 12 | { 13 | public class LineCountCondition : ConditionBase 14 | { 15 | private CountComparisonParameters m_Parameters = new CountComparisonParameters(); 16 | 17 | public override string Name => "Line Count"; 18 | 19 | public override string Category => "Text"; 20 | 21 | public override string Description => "Compares the line count to the specified value"; 22 | 23 | public override object Parameters => m_Parameters; 24 | 25 | public override int ColumnCount => 1; 26 | 27 | public override string[] ColumnHeaders => new string[] { "Line Count" }; 28 | 29 | public override MatchResult Matches(FileInfo file, Dictionary fileCaches, CancellationToken token) 30 | { 31 | int lineCount = 0; 32 | MatchResultType resultType = MatchResultType.NotApplicable; 33 | try 34 | { 35 | using (StreamReader reader = new StreamReader(file.FullName)) 36 | { 37 | lineCount = TextUtil.GetLineCount(reader, token); 38 | } 39 | resultType = CompareUtil.Compare(lineCount, m_Parameters.ComparisonType, m_Parameters.Count); 40 | } 41 | catch (Exception ex) 42 | { 43 | 44 | } 45 | return new MatchResult(resultType, lineCount.ToString()); 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore/Conditions/Text/LineEndingsCondition.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Andrew Vardeman. Published under the MIT license. 2 | // See license.txt in the FileSharper distribution or repository for the 3 | // full text of the license. 4 | 5 | using System; 6 | using System.Collections.Generic; 7 | using System.IO; 8 | using System.Threading; 9 | using FileSharperCore.Util; 10 | 11 | namespace FileSharperCore.Conditions.Text 12 | { 13 | 14 | public class LineEndingsParameters 15 | { 16 | public DetectedLineEndings LineEndings { get; set; } 17 | } 18 | 19 | public class LineEndingsCondition : ConditionBase 20 | { 21 | 22 | private LineEndingsParameters m_Parameters = new LineEndingsParameters(); 23 | 24 | public override int ColumnCount => 1; 25 | 26 | public override string[] ColumnHeaders => new string[] { "Line Endings" }; 27 | 28 | public override string Name => "Line Endings"; 29 | 30 | public override string Category => "Text"; 31 | 32 | public override string Description => "Tests whether the line endings match the specified value"; 33 | 34 | public override object Parameters => m_Parameters; 35 | 36 | public override MatchResult Matches(FileInfo file, Dictionary fileCaches, CancellationToken token) 37 | { 38 | MatchResultType resultType = MatchResultType.NotApplicable; 39 | DetectedLineEndings lineEndings = DetectedLineEndings.NotApplicable; 40 | try 41 | { 42 | using (StreamReader reader = new StreamReader(file.FullName)) 43 | { 44 | lineEndings = TextUtil.GetLineEndings(reader, false, token); 45 | } 46 | if (lineEndings == m_Parameters.LineEndings) 47 | { 48 | resultType = MatchResultType.Yes; 49 | } 50 | else 51 | { 52 | resultType = MatchResultType.No; 53 | } 54 | } 55 | catch (Exception ex) 56 | { 57 | 58 | } 59 | return new MatchResult(resultType, lineEndings.ToString()); 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore/Conditions/Text/TextEncodingCondition.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018 Andrew Vardeman. Published under the MIT license. 2 | // See license.txt in the FileSharper distribution or repository for the 3 | // full text of the license. 4 | 5 | using System; 6 | using System.Collections.Generic; 7 | using System.IO; 8 | using System.Threading; 9 | using FileSharperCore.Util; 10 | 11 | namespace FileSharperCore.Conditions.Text 12 | { 13 | 14 | public class TextEncodingTestParameters 15 | { 16 | public DetectedEncodingType Encoding { get; set; } = DetectedEncodingType.ASCII; 17 | } 18 | 19 | public class TextEncodingCondition : ConditionBase 20 | { 21 | private TextEncodingTestParameters m_Parameters = new TextEncodingTestParameters(); 22 | 23 | public override int ColumnCount => 1; 24 | 25 | public override string[] ColumnHeaders => new string[] { "Encoding" }; 26 | 27 | public override string Category => "Text"; 28 | 29 | public override string Name => "Text Encoding Matches"; 30 | 31 | public override string Description => null; 32 | 33 | public override object Parameters => m_Parameters; 34 | 35 | public override MatchResult Matches(FileInfo file, Dictionary fileCaches, CancellationToken token) 36 | { 37 | MatchResultType resultType = MatchResultType.NotApplicable; 38 | string encodingString = "N/A"; 39 | try 40 | { 41 | DetectedEncodingType encoding = TextUtil.GetDetectedEncodingType(file); 42 | if (encoding == m_Parameters.Encoding) 43 | { 44 | resultType = MatchResultType.Yes; 45 | } 46 | else 47 | { 48 | resultType = MatchResultType.No; 49 | } 50 | encodingString = encoding.ToString(); 51 | } 52 | catch (Exception) 53 | { 54 | 55 | } 56 | return new MatchResult(resultType, encodingString); 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore/Conditions/Text/WordCountCondition.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Andrew Vardeman. Published under the MIT license. 2 | // See license.txt in the FileSharper distribution or repository for the 3 | // full text of the license. 4 | 5 | using System; 6 | using System.Collections.Generic; 7 | using System.IO; 8 | using System.Threading; 9 | using FileSharperCore.Util; 10 | using Xceed.Wpf.Toolkit.PropertyGrid.Attributes; 11 | 12 | namespace FileSharperCore.Conditions.Text 13 | { 14 | 15 | public class CountComparisonParameters 16 | { 17 | [PropertyOrder(1, UsageContextEnum.Both)] 18 | public ComparisonType ComparisonType { get; set; } = ComparisonType.GreaterThan; 19 | [PropertyOrder(2, UsageContextEnum.Both)] 20 | public int Count { get; set; } = 300; 21 | } 22 | 23 | public class WordCountCondition : ConditionBase 24 | { 25 | private CountComparisonParameters m_Parameters = new CountComparisonParameters(); 26 | 27 | public override string Name => "Word Count"; 28 | 29 | public override string Category => "Text"; 30 | 31 | public override string Description => "Compares the word count to the specified value"; 32 | 33 | public override object Parameters => m_Parameters; 34 | 35 | public override int ColumnCount => 1; 36 | 37 | public override string[] ColumnHeaders => new string[] { "Word Count" }; 38 | 39 | public override MatchResult Matches(FileInfo file, Dictionary fileCaches, CancellationToken token) 40 | { 41 | int wordCount = 0; 42 | MatchResultType resultType = MatchResultType.NotApplicable; 43 | try 44 | { 45 | using (StreamReader reader = new StreamReader(file.FullName)) 46 | { 47 | wordCount = TextUtil.GetWordCount(reader, token); 48 | } 49 | resultType = CompareUtil.Compare(wordCount, m_Parameters.ComparisonType, m_Parameters.Count); 50 | } 51 | catch (Exception ex) 52 | { 53 | 54 | } 55 | return new MatchResult(resultType, wordCount.ToString()); 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore/Editors/DateTimePickerEditor.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Andrew Vardeman. Published under the MIT license. 2 | // See license.txt in the FileSharper distribution or repository for the 3 | // full text of the license. 4 | 5 | using System.Windows; 6 | using System.Windows.Data; 7 | using Xceed.Wpf.Toolkit; 8 | using Xceed.Wpf.Toolkit.PropertyGrid; 9 | using Xceed.Wpf.Toolkit.PropertyGrid.Editors; 10 | 11 | namespace FileSharperCore.Editors 12 | { 13 | public class DateTimePickerEditor : DateTimePicker, ITypeEditor 14 | { 15 | public DateTimePickerEditor() 16 | { 17 | Format = DateTimeFormat.Custom; 18 | FormatString = "yyyy/MM/dd hh:mm:ss tt"; 19 | 20 | TimePickerVisibility = System.Windows.Visibility.Visible; 21 | ShowButtonSpinner = false; 22 | AutoCloseCalendar = true; 23 | } 24 | 25 | public FrameworkElement ResolveEditor(PropertyItem propertyItem) 26 | { 27 | Binding binding = new Binding("Value"); 28 | binding.Source = propertyItem; 29 | binding.Mode = propertyItem.IsReadOnly ? BindingMode.OneWay : BindingMode.TwoWay; 30 | 31 | BindingOperations.SetBinding(this, ValueProperty, binding); 32 | return this; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore/Editors/FileSharperMultiLineTextEditor.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Andrew Vardeman. Published under the MIT license. 2 | // See license.txt in the FileSharper distribution or repository for the 3 | // full text of the license. 4 | 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using Xceed.Wpf.Toolkit; 9 | using Xceed.Wpf.Toolkit.PropertyGrid; 10 | using Xceed.Wpf.Toolkit.PropertyGrid.Editors; 11 | 12 | namespace FileSharperCore.Editors 13 | { 14 | public class FileSharperMultiLineTextEditor: MultiLineTextEditor, ITypeEditor 15 | { 16 | public string Value 17 | { 18 | get { return (string)GetValue(TextProperty); } 19 | set { SetValue(TextProperty, value); } 20 | } 21 | 22 | public FrameworkElement ResolveEditor(PropertyItem propertyItem) 23 | { 24 | Binding binding = new Binding("Value"); 25 | binding.Source = propertyItem; 26 | binding.Mode = propertyItem.IsReadOnly ? BindingMode.OneWay : BindingMode.TwoWay; 27 | 28 | BindingOperations.SetBinding(this, TextProperty, binding); 29 | return this; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/FileSharper/FileSharperCore/Editors/FolderChooserEditor.xaml: -------------------------------------------------------------------------------- 1 | 6 | 15 | 16 |