feat: tag parsing

This commit is contained in:
2025-02-13 19:21:14 +07:00
parent 5380bd109a
commit a1df30a318
7 changed files with 51 additions and 17 deletions

View File

@@ -2,17 +2,17 @@ package utils
import (
"bufio"
"nto_cli/types"
"nto_cli/entities"
"os"
"strings"
)
func GetStructFields(file *os.File, structName string) []types.Field {
func GetStructFields(file *os.File, structName string) []entities.Field {
bracketsCount := 1
structFound := false
structFields := []types.Field{}
structFields := []entities.Field{}
scanner := bufio.NewScanner(file)
for i := 1; scanner.Scan() && bracketsCount > 0; i++ {

View File

@@ -1,21 +1,20 @@
package utils
import (
"fmt"
"nto_cli/types"
"nto_cli/entities"
"strings"
"github.com/fatih/structtag"
)
func SplitStructField(field string) *types.Field {
func SplitStructField(field string) *entities.Field {
if strings.Contains(field, "type") {
return nil
}
startBacktip := strings.Index(field, "`")
endBacktip := -1
var metadata []types.Medatada
var metadata []entities.Medatada
if startBacktip > -1 {
endBacktip = strings.Index(field[startBacktip + 1:], "`")
if endBacktip > -1 {
@@ -25,11 +24,17 @@ func SplitStructField(field string) *types.Field {
if err != nil {
panic(err)
}
uiTags, err := tags.Get("ui")
uiTag, err := tags.Get("ui")
if err != nil {
panic(err)
}
fmt.Printf("%+v\n", uiTags.Options)
uiTags := append([]string{uiTag.Name}, uiTag.Options...)
for _, t := range uiTags {
analyzed := entities.NewMetadata(t)
if analyzed != nil {
metadata = append(metadata, *analyzed)
}
}
}
} else {
startBacktip = len(field)
@@ -48,7 +53,7 @@ func SplitStructField(field string) *types.Field {
dataType := strings.TrimSpace(data[1])
return &types.Field{
return &entities.Field{
Medatada: metadata,
Type: dataType,
Name: name,