From 07fc5588a75fd465b2168556dc37ee21e51b9e24 Mon Sep 17 00:00:00 2001 From: Derrick Date: Sat, 21 Jan 2017 17:53:13 -0500 Subject: [PATCH] Change syntax to match FilterBlast Per @Greengroove's feedback, changing syntax to: [Show|Hide] # grp1 - grp2 - grp3 | mode mode can be any of these for the new Disable behavior: "Disable" "Comment" "Remove" (slightly different from FilterBlast impl) Any other mode is treated as the default behavior. Filtration always writes out as "Disable" or default (none) Also removed vestigal logging and comments. --- Filtration.ObjectModel/ItemFilterBlock.cs | 5 ---- .../Services/ItemFilterBlockTranslator.cs | 23 +++++++++++++++---- .../ViewModels/ItemFilterBlockViewModel.cs | 4 +--- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/Filtration.ObjectModel/ItemFilterBlock.cs b/Filtration.ObjectModel/ItemFilterBlock.cs index f3b903c..0877ab4 100644 --- a/Filtration.ObjectModel/ItemFilterBlock.cs +++ b/Filtration.ObjectModel/ItemFilterBlock.cs @@ -149,11 +149,6 @@ namespace Filtration.ObjectModel if (BlockGroup.IsChecked != Enabled) { Enabled = BlockGroup.IsChecked; - // DFRICE - Console.WriteLine("TOGGLE! ENABLED=" + (Enabled ? "YES" : "NO")); - // This is a bit hacky. Enabled/Disabled isn't part of BlockItems, - // but we want to piggy back on the Observerable aspect of it. - // Just generate a change event for the Action (Show/Hide) block. } } else diff --git a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs index da5cb15..bbe3c61 100644 --- a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs +++ b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs @@ -396,11 +396,20 @@ namespace Filtration.Parser.Services var blockGroupText = inputString.Substring(blockGroupStart + 1).TrimStart(); - if (blockGroupText.StartsWith("!")) + var blockGroupModeStart = blockGroupText.IndexOf("|", StringComparison.Ordinal); + if (blockGroupModeStart >= 0) { - block.DisableWithGroup = true; - blockGroupText = blockGroupText.Substring(1); - //block.Description = block.Description + "--DR--"; + var blockGroupMode = blockGroupText.Substring(blockGroupModeStart + 1).Trim(); + blockGroupText = blockGroupText.Substring(0, blockGroupModeStart); + + // Compatible with http://filterblast.oversoul.xyz/item-filter-syntax.html#smartblocks + // Except that REMOVE is just like COMMENT and DISABLE. + if (blockGroupMode.Equals("Comment", StringComparison.OrdinalIgnoreCase) || + blockGroupMode.Equals("Remove", StringComparison.OrdinalIgnoreCase) || + blockGroupMode.Equals("Disable", StringComparison.OrdinalIgnoreCase)) + { + block.DisableWithGroup = true; + } } var blockGroups = blockGroupText.Split('-').ToList(); @@ -469,7 +478,11 @@ namespace Filtration.Parser.Services if (block.BlockGroup != null) { - outputString += (block.DisableWithGroup ? " #! " : " # ") + block.BlockGroup; + outputString += " # " + block.BlockGroup; + if (block.DisableWithGroup) + { + outputString += " | Disable"; + } } // ReSharper disable once LoopCanBeConvertedToQuery diff --git a/Filtration/ViewModels/ItemFilterBlockViewModel.cs b/Filtration/ViewModels/ItemFilterBlockViewModel.cs index e7976be..f0fe70f 100644 --- a/Filtration/ViewModels/ItemFilterBlockViewModel.cs +++ b/Filtration/ViewModels/ItemFilterBlockViewModel.cs @@ -4,7 +4,6 @@ using System.Collections.ObjectModel; using System.Collections.Specialized; using System.Linq; using System.Windows.Media; -using Filtration.Common.ViewModels; using Filtration.ObjectModel; using Filtration.ObjectModel.BlockItemBaseTypes; using Filtration.ObjectModel.BlockItemTypes; @@ -13,7 +12,7 @@ using Filtration.Views; using GalaSoft.MvvmLight; using GalaSoft.MvvmLight.CommandWpf; using Xceed.Wpf.Toolkit; - + namespace Filtration.ViewModels { internal interface IItemFilterBlockViewModel @@ -370,7 +369,6 @@ namespace Filtration.ViewModels { IsDirty = true; RaisePropertyChanged(nameof(BlockEnabled)); - Console.WriteLine("OnBlockChanged"); } public void RefreshBlockPreview()