From af1d0cd5061bd5d08a8cf814d06fdfeb38f2069d Mon Sep 17 00:00:00 2001 From: aaron <462826@qq.com> Date: Wed, 25 Nov 2020 09:20:50 +0800 Subject: [PATCH] parse refer to res --- demo/advanced.yaml | 4 +-- src/model/model.go | 1 + src/server/service/common.go | 4 +-- src/server/service/def.go | 47 ++++++++++++++++++++++------------- tmp/cache/.data.db | Bin 6041600 -> 6041600 bytes users/test/_test-data.yaml | 36 +++++++++++++-------------- users/test/dir/users.txt | 8 +++--- 7 files changed, 58 insertions(+), 42 deletions(-) diff --git a/demo/advanced.yaml b/demo/advanced.yaml index 9401dfa4..a4c28bff 100644 --- a/demo/advanced.yaml +++ b/demo/advanced.yaml @@ -52,8 +52,8 @@ fields: postfix: "]\t" froms: - from: zentao.number.v1.yaml - use: small{2} # 指定引用个数 + use: small{2} # 指定引用个数 postfix: "-" - from: zentao.number.v1.yaml - use: large{3} # 指定引用个数 + use: large{3} # 指定引用个数 diff --git a/src/model/model.go b/src/model/model.go index 4a276bca..4f2e3e51 100644 --- a/src/model/model.go +++ b/src/model/model.go @@ -112,6 +112,7 @@ type ZdRefer struct { ColIndex int `gorm:"column:colIndex" json:"colIndex"` Condition string `gorm:"column:condition" json:"condition"` Count int `gorm:"column:count" json:"count"` + Step int `gorm:"column:step" json:"step"` Rand bool `gorm:"column:rand" json:"rand"` HasTitle bool `gorm:"column:hasTitle" json:"hasTitle"` } diff --git a/src/server/service/common.go b/src/server/service/common.go index 6ad8e32a..660df463 100644 --- a/src/server/service/common.go +++ b/src/server/service/common.go @@ -69,7 +69,7 @@ func genFieldFromZdField(treeNode model.ZdField, field *model.DefField) () { field.Limit = treeNode.Limit } -func FileToPath(f, currFile string) (path string) { +func ConvertReferRangeToPath(f, currFile string) (path string) { path = fileUtils.ConvertResYamlPath(f) if path == "" { resPath := fileUtils.GetAbsDir(currFile) + f @@ -85,7 +85,7 @@ func FileToPath(f, currFile string) (path string) { return } -func GetPathRelatedWithResDir(p string) (ret string) { +func GetRelatedPathWithResDir(p string) (ret string) { rpl := vari.WorkDir + constant.ResDirYaml + constant.PthSep ret = strings.Replace(p, rpl, "", 1) diff --git a/src/server/service/def.go b/src/server/service/def.go index 8c8b7e0a..23e14309 100644 --- a/src/server/service/def.go +++ b/src/server/service/def.go @@ -14,6 +14,7 @@ import ( "gopkg.in/yaml.v3" "io/ioutil" "path" + "strconv" "strings" ) @@ -188,44 +189,56 @@ func (s *DefService) saveFieldToDB(item *model.ZdField, currPath string, parentI refer.File = item.From refer.Sheet = sheet - } else if item.Use != "" { // refer to ranges or instances - refer.File = item.From - refer.ColName, _, refer.Count = gen.ParseRangeSection(item.Use) + } else if item.Use != "" { // refer to ranges or instances, need to read yaml to get the type + rangeSections := gen.ParseRangeProperty(item.Use) + if len(rangeSections) > 0 { // only get the first one + rangeSection := rangeSections[0] + desc, _, count := gen.ParseRangeSection(rangeSection) // medium{2} + refer.ColName = desc + refer.Count = count + } - path := FileToPath(item.From, currPath) + path := ConvertReferRangeToPath(item.From, currPath) _, _, refer.Type = service.ReadYamlInfo(path) + refer.File = item.From } else if item.Config != "" { // refer to config refer.Type = constant.ResTypeConfig - item.Config = strings.TrimSpace(item.Config) - rangeSections := gen.ParseRangeProperty(item.Config) - if len(rangeSections) == 1 { + rangeSections := gen.ParseRangeProperty(item.Config) // dir/config.yaml + if len(rangeSections) > 0 { // only get the first one rangeSection := rangeSections[0] desc, _, count := gen.ParseRangeSection(rangeSection) refer.Count = count - path := FileToPath(desc, currPath) - refer.File = GetPathRelatedWithResDir(path) + path := ConvertReferRangeToPath(desc, currPath) + refer.File = GetRelatedPathWithResDir(path) } } else if item.Range != "" { // deal with yaml and text refer using range prop item.Range = strings.TrimSpace(item.Range) rangeSections := gen.ParseRangeProperty(item.Range) - if len(rangeSections) == 1 { + if len(rangeSections) > 0 { // only get the first one rangeSection := rangeSections[0] - desc, _, count := gen.ParseRangeSection(rangeSection) + desc, step, count := gen.ParseRangeSection(rangeSection) // dir/users.txt:R{3} - if path.Ext(desc) == ".txt" { + if path.Ext(desc) == ".txt" { // dir/users.txt:2 refer.Type = constant.ResTypeText - } else if path.Ext(desc) == ".yaml" { + + if strings.ToLower(step) == "r" { + refer.Rand = true + } else { + refer.Step, _ = strconv.Atoi(step) + } + + } else if path.Ext(desc) == ".yaml" { // dir/content.yaml{3} refer.Type = constant.ResTypeYaml + + refer.Count = count } if path.Ext(desc) == ".txt" || path.Ext(desc) == ".yaml" { - refer.Count = count - - path := FileToPath(desc, currPath) - refer.File = GetPathRelatedWithResDir(path) + path := ConvertReferRangeToPath(desc, currPath) + refer.File = GetRelatedPathWithResDir(path) } } } diff --git a/tmp/cache/.data.db b/tmp/cache/.data.db index f2fdbfaead50ccab34e12c9e0e5a96b01f965fe5..3f11f3eece6a562659f513e05c300b6aa73a77cb 100644 GIT binary patch delta 42831 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 Y7j_O_)H!%@=itK5!Al+-yma3G1smtpIsgCw delta 30511 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 Yf%(~i_Uu4McHn~Sz=DScE}Z*60k