private static void ExtractDetails(string details, LitContribution lc) { var subDetails = details.Split(".".ToCharArray(), 2); if (subDetails.Length >= 1) { lc.Name = subDetails[0]; } if (subDetails.Length > 1) { lc.Details.Add(subDetails[1].Replace('\"', ' ').Trim()); } }
protected override void PopulateRecords(IEnumerable <Match> lines) { foreach (var line in lines) { var rawRecord = UtfStr(line).Split('\n'); rawRecord = rawRecord.Where(val => val != "").ToArray(); var record = new LiteratureCredit(); foreach (var s in rawRecord) { var lc = new LitContribution(); var details = s.Split(":".ToCharArray(), 2); if (details.Length != 2) { LogTo.Fatal("Parser error "); // ReSharper disable once CoVariantArrayConversion LogTo.Fatal("Message: {0}", rawRecord); throw new Exception("Parser error in Literature Parser"); } switch (details[0]) { case "MOVI": FixMovieNames(record, details[1]); break; case "ADPT": ExtractDetails(details[1], lc); lc.CreditedFor = CreditedFor.Adaptation; break; case "BOOK": ExtractDetails(details[1], lc); lc.CreditedFor = CreditedFor.Book; break; case "CRIT": ExtractDetails(details[1], lc); lc.CreditedFor = CreditedFor.CriticalReview; break; case "ESSY": ExtractDetails(details[1], lc); lc.CreditedFor = CreditedFor.Essay; break; case "IVIW": ExtractDetails(details[1], lc); lc.CreditedFor = CreditedFor.Interview; break; case "NOVL": ExtractDetails(details[1], lc); lc.CreditedFor = CreditedFor.Novel; break; case "PROT": ExtractDetails(details[1], lc); lc.CreditedFor = CreditedFor.ProdProtocol; break; case "SCRP": ExtractDetails(details[1], lc); lc.CreditedFor = CreditedFor.Script; break; case "OTHR": ExtractDetails(details[1], lc); lc.CreditedFor = CreditedFor.Other; break; } if (string.IsNullOrWhiteSpace(lc.Name)) { continue; } if (record.Contributions.ContainsKey(lc.Name)) { record.Contributions[lc.Name].Details.Add(lc.Details.FirstOrDefault()); } else { record.Contributions.Add(lc.Name, lc); } } _records.Add(record); } }