using System.Collections.Generic;
public static void Main() {
"AA" + Environment.NewLine +
"Origin: Egypt" + Environment.NewLine +
"According to the Book Of The Dead, herald at the door of the Third Arit" + Environment.NewLine +
"AABIT" + Environment.NewLine +
"Origin: Egypt" + Environment.NewLine +
"A goddess of song, voice, music and art" + Environment.NewLine
var result = Parse(data);
Console.WriteLine("#Deities: " + result.Count());
foreach(var entry in result) {
Console.WriteLine("Name: " + entry.Name + "\t Origin: " + entry.Origin + "\t Description: " + entry.Description);
public static IEnumerable<Deity> Parse(string source) {
var deities = new List<Deity>();
var currentDeity = new Deity();
var currentFieldIndex = 0;
var lines = source.Split(new [] {Environment.NewLine}, StringSplitOptions.None);
Console.WriteLine("#Lines: " + lines.Count());
foreach (string line in lines) {
if (string.IsNullOrWhiteSpace(line)) {
if (currentFieldIndex > 2) {
deities.Add(currentDeity);
currentDeity = new Deity();
switch(currentFieldIndex) {
case 0: currentDeity.Name = line; currentFieldIndex++; break;
case 1: currentDeity.Origin = line.Replace("Origin: ", string.Empty); currentFieldIndex++; break;
case 2: currentDeity.Description = line; currentFieldIndex++; break;
default: throw new ArgumentException("Expected 3 lines per entry.");
public int Id { get; set; }
public string Name { get; set; }
public string Origin { get; set; }
public string Description { get; set; }