public object Parse(string value, object argument) { var headers = new List <HeaderField>(); using (var sr = new StringReader(value)) { using (var sw = new StringWriter()) { while (true) { var line = sr.ReadLine(); // end of block reached, no more headers if (string.IsNullOrEmpty(line)) { break; } sw.Write(line); while (true) { var next = sr.Peek(); var isContinuation = next == Characters.Space || next == Characters.Tabulator; if (isContinuation) { var continuation = sr.ReadLine(); if (string.IsNullOrEmpty(continuation)) { break; } sw.Write(continuation.Trim()); } else { break; } } var literals = sw.ToString(); if (!string.IsNullOrEmpty(literals)) { var header = new HeaderField(); sw.Clear(); header.Deserialize(literals); headers.Add(header); } } } } return(headers); }
public object Parse(string value, object argument) { var headers = new List<HeaderField>(); using (var sr = new StringReader(value)) { using (var sw = new StringWriter()) { while (true) { var line = sr.ReadLine(); // end of block reached, no more headers if (string.IsNullOrEmpty(line)) { break; } sw.Write(line); while (true) { var next = sr.Peek(); var isContinuation = next == Characters.Space || next == Characters.Tabulator; if (isContinuation) { var continuation = sr.ReadLine(); if (string.IsNullOrEmpty(continuation)) { break; } sw.Write(continuation.Trim()); } else { break; } } var literals = sw.ToString(); if (!string.IsNullOrEmpty(literals)) { var header = new HeaderField(); sw.Clear(); header.Deserialize(literals); headers.Add(header); } } } } return headers; }