public static void ValidateSetting(SettingValidation validation, IEnumerable <LobbySetting> lobbySettings, JToken jobjectSettingContainer, params string[] additional) { // Iterate through all input lobby settings. foreach (JProperty lobbySetting in jobjectSettingContainer.Children <JProperty>()) { if (additional != null && additional.Contains(lobbySetting.Name)) { continue; } // Get the related setting. LobbySetting relatedSetting = lobbySettings.FirstOrDefault(ls => ls.Name == lobbySetting.Name); // relatedSetting will be null if there are no settings with the name. if (relatedSetting == null) { validation.InvalidSetting(lobbySetting.Name); } // Validate the input value. else { relatedSetting.CheckValue(validation, lobbySetting.Value); } } }
public override void CheckValue(SettingValidation validation, JToken value) { if (value.ToObject <object>() is bool == false) { validation.IncorrectType(Name, "boolean"); } }
public static bool Validate(JObject jobject, FileDiagnostics diagnostics, DocRange range) { SettingValidation validation = new SettingValidation(); // Check for invalid properties. foreach (JProperty setting in jobject.Properties()) { if (!new string[] { "Lobby", "Modes", "Heroes" }.Contains(setting.Name)) { validation.InvalidSetting(setting.Name); } } // Check lobby settings. if (jobject.TryGetValue("Lobby", out JToken lobbySettings)) { ValidateSetting(validation, LobbySettings, lobbySettings); } // Check modes. if (jobject.TryGetValue("Modes", out JToken modes)) { ModeSettingCollection.Validate(validation, (JObject)modes); } // Check heroes. if (jobject.TryGetValue("Heroes", out JToken heroes)) { HeroesRoot.Validate(validation, (JObject)heroes); } validation.Dump(diagnostics, range); return(!validation.HasErrors()); }
public static void Validate(SettingValidation validation, JObject modes) { foreach (var modeCollection in AllModeSettings) { if (modes.TryGetValue(modeCollection.ModeName, out JToken modeSettingsToken)) { Ruleset.ValidateSetting(validation, modeCollection, modeSettingsToken, "Enabled Maps", "Disabled Maps"); } } }
public static void Validate(SettingValidation validation, JObject heroRoot) { if (heroRoot.TryGetValue("General", out JToken generalToken)) { HeroSettingCollection.Validate(validation, (JObject)generalToken); } if (heroRoot.TryGetValue("Team 1", out JToken team1Token)) { HeroSettingCollection.Validate(validation, (JObject)team1Token); } if (heroRoot.TryGetValue("Team 2", out JToken team2Token)) { HeroSettingCollection.Validate(validation, (JObject)team2Token); } }
public override void CheckValue(SettingValidation validation, JToken value) { try { string str = value.ToObject <string>(); if (!Values.Contains(str)) { validation.Error($"Expected one of the following values for property '{Name}': {string.Join(", ", Values.Select(v => "'" + v + "'"))}", false); } } catch { validation.IncorrectType(Name, "string"); } }
public override void CheckValue(SettingValidation validation, JToken value) { try { double number = value.ToObject <double>(); if (number < Min) { validation.Error($"The property '{Name}' requires a number above {Min}, got {number}.", false); } if (number > Max) { validation.Error($"The property '{Name}' requires a number below {Max}, got {number}.", false); } } catch { validation.IncorrectType(Name, "number"); } }
public static void Validate(SettingValidation validation, JObject heroes) { foreach (JProperty property in heroes.Properties()) { if (property.Name == "Enabled Heroes" || property.Name == "Disabled Heroes") { continue; } HeroSettingCollection relatedHeroCollection = AllHeroSettings.FirstOrDefault(hs => hs.HeroName == property.Name); if (relatedHeroCollection == null) { validation.InvalidSetting(property.Name); } else { Ruleset.ValidateSetting(validation, relatedHeroCollection, property.Value); } } }
public static bool Validate(JObject jobject, FileDiagnostics diagnostics, DocRange range) { SettingValidation validation = new SettingValidation(); // Check for invalid properties. foreach (JProperty setting in jobject.Properties()) { if (!new string[] { "Lobby", "Modes", "Heroes", "Description", "Workshop", "Extensions", "Mode Name" }.Contains(setting.Name)) { validation.InvalidSetting(setting.Name); } } // Check lobby settings. if (jobject.TryGetValue("Lobby", out JToken lobbySettings)) { ValidateSetting(validation, LobbySettings, lobbySettings); } // Check modes. if (jobject.TryGetValue("Modes", out JToken modes)) { ModeSettingCollection.Validate(validation, (JObject)modes); } // Check heroes. if (jobject.TryGetValue("Heroes", out JToken heroes)) { HeroesRoot.Validate(validation, (JObject)heroes); } // Check description. if (jobject.TryGetValue("Description", out JToken description) && description.Type != JTokenType.String) { validation.IncorrectType("Description", "string"); } // Check mode name. if (jobject.TryGetValue("Mode Name", out JToken modeName) && modeName.Type != JTokenType.String) { validation.IncorrectType("Mode Name", "string"); } // Check extensions. if (jobject.TryGetValue("Extensions", out JToken extensionsToken) // Make sure the extension group's value is an object. && validation.TryGetObject("Extensions", extensionsToken, out var extensions)) { // Check each extension. foreach (var prop in extensions) { // The extension name does not exist. if (!ExtensionInfo.Extensions.Any(e => e.Name == prop.Key)) { validation.Error($"The extension '{prop.Key}' does not exist."); } // The extension value is not a boolean. else if (prop.Value.Type != JTokenType.Boolean) { validation.Error($"The value of the extension '{prop.Key}' must be a boolean."); } } } validation.Dump(diagnostics, range); return(!validation.HasErrors()); }
/// <summary>Validates the json value.</summary> public abstract void CheckValue(SettingValidation validation, JToken value);