public override void Build(Transpilation context) { if (Assembly == null) { throw new InvalidDataException("Please specify an assembly."); } var name = string.Join(".", Assembly.GetName().Name .TrimEnd() .Split('.') .Select(s => s.CamelCase())) + ".decorators.ts"; File = new TypescriptFile { Path = Path.Combine(context.Path, name) }; File.Elements.Add(new Comment("This file is generated from Audacia.Typescript.Transpiler. Any changes will be overwritten. \n")); foreach (var type in Types) { var attributeUsage = type.GetCustomAttribute <AttributeUsageAttribute>(); if (attributeUsage == null || attributeUsage.ValidOn.HasFlag(AttributeTargets.Class) || attributeUsage.ValidOn.HasFlag(AttributeTargets.Enum)) { File.Elements.Add(new ClassDecoratorFunction(type.ClassDecoratorName(), type.Name)); } if (attributeUsage == null || attributeUsage.ValidOn.HasFlag(AttributeTargets.Property)) { File.Elements.Add(new PropertyDecoratorFunction(type.PropertyDecoratorName(), type.Name)); } } }
public InterfaceBuilder(Type sourceType, FileBuilder input, Transpilation outputContext) : base(sourceType, input, outputContext) { _typeArguments = sourceType.GetGenericArguments(); _interfaces = SourceType.GetDeclaredInterfaces() .Where(t => !t.Namespace.StartsWith(nameof(System))) .Where(i => input.Namespaces == null || input.Namespaces.Select(n => n.Name).Contains(i.Namespace)); _properties = sourceType.GetMembers(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly) .Where(mi => mi.MemberType == MemberTypes.Property) .Cast <PropertyInfo>(); }
public static TypeBuilder Create(Type type, FileBuilder input, Transpilation output) { if (type.IsInterface) { return(new InterfaceBuilder(type, input, output)); } if (type.IsEnum) { return(new EnumBuilder(type, input, output)); } return(new ClassBuilder(type, input, output)); }
public ClassBuilder(Type sourceType, FileBuilder input, Transpilation outputContext) : base(sourceType, input, outputContext) { if (OutputContext.Properties.Initialize) { Instance = CreateInstance(); } _typeArguments = sourceType.GetGenericArguments(); _interfaces = SourceType.GetDeclaredInterfaces() .Where(t => t.Namespace == null || !t.Namespace.StartsWith(nameof(System))) .Where(i => !input.Namespaces.Any() || input.Namespaces.Select(n => n.Name).Contains(i.Namespace)); _properties = sourceType.GetProperties(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly) .Where(p => !p.GetIndexParameters().Any()) .Where(p => !p.GetMethod.IsPrivate) .Where(p => !p.GetMethod.IsAssembly); _attributes = sourceType.GetCustomAttributes(false).Cast <Attribute>().Where(t => t.GetType().IsPublic).ToList(); }
public TypeBuilder(Type sourceType, FileBuilder input, Transpilation outputContext) { SourceType = sourceType; Input = input; OutputContext = outputContext; }
public EnumBuilder(Type sourceType, FileBuilder input, Transpilation outputContext) : base(sourceType, input, outputContext) { }