private bool PassPortValid() { foreach (var requiredPassPortKey in RequiredPassPortKeys) { if (!PassPortValues.TryGetValue(requiredPassPortKey.Key, out var value) || !requiredPassPortKey.Value.Invoke(value)) { return(false); } } return(true); }
public Passport(String rawData) { var keys = KeyRegex.Matches(rawData).Select(x => x.Value).ToList(); var values = ValueRegex.Matches(rawData).Select(x => x.Value).ToList(); if (keys.Count() != values.Count()) { throw new Exception("Key list length not equal value list length!"); } PassPortValues = keys.Zip(values).ToDictionary(x => x.First, v => v.Second); var compStr = String.Join(' ', PassPortValues.Select(x => $"{x.Key}:{x.Value}")); if (rawData.StartsWith(compStr)) { throw new Exception("Parsing error!"); } IsValid = PassPortValid(); }