meta parsing

This commit is contained in:
2025-02-12 17:00:09 +07:00
parent 653c667e57
commit 5380bd109a
8 changed files with 32 additions and 5 deletions

View File

@@ -3,6 +3,7 @@ package input
import "fmt"
func Input() (string, string) {
fmt.Print("struct name, path to file (including struct): ")
var structName, path string
fmt.Scan(&structName, &path)
return structName, path

View File

@@ -1,5 +1,5 @@
package structs
type Post struct {
title string `json sex`
title string `ui:",hidden,asd"`
}

2
go.mod
View File

@@ -1,3 +1,5 @@
module nto_cli
go 1.23.4
require github.com/fatih/structtag v1.2.0 // indirect

2
go.sum Normal file
View File

@@ -0,0 +1,2 @@
github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4=
github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94=

BIN
main

Binary file not shown.

View File

@@ -9,7 +9,6 @@ import (
func main() {
fmt.Print("struct name, path to file (including struct): ")
structName, path := input.Input()
file, err := os.Open(path)
if err != nil {

View File

@@ -3,5 +3,10 @@ package types
type Field struct {
Name string
Type string
Medatada []string
Medatada []Medatada
}
type Medatada struct {
Name string
Values []string
}

View File

@@ -1,8 +1,11 @@
package utils
import (
"fmt"
"nto_cli/types"
"strings"
"github.com/fatih/structtag"
)
func SplitStructField(field string) *types.Field {
@@ -11,13 +14,28 @@ func SplitStructField(field string) *types.Field {
}
startBacktip := strings.Index(field, "`")
var metadata []string
endBacktip := -1
var metadata []types.Medatada
if startBacktip > -1 {
metadata = []string{field[startBacktip:]}
endBacktip = strings.Index(field[startBacktip + 1:], "`")
if endBacktip > -1 {
endBacktip += startBacktip + 1
meta := field[startBacktip + 1 : endBacktip]
tags, err := structtag.Parse(meta)
if err != nil {
panic(err)
}
uiTags, err := tags.Get("ui")
if err != nil {
panic(err)
}
fmt.Printf("%+v\n", uiTags.Options)
}
} else {
startBacktip = len(field)
}
field = strings.TrimSpace(field[:startBacktip])
data := strings.Split(field, " ")