Beispiel #1
0
        public void TestInterfaceGen()
        {
            var intf = new InterfaceType("testClass");

            intf.Members.Add(new PropertyMember("testProperty")
            {
                MemberType = new TypescriptTypeReference(new StringType())
            });
            intf.Members.Add(new PropertyMember("testProperty2")
            {
                Accessibility = AccessibilityEnum.Private,
                IsOptional    = true,
                MemberType    = new TypescriptTypeReference(new NumberType())
            });
            intf.Members.Add(new PropertyMember("testProperty3")
            {
                Accessibility = AccessibilityEnum.Public,
                MemberType    = new TypescriptTypeReference(new BoolType())
            });
            var fun = new FunctionDeclarationMember("myFn")
            {
                ResultType = PrimitiveType.String, Accessibility = AccessibilityEnum.Public
            };

            intf.Members.Add(fun);
            Assert.AreEqual(@"interface testClass {
    testProperty: string;
    private testProperty2?: number;
    public testProperty3: boolean;
    public myFn(): string;
}", testGen(intf));
        }
Beispiel #2
0
        public virtual FunctionDeclarationMember GenerateMethodDeclaration(MethodInfo method)
        {
            var result = new FunctionDeclarationMember(NamingStrategy.GetMethodName(method))
            {
                ExtraData = { { SOURCEMEMBER_KEY, method } }
            };

            if (method.ReturnType != typeof(void))
            {
                result.ResultType = GenerateFromType(method.ReturnType);
            }
            else
            {
                result.ResultType = PrimitiveType.Void;
            }
            foreach (var p in method.GetParameters())
            {
                var par = GenerateMethodParameter(p);
                result.Parameters.Add(par);
            }
            //generics
            if (method.IsGenericMethod)
            {
                foreach (var garg in method.GetGenericArguments())
                {
                    result.GenericParameters.Add(new GenericParameter(NamingStrategy.GetGenericArgumentName(garg))
                    {
                        ExtraData = { { SOURCETYPE_KEY, garg } }
                    });
                }
            }

            return(result);
        }
Beispiel #3
0
        public virtual FunctionDeclarationMember RewriteFunctionDeclarationMember(FunctionDeclarationMember fn)
        {
            var result = new FunctionDeclarationMember(fn.Name)
            {
                Accessibility = RewriteAccessibility(fn.Accessibility),
                Comment       = RewriteComment(fn.Comment),
                ExtraData     = RewriteExtraData(fn),
                ResultType    = RewriteTypeReference(fn.ResultType),
            };

            result.GenericParameters.AddRange(fn.GenericParameters.Select(RewriteGenericParameter).Where(x => x != null));
            result.Parameters.AddRange(fn.Parameters.Select(RewriteFunctionParameter).Where(x => x != null));
            return(result);
        }
Beispiel #4
0
        public void TestFunctions()
        {
            var cls = new ClassType("testFunctions");

            {
                var fn = new FunctionDeclarationMember("fn1");
                cls.Members.Add(fn);
            }
            {
                var fn = new FunctionDeclarationMember("fn2")
                {
                    ResultType = new ArrayType(cls)
                };
                cls.Members.Add(fn);
            }
            {
                var fn = new FunctionDeclarationMember("fn3")
                {
                    Parameters =
                    {
                        new FunctionParameter("a")
                        {
                            ParameterType = PrimitiveType.Number
                        },
                        new FunctionParameter("b")
                        {
                            ParameterType = PrimitiveType.Boolean, IsOptional = true
                        },
                        new FunctionParameter("c"),
                        new FunctionParameter("d")
                        {
                            IsRest = true, ParameterType = new ArrayType(PrimitiveType.String)
                        },
                    }
                };
                cls.Members.Add(fn);
            }
            {
                var fn = new FunctionDeclarationMember("fn4")
                {
                    GenericParameters =
                    {
                        new GenericParameter("T"),
                        new GenericParameter("T2")
                        {
                            Constraint = cls
                        },
                    },
                    Parameters =
                    {
                        new FunctionParameter("p1")
                        {
                            ParameterType = new TypescriptTypeReference("T2")
                        },
                    }
                };
                cls.Members.Add(fn);
            }
            {
                var fn = new FunctionMember("fn5", new RawStatements("return true;"))
                {
                    Parameters = { new FunctionParameter("arg")
                                   {
                                       ParameterType = PrimitiveType.Boolean
                                   } },
                };
                cls.Members.Add(fn);
            }
            {
                var fn = new FunctionMember("fn6", null)
                {
                    Parameters = { new FunctionParameter("arg")
                                   {
                                       ParameterType = PrimitiveType.String, DefaultValue = new RawStatements("'42'")
                                   } },
                };
                cls.Members.Add(fn);
            }

            Assert.AreEqual(@"
class testFunctions {
    fn1();
    fn2(): testFunctions[];
    fn3(a: number, b?: boolean, c, ...d: string[]);
    fn4<T, T2 extends testFunctions>(p1: T2);
    fn5(arg: boolean) {
        return true;
    }
    fn6(arg: string = '42') {
    }
}
".Trim(), testGen(cls));
        }
Beispiel #5
0
 public virtual void VisitFunctionDeclarationMember(FunctionDeclarationMember fn)
 {
     VisitFunctionMemberBase(fn);
 }