public override ReadResults Validate(JsonObject obj, string key, ComponentReader componentReader, Components components, IStringReader reader, int start, DispatcherResources resources) { if (obj.GetChild(key) is not JsonArray actualArray) { reader.SetCursor(start); return(ReadResults.Failure(ComponentCommandError.InvalidComponent(key, JsonArgumentType.Array, obj.GetChild(key).GetArgumentType()).WithContext(reader))); } if (actualArray.GetLength() == 0 && !MayBeEmpty) { reader.SetCursor(start); return(ReadResults.Failure(ComponentCommandError.EmptyComponent().WithContext(reader))); } ReadResults readResults; foreach (IJsonArgument child in actualArray.GetChildren()) { if (ArrayContents is not null && child.GetArgumentType() != ArrayContents) { reader.SetCursor(start); return(ReadResults.Failure(ComponentCommandError.InvalidComponentArray(key, ArrayContents.Value, child.GetArgumentType()).WithContext(reader))); } readResults = componentReader.ValidateContents(child, components); if (!readResults.Successful) { return(readResults); } } return(ReadResults.Success()); }
public override ReadResults Validate(JsonObject obj, string key, ComponentReader componentReader, Components components, IStringReader reader, int start, DispatcherResources resources) { if (obj.GetChild(key) is not JsonNumber) { reader.SetCursor(start); return(ReadResults.Failure(ComponentCommandError.InvalidComponent(key, JsonArgumentType.Number, obj.GetChild(key).GetArgumentType()).WithContext(reader))); } return(ReadResults.Success()); }
public override ReadResults Validate(JsonObject obj, string key, ComponentReader componentReader, Components components, IStringReader reader, int start, DispatcherResources resources) { if (!IsText(obj.GetChild(key))) { reader.SetCursor(start); return(ReadResults.Failure(ComponentCommandError.InvalidComponent(key, JsonArgumentType.String, obj.GetChild(key).GetArgumentType()).WithContext(reader))); } if (!UUID.TryParse(obj.GetChild(key).ToString(), out _)) { reader.SetCursor(start); return(ReadResults.Failure(CommandError.InvalidUuid().WithContext(reader))); } return(ReadResults.Success()); }
public override ReadResults Validate(JsonObject obj, string key, ComponentReader componentReader, Components components, IStringReader reader, int start, DispatcherResources resources) { if (!obj.ContainsKey(BindTo)) { return(ReadResults.Success()); } if (!IsText(obj.GetChild(BindTo))) { reader.SetCursor(start); return(ReadResults.Failure(ComponentCommandError.InvalidComponent(key, JsonArgumentType.String, obj.GetChild(BindTo).GetArgumentType()).WithContext(reader))); } string binding = obj.GetChild(BindTo).ToString(); if (Values.TryGetValue(binding, out ComponentArgument argument)) { return(argument.Validate(obj, key, componentReader, components, reader, start, resources)); } return(ReadResults.Success()); }