public override string CreateSerializationCondition(string argName, JsonSchemaAttribute attr)
        {
            if (attr == null)
            {
                return("true");
            }

            var sb = new List <string>();

            if (!double.IsNaN(attr.Minimum))
            {
                if (attr.ExclusiveMinimum)
                {
                    sb.Add($"{argName}>{attr.Minimum}"); // to int
                }
                else
                {
                    sb.Add($"{argName}>={attr.Minimum}"); // to int
                }
            }

            if (sb.Count > 0)
            {
                return(string.Join("&&", sb));
            }

            return("true");
        }
Пример #2
0
        public override void GenerateDeserializer(StreamWriter writer, string callName)
        {
            var itemCallName = callName + "_ITEM";

            writer.Write(@"
 
public static $0 $2(ListTreeNode<JsonValue> parsed)
{
    var value = new Dictionary<string, $1>();
    foreach(var kv in parsed.ObjectItems())
    {
        value.Add(kv.Key.GetString(), $3);
    }
	return value;
}
"
                         .Replace("$0", JsonSchemaAttribute.GetTypeName(ValueType))
                         .Replace("$1", m_inner.ValueType.Name)
                         .Replace("$2", callName)
                         .Replace("$3", m_inner.GenerateDeserializerCall(itemCallName, "kv.Value"))
                         );

            if (!m_inner.IsInline)
            {
                m_inner.GenerateDeserializer(writer, itemCallName);
            }
        }
        public override void GenerateDeserializer(StreamWriter writer, string callName)
        {
            var itemCallName = callName + "_ITEM";

            writer.Write(@"
public static $0 $2(ListTreeNode<JsonValue> parsed)
{
    var value = new $1[parsed.GetArrayCount()];
    int i=0;
    foreach(var x in parsed.ArrayItems())
    {
        value[i++] = $3;
    }
	return value;
} 
"
                         .Replace("$0", JsonSchemaAttribute.GetTypeName(ValueType))
                         .Replace("$1", m_inner.ValueType.Name)
                         .Replace("$2", callName)
                         .Replace("$3", m_inner.GenerateDeserializerCall(itemCallName, "x"))
                         );

            if (!m_inner.IsInline)
            {
                m_inner.GenerateDeserializer(writer, itemCallName);
            }
        }
        public override void GenerateDeserializer(StreamWriter writer, string callName)
        {
            var itemCallName = callName + "_ITEM";

            writer.Write(@"
public static $0 $2(JsonNode parsed)
{
    var value = new List<$1>();
    foreach(var x in parsed.ArrayItems())
    {
        value.Add($3);
    }
	return value;
}"
                         .Replace("$0", JsonSchemaAttribute.GetTypeName(ValueType))
                         .Replace("$1", m_inner.ValueType.Name)
                         .Replace("$2", callName)
                         .Replace("$3", m_inner.GenerateDeserializerCall(itemCallName, "x"))
                         );

            if (!m_inner.IsInline)
            {
                m_inner.GenerateDeserializer(writer, itemCallName);
            }
        }
Пример #5
0
        public FieldSerializationInfo(FieldInfo fi, string path)
        {
            m_fi   = fi;
            Path   = path + "/" + fi.Name;
            m_attr = fi.GetCustomAttributes(true).FirstOrDefault(x => x.GetType() == typeof(JsonSchemaAttribute)) as JsonSchemaAttribute;

            Serialization = GetSerialization(m_fi.FieldType, Path, m_attr);
        }
Пример #6
0
        public override string CreateSerializationCondition(string argName, JsonSchemaAttribute t)
        {
            // return $"{argName}!=null&&{argName}.Count>0";

            // this check is only /extensions/VRM/materialProperties/*
            // should export empty dictionary.
            return($"{argName}!=null");
        }
        public override string CreateSerializationCondition(string argName, JsonSchemaAttribute t)
        {
            int min = 0;

            if (t != null)
            {
                min = t.MinItems;
            }

            return($"{argName}!=null&&{argName}.Length>={min}");
        }
Пример #8
0
        static IValueSerialization GetSerialization(Type t, string path, JsonSchemaAttribute attr)
        {
            if (t.IsArray)
            {
                return(new ArraySerialization(t,
                                              GetSerialization(t.GetElementType(), path + "[]", attr)));
            }
            else if (t.IsGenericType && t.GetGenericTypeDefinition() == typeof(List <>))
            {
                return(new ListSerialization(t,
                                             GetSerialization(t.GetGenericArguments()[0], path + "[]", attr)));
            }
            else if (t.IsGenericType && t.GetGenericTypeDefinition() == typeof(Dictionary <,>) &&
                     t.GetGenericArguments()[0] == typeof(string))
            {
                return(new StringKeyDictionarySerialization(t,
                                                            GetSerialization(t.GetGenericArguments()[1], path, attr)));
            }

            // GetCollectionType(fi.FieldType, out suffix, out t);
            if (t == typeof(sbyte))
            {
                return(new Int8Serialization());
            }
            else if (t == typeof(short))
            {
                return(new Int16Serialization());
            }
            else if (t == typeof(int))
            {
                return(new Int32Serialization());
            }
            else if (t == typeof(long))
            {
                return(new Int64Serialization());
            }
            else if (t == typeof(byte))
            {
                return(new UInt8Serialization());
            }
            else if (t == typeof(ushort))
            {
                return(new UInt16Serialization());
            }
            else if (t == typeof(uint))
            {
                return(new UInt32Serialization());
            }
            else if (t == typeof(ulong))
            {
                return(new UInt64Serialization());
            }
            else if (t == typeof(float))
            {
                return(new SingleSerialization());
            }
            else if (t == typeof(double))
            {
                return(new DoubleSerialization());
            }
            else if (t == typeof(string))
            {
                return(new StringSerialization());
            }
            else if (t == typeof(bool))
            {
                return(new BooleanSerialization());
            }
            else if (t.IsEnum)
            {
                return(new EnumIntSerialization(t, attr.EnumSerializationType));
            }

            return(new ObjectSerialization(t, path));
        }
 public override string CreateSerializationCondition(string argName, JsonSchemaAttribute t)
 {
     return($"{argName}!=null");
 }
Пример #10
0
 public string CreateSerializationCondition(string argName, JsonSchemaAttribute t)
 {
     return("true");
 }
 public override string CreateSerializationCondition(string argName, JsonSchemaAttribute t)
 {
     return($"!string.IsNullOrEmpty({argName})");
 }
Пример #12
0
 public abstract string CreateSerializationCondition(string argName, JsonSchemaAttribute t);