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) { return(componentReader.ValidateContents(obj.GetChild(key), components)); }