MCPcopy
hub / github.com/wailsapp/wails / convertType

Method convertType

v2/internal/typescriptify/typescriptify.go:633–829  ·  view source on GitHub ↗
(depth int, typeOf reflect.Type, customCode map[string]string)

Source from the content-addressed store, hash-verified

631}
632
633func (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())

Callers 1

ConvertMethod · 0.95

Calls 15

deepFieldsMethod · 0.95
logfMethod · 0.95
getJSONFieldNameMethod · 0.95
getFieldOptionsMethod · 0.95
AddSimpleFieldMethod · 0.95
AddEnumFieldMethod · 0.95
AddStructFieldMethod · 0.95
AddMapFieldMethod · 0.95
AddSimpleArrayFieldMethod · 0.95
differentNamespacesFunction · 0.85
nameTypeOfFunction · 0.85

Tested by

no test coverage detected