Exemplo n.º 1
0
        public static void SchemaMap(string key, _1.Schema schema, Dictionary <string, ISchema> created,
                                     Dictionary <string, ISuspendBuilder <ISchema> > inProgress)
        {
            switch (schema.Type)
            {
            case "integer":
                created.Add(key, new SimpleSchema(SchemaType.Int));
                break;

            case "string":
                created.Add(key, new SimpleSchema(SchemaType.String));
                break;

            case "number":
                created.Add(key, new SimpleSchema(SchemaType.Number));
                break;

            case "array":
            {
                var builder = new ArraySchemaBuilder(schema.Items?.GetRef() ?? $"{key}/items", created);
                builder.Parse();
                if (builder.CanCreate())
                {
                    created.Add(key, builder.Create());
                }
                else
                {
                    inProgress.Add(key, builder);
                }

                break;
            }

            case "boolean":
                created.Add(key, new SimpleSchema(SchemaType.Bool));
                break;

            case "object":
            {
                var builder = new ClassSchemaBuilder(key.Split('/').Last(), key, schema.Required, schema, created);
                builder.Parse();
                if (builder.CanCreate())
                {
                    created.Add(key, builder.Create());
                }
                else
                {
                    inProgress.Add(key, builder);
                }

                break;
            }
            }
        }
Exemplo n.º 2
0
        public ClassSchemaBuilder(string name, string path, IEnumerable <string> requiredProperties, _1.Schema model,
                                  Dictionary <string, ISchema> schemata)
        {
            _name               = name;
            _path               = path;
            _schemata           = schemata;
            _requiredProperties = requiredProperties ?? new List <string>();

            if (model.Properties != null)
            {
                _propertiesToParse = model.Properties
                                     .Select(x => new KeyValuePair <string, string>(x.Key, x.Value.GetRef())).ToList();
            }
            else
            {
                _propertiesToParse = new List <KeyValuePair <string, string> >();
            }
        }