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;
}
}
}