1 Star 0 Fork 0

jackytse / tabtoy

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
tab_kv.go 1.47 KB
一键复制 编辑 原始数据 按行查看 历史
package compiler
import (
"gitee.com/jackytse/tabtoy/v3/model"
"gitee.com/jackytse/tabtoy/v3/report"
)
func transposeKVtoData(symbols *model.TypeTable, kvtab *model.DataTable) (ret *model.DataTable) {
ret = model.NewDataTable()
ret.HeaderType = kvtab.HeaderType
ret.OriginalHeaderType = kvtab.HeaderType
ret.FileName = kvtab.FileName
ret.SheetName = kvtab.SheetName
// 添加表头
ret.AddRow()
// 添加数据行
ret.AddRow()
// 遍历KV表的每一行
for row := 1; row < len(kvtab.Rows); row++ {
fieldName := kvtab.GetValueByName(row, "字段名")
fieldType := kvtab.GetValueByName(row, "字段类型")
name := kvtab.GetValueByName(row, "标识名")
arraySplitter := kvtab.GetValueByName(row, "数组切割")
var tf model.TypeDefine
tf.Kind = model.TypeUsage_HeaderStruct
tf.ObjectType = kvtab.HeaderType
tf.Name = name.Value
tf.FieldName = fieldName.Value
tf.FieldType = fieldType.Value
tf.ArraySplitter = arraySplitter.Value
if symbols.FieldByName(tf.ObjectType, tf.FieldName) != nil {
report.ReportError("DuplicateKVField", fieldName.String())
}
symbols.AddField(&tf, kvtab, row)
// 输出表的表头原始数据
headerCell := ret.AddCell(0)
headerCell.Value = fieldName.Value
header := ret.MustGetHeader(headerCell.Col)
header.Cell.Value = fieldName.Value
header.TypeInfo = &tf
inputValueCell := kvtab.GetValueByName(row, "值")
outputValueCell := ret.AddCell(1)
outputValueCell.CopyFrom(inputValueCell)
}
return
}
Go
1
https://gitee.com/jackytse/tabtoy.git
git@gitee.com:jackytse/tabtoy.git
jackytse
tabtoy
tabtoy
v0.1.0

搜索帮助