diff --git a/MontageWeissTools/Impls/Parsers/Cards/HeartOfTheCardsURLParser.cs b/MontageWeissTools/Impls/Parsers/Cards/HeartOfTheCardsURLParser.cs index cd55fb7..1db6399 100644 --- a/MontageWeissTools/Impls/Parsers/Cards/HeartOfTheCardsURLParser.cs +++ b/MontageWeissTools/Impls/Parsers/Cards/HeartOfTheCardsURLParser.cs @@ -199,28 +199,30 @@ private WeissSchwarzCard ParseHOTCText(string hotcText) } cursor.Next(); - - if(cursor.CurrentLine.ToString().Contains(traitsText)){ + if (cursor.CurrentLine.ToString().Contains(traitsText)) + { res.Traits = cursor.CurrentLine .Slice(c => c.IndexOf(traitsText) + traitsText.Length) .Trim() .ToString() - .Split(",") + .SplitWithRegex(@"([^(]+)\(([^\)]+)\),{0,1}") .Select(this.ParseTrait) .Where(o => o != null) .ToList(); } - else if(cursor.CurrentLine.ToString().Contains(trait1Text)){ + else if (cursor.CurrentLine.ToString().Contains(trait1Text)) + { res.Traits = cursor.CurrentLine .Slice(c => c.IndexOf(trait1Text) + trait1Text.Length) .Trim() .ToString() - .Split(" Trait 2: ") + .Split("Trait 2: ") + .SelectMany(s => s.Trim().SplitWithRegex(@"([^(]+)\(([^\)]+)\),{0,1}")) //TODO: Duplicate Regex, may be identical with traitMatcher. .Select(this.ParseTrait) .Where(o => o != null) .ToList(); } - + cursor.Next(); var stringTriggers = cursor.CurrentLine @@ -313,6 +315,15 @@ private MultiLanguageString ParseTrait(String traitString) return result; } + private MultiLanguageString ParseTrait(Match match) + { + MultiLanguageString result = new MultiLanguageString(); + result["jp"] = match.Groups[1].Value.Trim(); + result["en"] = match.Groups[2].Value.Trim(); + Log.Debug("All Groups: {@groups}", match.Groups.OfType().Select(g => g.Value).ToArray()); + return result; + } + private bool IsValidTrait(string traitString) { return traitMatcher.Matches(traitString).Count > 0; diff --git a/MontageWeissTools/Utilities/StringExtensions.cs b/MontageWeissTools/Utilities/StringExtensions.cs index f6fe354..0270eed 100644 --- a/MontageWeissTools/Utilities/StringExtensions.cs +++ b/MontageWeissTools/Utilities/StringExtensions.cs @@ -3,7 +3,10 @@ using Serilog; using System; using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; using System.Text; +using System.Text.RegularExpressions; using System.Threading.Tasks; namespace Montage.Weiss.Tools.Utilities @@ -26,6 +29,11 @@ public static string EscapeQuotes(this string str) .Replace("\r", "\\\r"); } + public static IEnumerable SplitWithRegex(this string str, string regex) + { + return (new Regex(regex)).Matches(str); + } + public static string AsFileNameFriendly(this string str, char replacement = '_') { var res = str; diff --git a/readme.md b/readme.md index d9075b9..b32f257 100644 --- a/readme.md +++ b/readme.md @@ -19,9 +19,11 @@ registering on GitHub. #### Supported Exporters #### * [Tabletop Simulator](https://steamcommunity.com/sharedfiles/filedetails/?id=1321170886) +* Local Deck JSON #### Supported Deck Parsers #### * [Encore Decks](https://www.encoredecks.com/) +* Local Deck JSON #### Supported Card Set Parsers #### * HOTC