Exemplo n.º 1
0
        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 NewDirectAssingmentArray()
        {
            var typeStructure = new TypeStructure
            {
                IsArray     = true,
                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.JSClassArray
            {
                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\" ? Person.map(x=> new PersonType(x.Age,x.Name,x.Details)) : [];");
        }