private static string WriteToLua(WDBSheet sheet, string templateContent, string[] assemblyNames, EntryConfig config) { StringContextContainer context = new StringContextContainer(); context.Add("__sheet__", sheet); string content = TemplateEngine.Generate(context, templateContent, assemblyNames, config); context.Remove("__sheet__"); return(content); }
private static bool VerifySheet(WDBSheet sheet) { List <string> errors = (List <string>)context.Get(WDBContextIENames.CONTEXT_ERRORS_NAME); if (string.IsNullOrEmpty(sheet.Name)) { errors.Add(WDBVerifyConst.VERIFY_SHEET_NAME_EMPTY_ERR); return(false); } if (!Regex.IsMatch(sheet.Name, WDBVerifyConst.VERIFY_SHEET_NAME_REGEX)) { errors.Add(string.Format(WDBVerifyConst.VERIFY_SHEET_NAME_REGEX_ERR, sheet.Name)); return(false); } if (sheet.FieldCount == 0) { errors.Add(string.Format(WDBVerifyConst.VERIFY_SHEET_NO_FIELD_ERR, sheet.Name)); return(false); } if (sheet.LineCount == 0) { errors.Add(string.Format(WDBVerifyConst.VERIFY_SHEET_NO_ROW_ERR, sheet.Name)); return(false); } bool result = true; for (int i = 0; i < sheet.FieldCount; ++i) { WDBField field = sheet.GetFieldAtIndex(i); WDBFieldVerify fieldVerify = new WDBFieldVerify() { FieldType = field.FieldType, FieldPlatform = field.FieldPlatform, ValueValidations = field.ValueValidations, }; fieldVerifyDic.Add(field, fieldVerify); if (!VerifyField(field)) { result = false; } } if (!result) { return(false); } context.Add(WDBContextIENames.CONTEXT_SHEET_NAME, sheet); for (int i = 0; i < sheet.LineCount; ++i) { WDBLine line = sheet.GetLineAtIndex(i); if (line.CellCount != sheet.FieldCount) { result = false; errors.Add(string.Format(WDBVerifyConst.VERIFY_SHEET_FIELD_ROW_ERR, sheet.FieldCount, line.Row)); } } if (result) { for (int i = 0; i < sheet.FieldCount; ++i) { WDBField field = sheet.GetFieldAtIndex(i); WDBFieldVerify fieldVerify = fieldVerifyDic[field]; context.Add(WDBContextIENames.CONTEXT_FIELD_NAME, field); context.Add(WDBContextIENames.CONTEXT_FIELD_VERIFY_NAME, fieldVerify); for (int j = 0; j < sheet.LineCount; ++j) { WDBLine line = sheet.GetLineAtIndex(j); WDBCell cell = line.GetCellByIndex(i); context.Add(WDBContextIENames.CONTEXT_LINE_NAME, line); if (cell.Col != field.Col) { result = false; errors.Add(string.Format(WDBVerifyConst.VERIFY_CELL_COL_NOTSAME_ERR, cell.Row, cell.Col)); } else if (fieldVerify.ValueValidations != null && fieldVerify.ValueValidations.Length > 0) { context.Add(WDBContextIENames.CONTEXT_CELL_NAME, cell); foreach (var cellValidation in fieldVerify.ValueValidations) { context.InjectTo(cellValidation); if (!cellValidation.Verify()) { result = false; } } context.Remove(WDBContextIENames.CONTEXT_CELL_NAME); } context.Remove(WDBContextIENames.CONTEXT_LINE_NAME); } context.Remove(WDBContextIENames.CONTEXT_FIELD_NAME); context.Remove(WDBContextIENames.CONTEXT_FIELD_VERIFY_NAME); } } context.Remove(WDBContextIENames.CONTEXT_SHEET_NAME); return(result); }
public bool Verify(ref List <string> errors) { if (string.IsNullOrEmpty(Name)) { errors.Add(WDBConst.VERIFY_SHEET_NAME_EMPTY_ERR); return(false); } if (!Regex.IsMatch(Name, WDBConst.VERIFY_SHEET_NAME_REGEX)) { errors.Add(string.Format(WDBConst.VERIFY_SHEET_NAME_REGEX_ERR, Name)); return(false); } if (FieldCount == 0) { errors.Add(string.Format(WDBConst.VERIFY_SHEET_NO_FIELD_ERR, Name)); return(false); } if (RowCount == 0) { errors.Add(string.Format(WDBConst.VERIFY_SHEET_NO_ROW_ERR, Name)); return(false); } bool result = true; foreach (var field in fields) { if (!field.Verify(ref errors)) { if (result) { result = false; } } } if (!result) { return(false); } StringContextContainer context = new StringContextContainer(); context.Add(WDBConst.CONTEXT_SHEET_NAME, this); context.Add(WDBConst.CONTEXT_ERRORS_NAME, errors); foreach (var row in rows) { if (row.CellCount != FieldCount) { if (result) { result = false; } errors.Add(string.Format(WDBConst.VERIFY_SHEET_FIELD_ROW_ERR, FieldCount, row.Row)); } } if (!result) { return(false); } for (int i = 0; i < fields.Count; ++i) { var field = fields[i]; context.Add(WDBConst.CONTEXT_FIELD_NAME, field); foreach (var row in rows) { var cell = row.GetCellByIndex(i); if (cell.Col != field.Col) { if (result) { result = false; } errors.Add(string.Format(WDBConst.VERIFY_CELL_COL_NOTSAME_ERR, cell.Row, cell.Col)); } else { context.Add(WDBConst.CONTEXT_CELL_NAME, cell); foreach (var cellValidation in field.Validations) { context.InjectTo(cellValidation); } context.Remove(WDBConst.CONTEXT_CELL_NAME); } } context.Remove(WDBConst.CONTEXT_FIELD_NAME); } return(errors.Count == 0); }