public static RegisterDB Create(string program, string first, string last, string email, string mid, string code) { var db = new RegisterDB(); db.Email = email; db.Program = program; db.FirstName = first; db.LastName = last; db.MID = mid; db.Code = code; db.ParseDate = DateTime.Now; return(db); }
public static Prac.API.GenericTracker <RegisterDB> Parse(string data, DebugDelegate d, Prac.API.Int32Delegate progress) { Prac.API.GenericTracker <RegisterDB> db = new Prac.API.GenericTracker <RegisterDB>(); // get token defs var defs = RegisterDB.GetDefs().ToArray(); // get token stream var stream = tokh.GetStream <register_toks>(string.Empty, data, defs, d, progress); // strip out everything we don't care about var final = tokh.Filter_Keep <register_toks>(stream, register_toks.endrecord, register_toks.key_reg_code, register_toks.key_reg_email, register_toks.key_reg_firstname, register_toks.key_reg_lastname, register_toks.key_reg_mid, register_toks.key_registration_program, register_toks.quotedstring); RegisterDB cur = new RegisterDB(); int startrecidx = 0; for (int i = 0; i < final.Count; i++) { var tok = final[i]; var next = i < final.Count - 1 ? final[i + 1] : new GenericToken <register_toks>(register_toks.none); switch (tok.type) { case register_toks.key_reg_code: { if (next.isToken(register_toks.quotedstring)) { cur.Code = next.data.Replace("'", string.Empty); } } break; case register_toks.key_reg_email: { if (next.isToken(register_toks.quotedstring)) { cur.Email = next.data.Replace("'", string.Empty); } } break; case register_toks.key_registration_program: { if (next.isToken(register_toks.quotedstring)) { cur.Program = next.data.Replace("'", string.Empty); } } break; case register_toks.key_reg_mid: { if (next.isToken(register_toks.quotedstring)) { cur.MID = next.data.Replace("'", string.Empty); } } break; case register_toks.key_reg_firstname: { if (next.isToken(register_toks.quotedstring)) { cur.FirstName = next.data.Replace("'", string.Empty); } } break; case register_toks.key_reg_lastname: { if (next.isToken(register_toks.quotedstring)) { cur.LastName = next.data.Replace("'", string.Empty); } } break; case register_toks.endrecord: { cur.ParseDate = DateTime.Now; if (cur.isValid) { db.addindex(cur.Email, cur); cur = new RegisterDB(); } else { if (d != null) { var toks = tokh.ToString <register_toks>(tokh.GetTokensBetween <register_toks>(final, startrecidx, i)); d("error between: " + startrecidx + "-" + i + " data: " + toks); } startrecidx = i + 1; } } break; } } return(db); }