diff --git a/Filtration.Parser/Services/ItemFilterScriptTranslator.cs b/Filtration.Parser/Services/ItemFilterScriptTranslator.cs index 392f3e3..6b549f2 100644 --- a/Filtration.Parser/Services/ItemFilterScriptTranslator.cs +++ b/Filtration.Parser/Services/ItemFilterScriptTranslator.cs @@ -75,6 +75,7 @@ namespace Filtration.Parser.Services } lines[i] = lines[i].TrimStart('#'); + lines[i] = lines[i].TrimStart(' '); lines[i] = lines[i].Replace("#", " # "); var spaceOrEndOfLinePos = lines[i].IndexOf(" ", StringComparison.Ordinal) > 0 ? lines[i].IndexOf(" ", StringComparison.Ordinal) : lines[i].Length; var lineOption = lines[i].Substring(0, spaceOrEndOfLinePos); @@ -108,11 +109,49 @@ namespace Filtration.Parser.Services return lines.Aggregate((c, n) => c + Environment.NewLine + n); } + public static string ConvertCommentedToDisabled(string inputString) + { + var lines = Regex.Split(inputString, "\r\n|\r|\n"); + var parsingCommented = false; + for (var i = 0; i < lines.Length; i++) + { + if (!parsingCommented) + { + if (lines[i].StartsWith("# Show") || lines[i].StartsWith("#Show")) + { + parsingCommented = true; + lines[i] = "#Disabled Block Start" + Environment.NewLine + lines[i]; + } + } + else + { + if (!lines[i].StartsWith("#")) + { + parsingCommented = false; + lines[i - 1] += Environment.NewLine + "#Disabled Block End"; + } + } + } + if(parsingCommented) + { + lines[lines.Length - 1] += Environment.NewLine + "#Disabled Block End"; + } + + return string.Join(Environment.NewLine, lines); + } + public IItemFilterScript TranslateStringToItemFilterScript(string inputString) { var script = _itemFilterScriptFactory.Create(); _blockGroupHierarchyBuilder.Initialise(script.ItemFilterBlockGroups.First()); + //NeverSink's Indepth Loot Filter parsing + if (inputString.Contains("NeverSink's Indepth Loot Filter")) + { + inputString = ConvertCommentedToDisabled(inputString); + } + + inputString = inputString.Replace("\t", ""); if (inputString.Contains("#Disabled Block Start")) { @@ -265,6 +304,13 @@ namespace Filtration.Parser.Services } } + //NeverSink's Indepth Loot Filter parsing + if (outputString.Contains("NeverSink's Indepth Loot Filter")) + { + outputString = Regex.Replace(outputString, "(\r)?\n#Disabled Block Start*(\r)?\n", Environment.NewLine); + outputString = Regex.Replace(outputString, "(\r)?\n#Disabled Block End*(\r)?\n", Environment.NewLine); + } + return outputString; } } diff --git a/Filtration/ViewModels/ItemFilterCommentBlockViewModel.cs b/Filtration/ViewModels/ItemFilterCommentBlockViewModel.cs index 3516348..6719cfc 100644 --- a/Filtration/ViewModels/ItemFilterCommentBlockViewModel.cs +++ b/Filtration/ViewModels/ItemFilterCommentBlockViewModel.cs @@ -1,6 +1,7 @@ using Filtration.ObjectModel; using GalaSoft.MvvmLight.CommandWpf; - +using System; + namespace Filtration.ViewModels { internal interface IItemFilterCommentBlockViewModel : IItemFilterBlockViewModelBase @@ -47,8 +48,22 @@ namespace Filtration.ViewModels ItemFilterCommentBlock.Comment = value; IsDirty = true; RaisePropertyChanged(); + RaisePropertyChanged("Header"); } } + } + + public string Header + { + get + { + string[] commentLines = ItemFilterCommentBlock.Comment.Split(new[] { Environment.NewLine }, StringSplitOptions.None); + if (commentLines[0].StartsWith(@"============") || commentLines[0].StartsWith(@"------------")) + { + commentLines[0] = commentLines[1]; + } + return commentLines[0].TrimStart(' '); + } } diff --git a/Filtration/Views/ItemFilterCommentBlockView.xaml b/Filtration/Views/ItemFilterCommentBlockView.xaml index 2e561c8..2989243 100644 --- a/Filtration/Views/ItemFilterCommentBlockView.xaml +++ b/Filtration/Views/ItemFilterCommentBlockView.xaml @@ -76,8 +76,19 @@ - - - + + + + + + + + + + + + +