(depth int, typeOf reflect.Type, customCode map[string]string)
| 631 | } |
| 632 | |
| 633 | func (t *TypeScriptify) convertType(depth int, typeOf reflect.Type, customCode map[string]string) (string, error) { |
| 634 | if _, found := t.alreadyConverted[typeOf.String()]; found { // Already converted |
| 635 | return "", nil |
| 636 | } |
| 637 | fields := t.deepFields(typeOf) |
| 638 | t.logf(depth, "Converting type %s", typeOf.String()) |
| 639 | if differentNamespaces(t.Namespace, typeOf) { |
| 640 | return "", nil |
| 641 | } |
| 642 | |
| 643 | t.alreadyConverted[typeOf.String()] = true |
| 644 | |
| 645 | entityName := t.Prefix + nameTypeOf(typeOf) + t.Suffix |
| 646 | |
| 647 | if typeClashWithReservedKeyword(entityName) { |
| 648 | warnAboutTypesClash(entityName) |
| 649 | } |
| 650 | |
| 651 | result := "" |
| 652 | if t.CreateInterface { |
| 653 | result += fmt.Sprintf("interface %s {\n", entityName) |
| 654 | } else { |
| 655 | result += fmt.Sprintf("class %s {\n", entityName) |
| 656 | } |
| 657 | if !t.DontExport { |
| 658 | result = "export " + result |
| 659 | } |
| 660 | builder := typeScriptClassBuilder{ |
| 661 | types: t.kinds, |
| 662 | indent: t.Indent, |
| 663 | prefix: t.Prefix, |
| 664 | suffix: t.Suffix, |
| 665 | namespace: t.Namespace, |
| 666 | } |
| 667 | |
| 668 | for _, field := range fields { |
| 669 | isPtr := field.Type.Kind() == reflect.Ptr |
| 670 | if isPtr { |
| 671 | field.Type = field.Type.Elem() |
| 672 | } |
| 673 | jsonFieldName := t.getJSONFieldName(field, isPtr) |
| 674 | if len(jsonFieldName) == 0 || jsonFieldName == "-" { |
| 675 | continue |
| 676 | } |
| 677 | |
| 678 | var err error |
| 679 | fldOpts := t.getFieldOptions(typeOf, field) |
| 680 | if fldOpts.TSTransform != "" { |
| 681 | t.logf(depth, "- simple field %s.%s", typeOf.Name(), field.Name) |
| 682 | err = builder.AddSimpleField(jsonFieldName, field, fldOpts) |
| 683 | } else if _, isEnum := t.enums[field.Type]; isEnum { |
| 684 | t.logf(depth, "- enum field %s.%s", typeOf.Name(), field.Name) |
| 685 | builder.AddEnumField(jsonFieldName, field) |
| 686 | } else if fldOpts.TSType != "" { // Struct: |
| 687 | t.logf(depth, "- simple field %s.%s", typeOf.Name(), field.Name) |
| 688 | err = builder.AddSimpleField(jsonFieldName, field, fldOpts) |
| 689 | } else if field.Type.Kind() == reflect.Struct { // Struct: |
| 690 | t.logf(depth, "- struct %s.%s (%s)", typeOf.Name(), field.Name, field.Type.String()) |
no test coverage detected