Exemplo n.º 1
0
        public TypescriptTypeCreator(ITypescriptTypeCreator classCreator, ITypescriptTypeCreator interfaceCreator, ITypescriptTypeCreator enumCreator)
        {
            this.classCreator     = classCreator;
            this.interfaceCreator = interfaceCreator;
            this.enumCreator      = enumCreator;

            this.SetTypeCreatorRoot(this);
        }
Exemplo n.º 2
0
        public static TypescriptGenericTypeArguments GetGenericTypeArgumentsFor(ITypescriptTypeCreator typeCreator, Type baseType, TypescriptModel model)
        {
            var result = new TypescriptGenericTypeArguments();

            foreach (var genericTypeArgument in baseType.GetGenericArguments())
            {
                var tsType = typeCreator.GetTypeFor(genericTypeArgument, model);

                tsType.Match(
                    primitive => result.Add(primitive),
                    tsClass => result.Add(tsClass),
                    tsInterface => result.Add(tsInterface),
                    tsEnumerable => { throw new Exception("enum cannot be a generic type parameter"); },
                    genericTypeParameter => result.Add(genericTypeParameter));
            }
            return(result);
        }
        public static TypescriptType ClassTypeToTypescriptClass(this Type type, ITypescriptTypeCreator typeCreator, TypescriptModel model)
        {
            // TODO Check if type is indeed a class..
            if (model.knownTypes.ContainsKey(type))
            {
                return(model.knownTypes[type]);
            }
            else
            {
                var newClass = new TypescriptClass
                {
                    Name = type.NameWithoutGeneric()
                };
                model.knownTypes.Add(type, newClass.ToTypescriptType());
                newClass.BaseClass            = type.BaseType.ToTypescriptBaseClass(model);
                newClass.Content              = type.GetTypescriptProperties(typeCreator, model).ToClassContent();
                newClass.GenricTypeParameters = TypescriptTypeCreatorBase.GetGenericTypeParametersFor(type);

                return(newClass.ToTypescriptType());
            }
        }
Exemplo n.º 4
0
        public static TypescriptType ClassTypeToTypescriptInterface(this Type type, ITypescriptTypeCreator typeCreator, TypescriptModel model)
        {
            // TODO validate parameters. the input hsould be a class type...
            if (model.knownTypes.ContainsKey(type))
            {
                return(model.knownTypes[type]);
            }
            else
            {
                var newInterface = new TypescriptInterface
                {
                    Name = type.NameWithoutGeneric()
                };
                model.knownTypes.Add(type, newInterface.ToTypescriptType());
                // TODO: implement inherrited interfaces. newInterface. = GetBaseClassFor(type.BaseType, model);
                newInterface.BaseType             = type.ClassBaseClassAndInterfacesAsBaseInterfaces(typeCreator, model);
                newInterface.Content              = type.GetInterfaceContent(typeCreator, model);
                newInterface.GenricTypeParameters = TypescriptTypeCreatorBase.GetGenericTypeParametersFor(type);

                return(newInterface.ToTypescriptType());
            }
        }
Exemplo n.º 5
0
 public void SetTypeCreatorRoot(ITypescriptTypeCreator typescriptTypeCreatorRoot)
 {
     this.classCreator.SetTypeCreatorRoot(typescriptTypeCreatorRoot);
     this.interfaceCreator.SetTypeCreatorRoot(typescriptTypeCreatorRoot);
     this.enumCreator.SetTypeCreatorRoot(typescriptTypeCreatorRoot);
 }
Exemplo n.º 6
0
 public void SetTypeCreatorRoot(ITypescriptTypeCreator typescriptTypeCreatorRoot)
 {
     this.typeCreator = typescriptTypeCreatorRoot;
 }
Exemplo n.º 7
0
 public void Initialize(ITypescriptTypeCreator typeCreator)
 {
     this.typeCreator = typeCreator;
 }
 public static IEnumerable <TypescriptProperty> GetTypescriptProperties(this Type type, ITypescriptTypeCreator typeCreator, TypescriptModel model)
 {
     return(type.GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public).Select(property => new TypescriptProperty
     {
         Name = property.Name,
         Accesability = TypescriptAccesModifier.@public,
         DefaultValue = new None <String>(),
         Type = typeCreator.GetTypeFor(property.PropertyType, model)
     }));
 }
Exemplo n.º 9
0
 public void SetTypeCreatorRoot(ITypescriptTypeCreator typescriptTypeCreatorRoot)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 10
0
 public static TypescriptInterfaceContentList GetInterfaceContent(this Type type, ITypescriptTypeCreator typeCreator, TypescriptModel model)
 {
     return(new TypescriptInterfaceContentList(type.GetTypescriptProperties(typeCreator, model).Select(x => x.ToTypescriptInterfaceContent())));
 }
Exemplo n.º 11
0
 private static IOption <TypescriptInterfaceBaseType> ClassBaseClassToTypescriptInterfaceBase(this Type baseType, ITypescriptTypeCreator typeCreator, TypescriptModel model)
 {
     return(baseType.Match()
            .With <IOption <TypescriptInterfaceBaseType> >(typeof(Object), new None <TypescriptInterfaceBaseType>())
            .Else(NewTypescriptInterfaceBase));
 }
Exemplo n.º 12
0
        private static TypescriptInterfaceBaseTypes ClassBaseClassAndInterfacesAsBaseInterfaces(this Type classType, ITypescriptTypeCreator typeCreator, TypescriptModel model)
        {
            var interfaceBaseInterfaces   = classType.TypescriptImplementedInterfaces();
            var classBaseClassAsInterface = classType.BaseType.ClassBaseClassToTypescriptInterfaceBase(typeCreator, model);

            classBaseClassAsInterface.IfNotNullDo(x => interfaceBaseInterfaces.Add(x));
            return(interfaceBaseInterfaces);
        }
Exemplo n.º 13
0
        public static TypescriptType InterfaceTypeToTypescriptInterface(this Type type, ITypescriptTypeCreator typeCreator, TypescriptModel model)
        {
            // TODO Check and refactor this and method below.
            if (model.knownTypes.ContainsKey(type))
            {
                return(model.knownTypes[type]);
            }
            else
            {
                var newInterface = new TypescriptInterface
                {
                    Name = type.NameWithoutGeneric()
                };
                model.knownTypes.Add(type, newInterface.ToTypescriptType());
                // TODO: implement inherrited interfaces. newInterface. = GetBaseClassFor(type.BaseType, model);
                newInterface.BaseType             = type.TypescriptImplementedInterfaces();
                newInterface.Content              = type.GetInterfaceContent(typeCreator, model);
                newInterface.GenricTypeParameters = TypescriptTypeCreatorBase.GetGenericTypeParametersFor(type);

                return(newInterface.ToTypescriptType());
            }
        }