public void Validate() { //set defaults for null values Lang = Lang ?? "cs"; Authenticate = Authenticate ?? "none"; CodeFilename = CodeFilename ?? (Lang == "cs"? "poco.cs": "poco.vb"); NameCase = NameCase ?? "none"; if (Password != null && Password.StartsWith("@")) { var fname = Password.Substring(1); var text = File.ReadAllText(fname); Password = GetToken(text); } if (Authenticate != null && !Regex.IsMatch(Authenticate?.ToLower(), "none|basic|token|oauth2", RegexOptions.IgnoreCase)) { Errors.Add($"Authenticate '{ Authenticate}' isn't valid. It is set to 'none'.");//warning Authenticate = "none"; } //validating Lang switch (Lang) { case "vb": CodeFilename = Path.ChangeExtension(CodeFilename, ".vb"); break; case "cs": CodeFilename = Path.ChangeExtension(CodeFilename, ".cs"); break; default: Errors.Add($"Invalid Language Option '{ Lang}'. It's set to 'cs'."); CodeFilename = Path.ChangeExtension(CodeFilename, ".cs"); Lang = "cs"; break; //return -1; } //validate NameCase if (string.IsNullOrEmpty(NameCase)) { Errors.Add($"NameCase '{ NameCase}' is empty. It is set to 'pas'.");//warning NameCase = "pas"; } if (!Regex.IsMatch(NameCase.ToLower(), "cam|camel|none|pas", RegexOptions.IgnoreCase)) { Errors.Add($"NameCase '{ NameCase}' isn't valid. It is set to 'pas'.");//warning NameCase = "pas"; } //validate Attributes foreach (var attribute in Attributes.ToList()) { if (attribute.Trim().StartsWith("[")) { continue; } if (!Regex.IsMatch(attribute.Trim().ToLower(), "key|req|tab|table|json|db|proto|dm|display|origin", RegexOptions.IgnoreCase)) { Errors.Add($"Attribute '{attribute}' isn't valid. It will be droped.");//warning } } }