Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
易企天创
zendata
提交
37d195d8
Z
zendata
项目概览
易企天创
/
zendata
10 个月 前同步成功
通知
17
Star
2
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Z
zendata
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
37d195d8
编写于
7月 17, 2020
作者:
aaronchen2k2k
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
new features for 1.1
上级
6b4fbabb
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
106 addition
and
8 deletion
+106
-8
demo/test.yaml
demo/test.yaml
+11
-4
src/gen/analyse.go
src/gen/analyse.go
+61
-0
src/gen/definition.go
src/gen/definition.go
+20
-2
src/gen/generator.go
src/gen/generator.go
+5
-0
src/model/definition.go
src/model/definition.go
+1
-2
src/zd.go
src/zd.go
+8
-0
未找到文件。
demo/test.yaml
浏览文件 @
37d195d8
...
...
@@ -4,8 +4,15 @@ author: zentao
version
:
1.0
fields
:
-
field
:
field_use_instance
# 引用default.xml里的嵌套字段
length
:
16
-
field
:
field_common
# 覆盖default.yaml中的定义,使用参数-d demo/default.yaml -c demo/test.yaml执行。
#range: a-z # a,b,c...,不设置默认使用原始配置
prefix
:
"
["
# 复写前缀
postfix
:
"
]"
# 复写后缀
\ No newline at end of file
-
field
:
field_with_children
prefix
:
"
["
# 复写前缀
postfix
:
"
]
"
# 复写后缀
length
:
40
-
field
:
field_loop
# 引用default.xml里的自循环的字段
prefix
:
"
["
# 复写前缀
postfix
:
"
]"
# 特殊字符加引号,否则无法解析
length
:
8
src/gen/analyse.go
0 → 100644
浏览文件 @
37d195d8
package
gen
import
(
"encoding/json"
fileUtils
"github.com/easysoft/zendata/src/utils/file"
"github.com/easysoft/zendata/src/utils/vari"
"strings"
)
const
(
)
func
Analyse
(
output
,
fieldsToExportStr
,
configFile
,
defaultFile
string
)
{
fieldsToExport
:=
make
([]
string
,
0
)
if
fieldsToExportStr
!=
""
{
fieldsToExport
=
strings
.
Split
(
fieldsToExportStr
,
","
)
}
vari
.
Def
=
LoadConfigDef
(
defaultFile
,
configFile
,
&
fieldsToExport
)
vari
.
Res
=
LoadResDef
(
fieldsToExport
)
data
:=
fileUtils
.
ReadFile
(
output
)
mapArr
:=
LinesToMap
(
data
,
fieldsToExport
)
jsonObj
,
_
:=
json
.
Marshal
(
mapArr
)
respJson
:=
string
(
jsonObj
)
path
:=
output
[
:
strings
.
LastIndex
(
output
,
"."
)]
+
".json"
fileUtils
.
WriteFile
(
path
,
respJson
)
}
func
LinesToMap
(
str
string
,
fieldsToExport
[]
string
)
(
ret
[]
map
[
string
]
string
)
{
start
:=
0
if
vari
.
WithHead
{
start
=
1
}
ret
=
[]
map
[
string
]
string
{}
for
index
,
line
:=
range
strings
.
Split
(
str
,
"
\n
"
)
{
if
index
<
start
{
continue
}
rowMap
:=
map
[
string
]
string
{}
left
:=
line
for
j
,
field
:=
range
vari
.
Def
.
Fields
{
col
:=
left
[
:
field
.
Length
]
rowMap
[
fieldsToExport
[
j
]]
=
col
left
=
left
[
field
.
Length
:
]
}
ret
=
append
(
ret
,
rowMap
)
}
return
}
\ No newline at end of file
src/gen/definition.go
浏览文件 @
37d195d8
...
...
@@ -49,12 +49,13 @@ func LoadConfigDef(defaultFile, configFile string, fieldsToExport *[]string) mod
}
}
MergerDefine
(
&
defaultDef
,
&
configDef
)
mergerDefine
(
&
defaultDef
,
&
configDef
)
orderFields
(
&
defaultDef
,
*
fieldsToExport
)
return
defaultDef
}
func
M
ergerDefine
(
defaultDef
,
configDef
*
model
.
DefData
)
{
func
m
ergerDefine
(
defaultDef
,
configDef
*
model
.
DefData
)
{
defaultFieldMap
:=
map
[
string
]
*
model
.
DefField
{}
configFieldMap
:=
map
[
string
]
*
model
.
DefField
{}
sortedKeys
:=
make
([]
string
,
0
)
...
...
@@ -88,6 +89,20 @@ func MergerDefine(defaultDef, configDef *model.DefData) {
}
}
func
orderFields
(
defaultDef
*
model
.
DefData
,
fieldsToExport
[]
string
)
{
mp
:=
map
[
string
]
model
.
DefField
{}
for
_
,
field
:=
range
defaultDef
.
Fields
{
mp
[
field
.
Field
]
=
field
}
fields
:=
make
([]
model
.
DefField
,
0
)
for
_
,
fieldName
:=
range
fieldsToExport
{
fields
=
append
(
fields
,
mp
[
fieldName
])
}
defaultDef
.
Fields
=
fields
}
func
CreatePathToFieldMap
(
field
*
model
.
DefField
,
mp
map
[
string
]
*
model
.
DefField
,
keys
*
[]
string
)
{
if
field
.
Path
==
""
{
// root
field
.
Path
=
field
.
Field
...
...
@@ -149,6 +164,9 @@ func CopyField(child model.DefField, parent *model.DefField) {
if
child
.
Precision
!=
0
{
(
*
parent
)
.
Precision
=
child
.
Precision
}
if
child
.
Length
!=
0
{
(
*
parent
)
.
Length
=
child
.
Length
}
}
func
ReplaceSpecialChars
(
bytes
[]
byte
)
[]
byte
{
...
...
src/gen/generator.go
浏览文件 @
37d195d8
...
...
@@ -7,6 +7,7 @@ import (
fileUtils
"github.com/easysoft/zendata/src/utils/file"
stringUtils
"github.com/easysoft/zendata/src/utils/string"
"github.com/easysoft/zendata/src/utils/vari"
"github.com/mattn/go-runewidth"
"strconv"
"strings"
)
...
...
@@ -227,5 +228,9 @@ func GenerateFieldValWithFix(field model.DefField, fieldValue model.FieldValue,
loopStr
=
prefix
+
loopStr
+
postfix
}
if
field
.
Length
>
runewidth
.
StringWidth
(
loopStr
)
{
loopStr
=
loopStr
+
strings
.
Repeat
(
" "
,
field
.
Length
-
runewidth
.
StringWidth
(
loopStr
))
}
return
loopStr
}
\ No newline at end of file
src/model/definition.go
浏览文件 @
37d195d8
...
...
@@ -34,7 +34,7 @@ type DefData struct {
type
DefField
struct
{
FieldBase
`yaml:",inline"`
Fields
[]
DefField
`yaml:"fields,flow"`
Length
int
`yaml:"length"`
Path
string
}
...
...
@@ -68,7 +68,6 @@ type FieldSimple struct {
Format
string
`yaml:"format"`
}
type
FieldValue
struct
{
FieldBase
`yaml:",inline"`
Field
string
`yaml:"field"`
...
...
src/zd.go
浏览文件 @
37d195d8
...
...
@@ -4,6 +4,7 @@ import (
"flag"
"fmt"
"github.com/easysoft/zendata/src/action"
"github.com/easysoft/zendata/src/gen"
"github.com/easysoft/zendata/src/service"
commonUtils
"github.com/easysoft/zendata/src/utils/common"
configUtils
"github.com/easysoft/zendata/src/utils/config"
...
...
@@ -34,6 +35,7 @@ var (
output
string
table
string
format
=
constant
.
FormatText
analyse
string
listRes
bool
viewRes
string
...
...
@@ -91,6 +93,9 @@ func main() {
flagSet
.
StringVar
(
&
vari
.
HeadSep
,
"H"
,
""
,
""
)
flagSet
.
StringVar
(
&
vari
.
HeadSep
,
"human"
,
""
,
""
)
flagSet
.
StringVar
(
&
analyse
,
"a"
,
""
,
""
)
flagSet
.
StringVar
(
&
analyse
,
"analyse"
,
""
,
""
)
flagSet
.
IntVar
(
&
vari
.
Length
,
"W"
,
0
,
""
)
flagSet
.
IntVar
(
&
vari
.
Length
,
"width"
,
0
,
""
)
flagSet
.
StringVar
(
&
vari
.
LeftPad
,
"L"
,
""
,
""
)
...
...
@@ -134,6 +139,9 @@ func main() {
}
else
if
md5
!=
""
{
service
.
AddMd5
(
md5
,
salt
)
return
}
else
if
analyse
!=
""
{
gen
.
Analyse
(
output
,
fields
,
analyse
,
defaultFile
)
return
}
if
vari
.
Ip
!=
""
||
vari
.
Port
!=
0
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录