public ListRand Deserialize(IEnumerable <string> fileLines) { var idMappings = new Dictionary <int, ListNode>(); var fileLinesStream = new FileLinesStream(fileLines); var converter = new ListRandConverter(); var list = converter.ToListRand(fileLinesStream, idMappings); return(list); }
public IEnumerable <string> Serialize(ListRand list) { var idMappings = GenerateIdMappings(list); var converter = new ListRandConverter(idMappings); var serializedList = SerializeListAsStream(list, idMappings); return(serializedList); }
private IEnumerable <string> SerializeListAsStream(ListRand list, IReadOnlyDictionary <ListNode, int> idMappings) { var listConverter = new ListRandConverter(idMappings); yield return(listConverter.ToString(list)); var serializedNodes = SerializeNodesAsStream(idMappings, list.Head); foreach (var serializedNode in serializedNodes) { yield return(serializedNode); } yield return(listConverter.GetStringOfClosePart()); }