public static JSType GetJSType(TypeStructure type, bool isPromise = false) { JSType jsType; if (type.IsSytemType) { if (!type.IsArray) { jsType = TypeMappings.ContainsKey(type.Type) ? (JSType)Activator.CreateInstance(TypeMappings[type.Type].GetType()) : new JSString(); } else { jsType = TypeMappingsArray.ContainsKey(type.Type) ? (JSType)Activator.CreateInstance(TypeMappingsArray[type.Type].GetType()) : new JSStringArray(); } } else { if (!type.IsArray) { jsType = new JSClass { ClassName = type.TypeName, }; } else { jsType = new JSClassArray { ClassName = type.TypeName, }; } } jsType.IsPromise = isPromise; return(jsType); }
public void NewDirectClassAssingment() { var typeStructure = new TypeStructure { IsArray = false, IsSytemType = false, Name = "Person", TypeName = "PersonType", Properties = new List <TypeStructure> { new TypeStructure { Name = "Age", Type = typeof(int), IsSytemType = true }, new TypeStructure { Name = "Name", Type = typeof(String), IsSytemType = true }, new TypeStructure { Name = "Details", TypeName = "PersonDetails" } } }; var jsType = new CodeBuilder.JS.Types.JSClass { ClassName = "Person" }; var jsCode = ((JSRenderble)DI.Get <IDirectAssignmentProperty>(typeStructure, jsType)).GetText(); Assert.AreEqual(jsCode, "/**\r\n * @type PersonType\r\n*/\r\nthis.Person = typeof Person !== \"undefined\" ? new PersonType(Person.Age,Person.Name,Person.Details) : null;\r\n"); }