public static DegreeAuditReport Parse(string text)
        {
            var dar = new DegreeAuditReport();

            var sections = text.Split(new [] { BREAK }, StringSplitOptions.RemoveEmptyEntries).ToList();

            FillMainSection(dar, sections[0]);

            dar.HasRemainingReqs = sections[1].Contains(REMAINING_REQ);

            for (var i = 2; i < sections.Count; i++)
            {
                var section = sections[i];

                if (section.Contains(NONTECH))
                {
                    var nonTechSections = new List <string> {
                        section
                    };
                    for (var j = i + 1; j < sections.Count; j++)
                    {
                        //if (section.Contains())
                        //{

                        //}
                    }
                }
            }

            return(dar);
        }
        private static void FillMainSection(DegreeAuditReport dar, string mainSection)
        {
            var prepared = Regex.Match(mainSection, "PREPARED:(.*)\n").Groups[1].Value.Trim();

            dar.PreparedDate = DateTime.ParseExact(prepared, "MM/dd/yy - HH:mm", CultureInfo.InvariantCulture);

            var      graduation = Regex.Match(mainSection, "GRADUATION DATE:(.*)\n").Groups[1].Value.Trim();
            DateTime tmp;

            if (DateTime.TryParse(graduation, out tmp))
            {
                dar.GraduationDate = tmp;
            }

            var catalog = Regex.Match(mainSection, "CATALOG YEAR:(.*)\n").Groups[1].Value.Trim();

            dar.CatalogYear = int.Parse(catalog);

            dar.ProgramCode = Regex.Match(mainSection, "PROGRAM CODE:(.*)CATALOG YEAR:").Groups[1].Value.Trim();
            dar.Program     = Regex.Match(mainSection, "DEGREE AUDIT FOR (.*) PROGRAM").Groups[1].Value.Trim();
        }
        private static void FillMainSection(DegreeAuditReport dar, string mainSection)
        {
            var prepared = Regex.Match(mainSection, "PREPARED:(.*)\n").Groups[1].Value.Trim();
            dar.PreparedDate = DateTime.ParseExact(prepared, "MM/dd/yy - HH:mm", CultureInfo.InvariantCulture);

            var graduation = Regex.Match(mainSection, "GRADUATION DATE:(.*)\n").Groups[1].Value.Trim();
            DateTime tmp;
            if (DateTime.TryParse(graduation, out tmp))
            {
                dar.GraduationDate = tmp;
            }

            var catalog = Regex.Match(mainSection, "CATALOG YEAR:(.*)\n").Groups[1].Value.Trim();
            dar.CatalogYear = int.Parse(catalog);

            dar.ProgramCode = Regex.Match(mainSection, "PROGRAM CODE:(.*)CATALOG YEAR:").Groups[1].Value.Trim();
            dar.Program = Regex.Match(mainSection, "DEGREE AUDIT FOR (.*) PROGRAM").Groups[1].Value.Trim();
        }
        public static DegreeAuditReport Parse(string text)
        {
            var dar = new DegreeAuditReport();

            var sections = text.Split(new []{BREAK}, StringSplitOptions.RemoveEmptyEntries).ToList();

            FillMainSection(dar, sections[0]);

            dar.HasRemainingReqs = sections[1].Contains(REMAINING_REQ);

            for (var i = 2; i < sections.Count; i++)
            {
                var section = sections[i];

                if (section.Contains(NONTECH))
                {
                    var nonTechSections = new List<string>{section};
                    for (var j = i + 1; j < sections.Count; j++)
                    {
                        //if (section.Contains())
                        //{

                        //}
                    }
                }
            }

            return dar;
        }