Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
LinuxSuRen
zendata
提交
900feb25
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,发现更多精彩内容 >>
提交
900feb25
编写于
7月 30, 2020
作者:
aaronchen2k2k
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Recursive top level fields
上级
2d786996
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
63 addition
and
25 deletion
+63
-25
demo/smoke.yaml
demo/smoke.yaml
+23
-0
src/gen/generator.go
src/gen/generator.go
+40
-25
未找到文件。
demo/smoke.yaml
浏览文件 @
900feb25
...
...
@@ -49,3 +49,26 @@ fields:
loop
:
3
loopfix
:
"
,"
prefix
:
"
"
-
field
:
test8
range
:
1-3
postfix
:
"
\t
"
-
field
:
test9
range
:
a-c
postfix
:
"
\t
"
-
field
:
test10
fields
:
-
field
:
test10-1
range
:
1-3
postfix
:
"
\t
"
-
field
:
test10-2
range
:
a-c
postfix
:
"
\t
"
-
field
:
field_use_instance
# 引用其他的定义文件,该文件定义了多个实例。
from
:
system.ip.v1.yaml
# 引用data/system/ip/v1.yaml
use
:
privateC
# 使用该文件中定义的privateC和privateB两个实例。
postfix
:
"
\t
"
src/gen/generator.go
浏览文件 @
900feb25
...
...
@@ -34,21 +34,18 @@ func GenerateForDefinition(defaultFile, configFile string, fieldsToExport *[]str
colIsNumArr
=
append
(
colIsNumArr
,
field
.
IsNumb
)
}
// 生成指定数量行的数据
rows
:=
make
([][]
string
,
0
)
for
i
:=
0
;
i
<
total
;
i
++
{
for
_
,
field
:=
range
vari
.
Def
.
Fields
{
if
!
stringUtils
.
FindInArr
(
field
.
Field
,
*
fieldsToExport
)
{
continue
}
values
:=
topFieldNameToValuesMap
[
field
.
Field
]
fieldVal
:=
values
[
i
%
len
(
values
)]
if
len
(
rows
)
==
i
{
rows
=
append
(
rows
,
make
([]
string
,
0
))
}
rows
[
i
]
=
append
(
rows
[
i
],
fieldVal
)
// 处理数据
arrOfArr
:=
make
([][]
string
,
0
)
// 2 dimension arr for child, [ [a,b,c], [1,2,3] ]
for
_
,
child
:=
range
vari
.
Def
.
Fields
{
if
!
stringUtils
.
FindInArr
(
child
.
Field
,
*
fieldsToExport
)
{
continue
}
childValues
:=
topFieldNameToValuesMap
[
child
.
Field
]
arrOfArr
=
append
(
arrOfArr
,
childValues
)
}
rows
:=
putChildrenToArr
(
arrOfArr
,
total
)
return
rows
,
colIsNumArr
}
...
...
@@ -61,13 +58,11 @@ func GenerateForField(field *model.DefField, total int, withFix bool) (values []
}
count
:=
total
if
strings
.
Index
(
field
.
Path
,
""
)
>
-
1
{
// is child, gen num = x * y records
count
=
getRecordCount
(
arrOfArr
)
if
count
>
total
{
count
=
total
}
count
=
getRecordCount
(
arrOfArr
)
if
count
>
total
{
count
=
total
}
connectChildrenToSingleStr
(
arrOfArr
,
count
,
&
values
)
values
=
connectChildrenToSingleStr
(
arrOfArr
,
count
)
values
=
LoopSubFields
(
field
,
values
,
count
,
true
)
}
else
if
field
.
From
!=
""
{
// refer to res
...
...
@@ -252,21 +247,41 @@ func computerLoop(field *model.DefField) {
(
*
field
)
.
LoopIndex
=
(
*
field
)
.
LoopStart
}
func
connectChildrenToSingleStr
(
arrOfArr
[][]
string
,
total
int
,
values
*
[]
string
)
{
indexArr
:=
getModArr
(
arrOfArr
)
func
putChildrenToArr
(
arrOfArr
[][]
string
,
total
int
)
(
values
[][]
string
)
{
indexArr
:=
make
([]
int
,
0
)
if
vari
.
Recursive
{
indexArr
=
getModArr
(
arrOfArr
)
}
for
i
:=
0
;
i
<
total
;
i
++
{
str
:=
""
str
Arr
:=
make
([]
string
,
0
)
for
j
:=
0
;
j
<
len
(
arrOfArr
);
j
++
{
child
:=
arrOfArr
[
j
]
mod
:=
indexArr
[
j
]
remainder
:=
i
/
mod
%
len
(
child
)
str
=
str
+
child
[
remainder
]
var
index
int
if
vari
.
Recursive
{
mod
:=
indexArr
[
j
]
index
=
i
/
mod
%
len
(
child
)
}
else
{
index
=
i
%
len
(
child
)
}
strArr
=
append
(
strArr
,
child
[
index
])
}
*
values
=
append
(
*
values
,
str
)
values
=
append
(
values
,
strArr
)
}
return
}
func
connectChildrenToSingleStr
(
arrOfArr
[][]
string
,
total
int
)
(
ret
[]
string
)
{
valueArr
:=
putChildrenToArr
(
arrOfArr
,
total
)
for
_
,
arr
:=
range
valueArr
{
ret
=
append
(
ret
,
strings
.
Join
(
arr
,
""
))
}
return
}
func
getRecordCount
(
arrOfArr
[][]
string
)
int
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录