public static SharedMetadata GetMetadata(SharedEntryType type, string data, out string cleaned) { switch (type) { case SharedEntryType.CarSetup: var r = new SharedMetadata(); var s = data.Split('\n'); foreach (var k in s.Where(x => x.StartsWith(IniMetadataPrefix)).Select(l => l.Split(new[] { ':' }, 3)).Where(k => k.Length == 3)) { r[k[1]] = Storage.Decode(k[2]); } cleaned = s.Where(x => !x.StartsWith(IniMetadataPrefix)).JoinToString('\n'); return(r); default: throw new NotSupportedException(); } }
public static string SetMetadata(SharedEntryType type, string data, SharedMetadata metadata) { switch (type) { case SharedEntryType.CarSetup: var s = new StringBuilder(); foreach (var pair in metadata.Where(x => x.Value != null)) { if (pair.Key.Contains(@":")) { throw new Exception(@"Invalid key"); } s.Append(IniMetadataPrefix + pair.Key + @":" + Storage.Encode(pair.Value) + '\n'); } return(s + data); default: throw new NotSupportedException(); } }