提交 c38984ad 编写于 作者: aaronchen2k2k's avatar aaronchen2k2k

keep space prefix in refer range

上级 9c2db2d2
package gen
import (
"fmt"
"github.com/easysoft/zendata/src/model"
constant "github.com/easysoft/zendata/src/utils/const"
stringUtils "github.com/easysoft/zendata/src/utils/string"
......@@ -69,6 +70,8 @@ func GenerateForField(field *model.Field, total int) []string {
concat = field.Prefix + concat + field.Postfix
values = append(values, concat)
}
values = LoopSubFields(field, values, total)
} else if field.Type == "list" { // list type
values = GenerateFieldItemsFromDefinition(field, total)
......@@ -78,7 +81,7 @@ func GenerateForField(field *model.Field, total int) []string {
}
referField := constant.LoadedFields[field.Name]
values = GenerateFieldItemsFromDefinition(&referField, total)
values = GenerateForField(&referField, total)
} else {// like address.city to refer to other custom fields
arr := strings.Split(field.Type, ".")
......@@ -110,7 +113,6 @@ func GenerateFieldItemsFromDefinition(field *model.Field, total int) []string {
//switch datatype {
//case constant.LIST.String():
fieldValue = GenerateList(field, total)
//
//default:
//}
......@@ -118,7 +120,7 @@ func GenerateFieldItemsFromDefinition(field *model.Field, total int) []string {
count := 0
for {
// 处理格式、前后缀、loop等
str := GenerateFieldValWithLoop(*field, fieldValue, &index)
str := GenerateFieldValWithFix(*field, fieldValue, &index, true)
values = append(values, str)
count++
......@@ -130,25 +132,6 @@ func GenerateFieldItemsFromDefinition(field *model.Field, total int) []string {
return values
}
func GenerateFieldValWithLoop(field model.Field, fieldValue model.FieldValue, indexOfRow *int) string {
prefix := field.Prefix
postfix := field.Postfix
loopStr := ""
for j := 0; j < field.Loop; j++ {
if loopStr != "" {
loopStr = loopStr + field.Loopfix
}
str := GenerateFieldVal(field, fieldValue, indexOfRow)
loopStr = loopStr + str
*indexOfRow++
}
return prefix + loopStr + postfix
}
func GenerateFieldVal(field model.Field, fieldValue model.FieldValue, index *int) string {
str := ""
......@@ -193,6 +176,7 @@ func GetFieldValStr(field model.Field, val interface{}) string {
}
case string:
str = val.(string)
fmt.Sprintf(str)
default:
}
......@@ -238,4 +222,53 @@ func convertFieldReferToNestedIfNeeded(field *model.Field) {
}
}
}
}
func LoopSubFields(field *model.Field, oldValues []string, total int) []string {
if field.Loop == 0 {field.Loop = 1}
values := make([]string, 0)
fieldValue := model.FieldValue{}
for _, val := range oldValues {
fieldValue.Values = append(fieldValue.Values, val)
}
index := 0
count := 0
for {
// 处理格式、前后缀、loop等
str := GenerateFieldValWithFix(*field, fieldValue, &index, false)
values = append(values, str)
count++
if count >= total {
break
}
}
return values
}
func GenerateFieldValWithFix(field model.Field, fieldValue model.FieldValue, indexOfRow *int, withLoop bool) string {
prefix := field.Prefix
postfix := field.Postfix
loopStr := ""
for j := 0; j < field.Loop; j++ {
if loopStr != "" {
loopStr = loopStr + field.Loopfix
}
str := GenerateFieldVal(field, fieldValue, indexOfRow)
loopStr = loopStr + str
*indexOfRow++
}
if withLoop {
loopStr = prefix + loopStr + postfix
}
return loopStr
}
\ No newline at end of file
......@@ -45,13 +45,14 @@ func GenerateFieldValues(field *model.Field, fieldValue *model.FieldValue, level
}
func GenerateFieldValuesFromList(field *model.Field, fieldValue *model.FieldValue, level int) {
rang := strings.TrimSpace(field.Range)
//rang := strings.TrimSpace(field.Range)
rang := field.Range
rangeItems := strings.Split(rang, ",")
index := 0
for _, item := range rangeItems {
if index >= constant.MaxNumb { break }
if strings.TrimSpace(item) == "" { continue }
if item == "" { continue }
sectionArr := strings.Split(item, ":")
if len(sectionArr) == 0 { continue }
......
title: the test file
desc: this is the test file.
author: wwccss
title: test file
desc: this is the test file
author: zentao
version: 1.0
class:
- name: password
type: password.xlsx
- name: numb
type: numb.yaml
- name: state_city
note: SQL查询
type: list
prefix: '!'
postfix: "!"
loop: 2
loopfix: " "
fields:
- name: myprefix
type: list
range: "#"
- name: city
type: address.city
format: ${seq}-${name}(${state})
range: select * from address.city where state like '%山东%'
prefix: '['
postfix: "]"
loop: 2
loopfix: ","
- name: mypostfix
type: list
range: "#"
fields:
- name: 字段1
note:
type: list
range: ${user_name}_${numb}@${domain}
- name: user_name
note: 用户名
fields:
- name: first_name
type: custom
- name: separator
type: list
range: "_"
- name: last_name
type: custom
- name: 字段2
note:
type: list
prefix: '<'
postfix: ">"
loop: 2
loopfix: "-----"
fields:
- name: 省市
type: state_city
- name: numb
type: custom
range: " ${numb} "
- name: test
type: custom
range: " ${domain} "
- name: field1
note: 默认的列表类型,通过逗号隔成若干区段。
type: list
......@@ -60,37 +124,3 @@ fields:
note: 从文件读定义
type: custom
range: custom.yaml
- name: field4
note: 引用。
type: list
range: ${user_name}_${numb}@${domain}
- name: user_name
note: 用户名
fields:
- name: first_name
type: custom
- name: separator
type: list
range: "_"
- name: last_name
type: custom
- name: numb
type: custom
range: numb.yaml
- name: field6
note: 复合字段的某一个字段,指定查询条件。
type: list
fields:
- name: prefix
type: list
range: "="
- name: first_name
type: address.city
format: ${seq}-${name}(${state})
range: select * from address.city where state like '%山东%'
prefix: '['
postfix: "]"
loop: 3
loopfix: "|"
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册