protected override void DoEmit() { var typeDef = this.Emitter.GetTypeDefinition(); string name = this.Emitter.Validator.GetCustomTypeName(typeDef, this.Emitter); if (name.IsEmpty()) { name = BridgeTypes.ToTypeScriptName(this.TypeInfo.Type, this.Emitter, false, true); } if (this.Namespace != null) { this.Write("export "); } this.Write("enum "); this.Write(name); this.WriteSpace(); this.BeginBlock(); if (this.TypeInfo.StaticConfig.Fields.Count > 0) { var lastField = this.TypeInfo.StaticConfig.Fields.Last(); foreach (var field in this.TypeInfo.StaticConfig.Fields) { this.Write(EnumBlock.GetEnumItemName(this.Emitter, field)); var initializer = field.Initializer; if (initializer != null && initializer is PrimitiveExpression) { this.Write(" = "); if (Helpers.IsStringNameEnum(this.TypeInfo.Type)) { this.WriteScript(((PrimitiveExpression)initializer).Value); } else { this.Write(((PrimitiveExpression)initializer).Value); } } if (field != lastField) { this.Write(","); } this.WriteNewLine(); } } this.EndBlock(); }
private void WriteFieldDeclaration(TypeConfigItem field, VariableInitializer variableInitializer) { XmlToJsDoc.EmitComment(this, field.Entity, null, variableInitializer); if (this.TypeInfo.IsEnum) { this.Write(EnumBlock.GetEnumItemName(this.Emitter, field)); } else { this.Write(field.GetName(this.Emitter)); } if (field.VarInitializer != null) { var field_rr = this.Emitter.Resolver.ResolveNode(field.VarInitializer, this.Emitter); if (field_rr is MemberResolveResult mrr && mrr.Member.Attributes.Any(a => a.AttributeType.FullName == "Bridge.OptionalAttribute")) { this.Write("?"); } } this.WriteColon(); string typeName = this.TypeInfo.IsEnum ? (Helpers.IsStringNameEnum(this.TypeInfo.Type) ? "string" : "number") : BridgeTypes.ToTypeScriptName(field.Entity.ReturnType, this.Emitter); this.Write(typeName); if (!this.TypeInfo.IsEnum) { var resolveResult = this.Emitter.Resolver.ResolveNode(field.Entity.ReturnType, this.Emitter); if (resolveResult != null && (resolveResult.Type.IsReferenceType.HasValue && resolveResult.Type.IsReferenceType.Value || resolveResult.Type.IsKnownType(KnownTypeCode.NullableOfT))) { this.Write(" | null"); } } this.WriteSemiColon(); this.WriteNewLine(); }
private void WriteFieldDeclaration(TypeConfigItem field, VariableInitializer variableInitializer) { XmlToJsDoc.EmitComment(this, field.Entity, null, variableInitializer); if (this.TypeInfo.IsEnum) { this.Write(EnumBlock.GetEnumItemName(this.Emitter, field)); } else { this.Write(field.GetName(this.Emitter)); } this.WriteColon(); string typeName = this.TypeInfo.IsEnum ? (this.Emitter.Validator.IsStringNameEnum(this.TypeInfo.Type) ? "string" : "number") : BridgeTypes.ToTypeScriptName(field.Entity.ReturnType, this.Emitter); this.Write(typeName); this.WriteSemiColon(); this.WriteNewLine(); }