Exemplo n.º 1
0
        protected ReadResults ValidateChildren(JsonObject obj, string key, ComponentReader componentReader, Components components, IStringReader reader, int start, DispatcherResources resources)
        {
            ReadResults readResults;

            foreach (KeyValuePair <string, ComponentArgument> child in Children)
            {
                if (obj.ContainsKey(child.Key))
                {
                    readResults = child.Value.Validate(obj, child.Key, componentReader, components, reader, start, resources);
                    if (MatchFirst || !readResults.Successful)
                    {
                        return(readResults);
                    }
                }
                else if (!child.Value.Optional && !MatchFirst)
                {
                    reader.SetCursor(start);
                    return(ReadResults.Failure(ComponentCommandError.IncompleteComponent(key, this).WithContext(reader)));
                }
            }
            if (MatchFirst)
            {
                reader.SetCursor(start);
                return(ReadResults.Failure(ComponentCommandError.UnknownComponent(obj).WithContext(reader)));
            }
            return(ReadResults.Success());
        }
Exemplo n.º 2
0
        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());
        }
Exemplo n.º 3
0
 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());
 }
Exemplo n.º 4
0
 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());
 }
Exemplo n.º 5
0
        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());
        }