using System; using System.Collections.Generic; using System.Linq; namespace Xylem.Common.Logic.ProductionOrderCore.Vako { /// /// VAKO decoder /// public static class VakoParser { /// /// Parser of VAKO code /// /// /// /// public static VakoData Parse(RawVako rawVako, List vakoMaps) { var ret = new VakoData { KeyValues = new List() }; //var d = vakoMaps.GroupBy(g => new Tuple(g.Stelle, g.Laenge)); //d = 99 foreach (var checkVakoIsMatching in vakoMaps.GroupBy(g => new Tuple(g.Stelle, g.Laenge))) { var actualStart = checkVakoIsMatching.Key.Item1 - 1; var actualLength = checkVakoIsMatching.Key.Item2; var actualChars = rawVako.VakoString.Substring(actualStart, actualLength); var matches = checkVakoIsMatching.Where(c => c.Charcode == actualChars); // ReSharper disable once PossibleMultipleEnumeration if (!matches.Any()) { //no match warning! } // ReSharper disable once PossibleMultipleEnumeration if (matches.Count() == 1) { // ReSharper disable once PossibleMultipleEnumeration var match = matches.First(); ret.KeyValues.Add(new VakoKeyValue { Desc = match.Bemerkung, Key = match.Schluessel, Name = match.Name, Charcode = match.Charcode, Value = match.Wert, }); } } return ret; } } }