Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
LinuxSuRen
zendata
提交
392b8f7e
Z
zendata
项目概览
LinuxSuRen
/
zendata
与 Fork 源项目一致
Fork自
易企天创 / zendata
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Z
zendata
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
392b8f7e
编写于
8月 03, 2020
作者:
aaronchen2k2k
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix bug#3330
上级
e70a7efd
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
62 addition
and
44 deletion
+62
-44
demo/test2.yaml
demo/test2.yaml
+7
-0
src/gen/generator.go
src/gen/generator.go
+35
-23
src/gen/list.go
src/gen/list.go
+18
-20
src/gen/text.go
src/gen/text.go
+1
-1
src/model/definition.go
src/model/definition.go
+1
-0
未找到文件。
demo/test2.yaml
浏览文件 @
392b8f7e
...
...
@@ -4,6 +4,13 @@ author: zentao
version
:
1.0
fields
:
-
field
:
test0
range
:
1-3{3}
loop
:
2-3
loopfix
:
"
|"
postfix
:
"
\t
"
width
:
2
-
field
:
test1
range
:
9-5:R{2}
postfix
:
"
\t
"
...
...
src/gen/generator.go
浏览文件 @
392b8f7e
...
...
@@ -71,8 +71,8 @@ func GenerateForField(field *model.DefField, total int, withFix bool) (values []
if
count
>
total
{
count
=
total
}
values
=
co
nnectChildrenToSingleStr
(
arrOfArr
,
count
)
values
=
LoopSubField
s
(
field
,
values
,
count
,
true
)
values
=
co
mbineChildrenValues
(
arrOfArr
,
count
)
values
=
loopFieldValue
s
(
field
,
values
,
count
,
true
)
}
else
if
field
.
From
!=
""
{
// refer to res
...
...
@@ -94,37 +94,45 @@ func GenerateForField(field *model.DefField, total int, withFix bool) (values []
values
=
append
(
values
,
groupValues
[
slct
]
...
)
}
values
=
LoopSubField
s
(
field
,
values
,
total
,
true
)
values
=
loopFieldValue
s
(
field
,
values
,
total
,
true
)
}
else
if
field
.
Config
!=
""
{
// refer to config
groupValues
:=
vari
.
Res
[
field
.
Config
]
values
=
append
(
values
,
groupValues
[
"all"
]
...
)
values
=
LoopSubField
s
(
field
,
values
,
total
,
true
)
values
=
loopFieldValue
s
(
field
,
values
,
total
,
true
)
}
else
{
// leaf field
values
=
GenerateField
ItemsFromDefinition
(
field
)
values
=
GenerateField
ValuesForDef
(
field
)
}
return
values
}
func
GenerateField
ItemsFromDefinition
(
field
*
model
.
DefField
)
[]
string
{
func
GenerateField
ValuesForDef
(
field
*
model
.
DefField
)
[]
string
{
values
:=
make
([]
string
,
0
)
fieldWithValues
:=
Gener
ateList
(
field
)
fieldWithValues
:=
Cre
ateList
(
field
)
index
:=
0
computerLoop
(
field
)
indexOfRow
:=
0
count
:=
0
for
{
// 处理格式、前后缀、loop等
val
:=
GenerateFieldValWithFix
(
field
,
fieldWithValues
,
&
index
,
true
)
val
:=
loopFieldValWithFix
(
field
,
fieldWithValues
,
&
indexOfRow
,
true
)
values
=
append
(
values
,
val
)
count
++
if
index
>=
len
(
fieldWithValues
.
Values
)
||
count
>=
vari
.
Total
{
isRandomAndLoopEnd
:=
(
*
field
)
.
IsLoop
&&
(
*
field
)
.
LoopIndex
==
(
*
field
)
.
LoopEnd
isNotRandomAndValOver
:=
!
(
*
field
)
.
IsLoop
&&
indexOfRow
>=
len
(
fieldWithValues
.
Values
)
if
count
>=
vari
.
Total
||
isRandomAndLoopEnd
||
isNotRandomAndValOver
{
break
}
(
*
field
)
.
LoopIndex
=
(
*
field
)
.
LoopIndex
+
1
if
(
*
field
)
.
LoopIndex
>
(
*
field
)
.
LoopEnd
{
(
*
field
)
.
LoopIndex
=
(
*
field
)
.
LoopStart
}
}
return
values
...
...
@@ -170,37 +178,42 @@ func GetFieldValStr(field model.DefField, val interface{}) string {
return
str
}
func
LoopSubFields
(
field
*
model
.
DefField
,
oldValues
[]
string
,
total
int
,
withFix
bool
)
(
values
[]
string
)
{
func
loopFieldValues
(
field
*
model
.
DefField
,
oldValues
[]
string
,
total
int
,
withFix
bool
)
(
values
[]
string
)
{
fieldValue
:=
model
.
FieldWithValues
{}
for
_
,
val
:=
range
oldValues
{
fieldValue
.
Values
=
append
(
fieldValue
.
Values
,
val
)
}
computerLoop
(
field
)
indexOfRow
:=
0
count
:=
0
for
{
// 处理格式、前后缀、loop等
str
:=
Generate
FieldValWithFix
(
field
,
fieldValue
,
&
indexOfRow
,
withFix
)
str
:=
loop
FieldValWithFix
(
field
,
fieldValue
,
&
indexOfRow
,
withFix
)
values
=
append
(
values
,
str
)
count
++
if
indexOfRow
>=
len
(
fieldValue
.
Values
)
||
count
>=
total
{
isRandomAndLoopEnd
:=
(
*
field
)
.
IsLoop
&&
(
*
field
)
.
LoopIndex
==
(
*
field
)
.
LoopEnd
isNotRandomAndValOver
:=
!
(
*
field
)
.
IsLoop
&&
indexOfRow
>=
len
(
fieldValue
.
Values
)
if
count
>=
vari
.
Total
||
isRandomAndLoopEnd
||
isNotRandomAndValOver
{
break
}
(
*
field
)
.
LoopIndex
=
(
*
field
)
.
LoopIndex
+
1
if
(
*
field
)
.
LoopIndex
>
(
*
field
)
.
LoopEnd
{
(
*
field
)
.
LoopIndex
=
(
*
field
)
.
LoopStart
}
}
return
}
func
Generate
FieldValWithFix
(
field
*
model
.
DefField
,
fieldValue
model
.
FieldWithValues
,
func
loop
FieldValWithFix
(
field
*
model
.
DefField
,
fieldValue
model
.
FieldWithValues
,
indexOfRow
*
int
,
withFix
bool
)
(
loopStr
string
)
{
prefix
:=
field
.
Prefix
postfix
:=
field
.
Postfix
computerLoop
(
field
)
for
j
:=
0
;
j
<
(
*
field
)
.
LoopIndex
;
j
++
{
if
loopStr
!=
""
{
loopStr
=
loopStr
+
field
.
Loopfix
...
...
@@ -223,11 +236,6 @@ func GenerateFieldValWithFix(field *model.DefField, fieldValue model.FieldWithVa
loopStr
=
stringUtils
.
AddPad
(
loopStr
,
*
field
)
}
(
*
field
)
.
LoopIndex
=
(
*
field
)
.
LoopIndex
+
1
if
(
*
field
)
.
LoopIndex
>
(
*
field
)
.
LoopEnd
{
(
*
field
)
.
LoopIndex
=
(
*
field
)
.
LoopStart
}
return
}
...
...
@@ -264,6 +272,10 @@ func computerLoop(field *model.DefField) {
(
*
field
)
.
LoopEnd
=
1
}
if
(
*
field
)
.
LoopStart
>
0
||
(
*
field
)
.
LoopEnd
>
0
{
(
*
field
)
.
IsLoop
=
false
}
(
*
field
)
.
LoopIndex
=
(
*
field
)
.
LoopStart
}
...
...
@@ -295,7 +307,7 @@ func putChildrenToArr(arrOfArr [][]string, total int) (values [][]string) {
return
}
func
co
nnectChildrenToSingleStr
(
arrOfArr
[][]
string
,
total
int
)
(
ret
[]
string
)
{
func
co
mbineChildrenValues
(
arrOfArr
[][]
string
,
total
int
)
(
ret
[]
string
)
{
valueArr
:=
putChildrenToArr
(
arrOfArr
,
total
)
for
_
,
arr
:=
range
valueArr
{
...
...
src/gen/list.go
浏览文件 @
392b8f7e
...
...
@@ -8,36 +8,36 @@ import (
"strings"
)
func
Gener
ateList
(
field
*
model
.
DefField
)
model
.
FieldWithValues
{
fieldValue
:=
model
.
FieldWithValues
{}
GenerateListField
(
field
,
&
field
Value
)
func
Cre
ateList
(
field
*
model
.
DefField
)
model
.
FieldWithValues
{
field
With
Value
:=
model
.
FieldWithValues
{}
CreateListField
(
field
,
&
fieldWith
Value
)
return
fieldValue
return
field
With
Value
}
func
GenerateListField
(
field
*
model
.
DefField
,
field
Value
*
model
.
FieldWithValues
)
{
fieldValue
.
Field
=
field
.
Field
fieldValue
.
Precision
=
field
.
Precision
func
CreateListField
(
field
*
model
.
DefField
,
fieldWith
Value
*
model
.
FieldWithValues
)
{
field
With
Value
.
Field
=
field
.
Field
field
With
Value
.
Precision
=
field
.
Precision
if
len
(
field
.
Fields
)
>
0
{
for
_
,
child
:=
range
field
.
Fields
{
childValue
:=
model
.
FieldWithValues
{}
GenerateListField
(
&
child
,
&
child
Value
)
child
FieldWith
Value
:=
model
.
FieldWithValues
{}
CreateListField
(
&
child
,
&
childFieldWith
Value
)
}
}
else
{
GenerateFieldValues
(
field
,
field
Value
)
CreateFieldValues
(
field
,
fieldWith
Value
)
}
}
func
Gener
ateFieldValues
(
field
*
model
.
DefField
,
fieldValue
*
model
.
FieldWithValues
)
{
func
Cre
ateFieldValues
(
field
*
model
.
DefField
,
fieldValue
*
model
.
FieldWithValues
)
{
if
strings
.
Index
(
field
.
Range
,
".txt"
)
>
-
1
{
Gener
ateFieldValuesFromText
(
field
,
fieldValue
)
Cre
ateFieldValuesFromText
(
field
,
fieldValue
)
}
else
{
Gener
ateFieldValuesFromList
(
field
,
fieldValue
)
Cre
ateFieldValuesFromList
(
field
,
fieldValue
)
}
}
func
Gener
ateFieldValuesFromList
(
field
*
model
.
DefField
,
fieldValue
*
model
.
FieldWithValues
)
{
func
Cre
ateFieldValuesFromList
(
field
*
model
.
DefField
,
fieldValue
*
model
.
FieldWithValues
)
{
rang
:=
field
.
Range
rangeItems
:=
ParseRange
(
rang
)
// 1
...
...
@@ -50,15 +50,13 @@ func GenerateFieldValuesFromList(field *model.DefField, fieldValue *model.FieldW
typ
,
desc
:=
ParseEntry
(
entry
)
// 2
items
:=
make
([]
interface
{},
0
)
itemsWithPlaceholder
:=
make
([]
string
,
0
)
if
typ
==
"literal"
{
items
=
Gener
ateValuesFromLiteral
(
field
,
desc
,
stepStr
,
repeat
)
items
=
Cre
ateValuesFromLiteral
(
field
,
desc
,
stepStr
,
repeat
)
}
else
if
typ
==
"interval"
{
items
=
Gener
ateValuesFromInterval
(
field
,
desc
,
stepStr
,
repeat
)
items
=
Cre
ateValuesFromInterval
(
field
,
desc
,
stepStr
,
repeat
)
}
fieldValue
.
Values
=
append
(
fieldValue
.
Values
,
items
...
)
fieldValue
.
ValuesWithPlaceholder
=
append
(
fieldValue
.
ValuesWithPlaceholder
,
itemsWithPlaceholder
...
)
index
=
index
+
len
(
items
)
}
...
...
@@ -139,7 +137,7 @@ func CheckRangeType(startStr string, endStr string, stepStr string) (string, int
return
"string"
,
1
,
0
,
false
// is string
}
func
Gener
ateValuesFromLiteral
(
field
*
model
.
DefField
,
desc
string
,
stepStr
string
,
repeat
int
)
(
items
[]
interface
{})
{
func
Cre
ateValuesFromLiteral
(
field
*
model
.
DefField
,
desc
string
,
stepStr
string
,
repeat
int
)
(
items
[]
interface
{})
{
elemArr
:=
strings
.
Split
(
desc
,
","
)
step
,
_
:=
strconv
.
Atoi
(
stepStr
)
total
:=
0
...
...
@@ -173,7 +171,7 @@ func GenerateValuesFromLiteral(field *model.DefField, desc string, stepStr strin
return
}
func
Gener
ateValuesFromInterval
(
field
*
model
.
DefField
,
desc
string
,
stepStr
string
,
repeat
int
)
(
items
[]
interface
{})
{
func
Cre
ateValuesFromInterval
(
field
*
model
.
DefField
,
desc
string
,
stepStr
string
,
repeat
int
)
(
items
[]
interface
{})
{
elemArr
:=
strings
.
Split
(
desc
,
"-"
)
startStr
:=
elemArr
[
0
]
endStr
:=
startStr
...
...
src/gen/text.go
浏览文件 @
392b8f7e
...
...
@@ -15,7 +15,7 @@ import (
"strings"
)
func
Gener
ateFieldValuesFromText
(
field
*
model
.
DefField
,
fieldValue
*
model
.
FieldWithValues
)
{
func
Cre
ateFieldValuesFromText
(
field
*
model
.
DefField
,
fieldValue
*
model
.
FieldWithValues
)
{
// get file and step string
rang
:=
strings
.
TrimSpace
(
field
.
Range
)
sectionArr
:=
strings
.
Split
(
rang
,
":"
)
...
...
src/model/definition.go
浏览文件 @
392b8f7e
...
...
@@ -72,6 +72,7 @@ type FieldSimple struct {
LoopStart
int
LoopEnd
int
LoopIndex
int
IsLoop
bool
}
type
FieldWithValues
struct
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录