MCPcopy
hub / github.com/davyxu/tabtoy / ParseData

Method ParseData

v2/typemodel.go:77–191  ·  view source on GitHub ↗

解析类型表里的所有类型描述

(localFD *model.FileDescriptor, globalFD *model.FileDescriptor)

Source from the content-addressed store, hash-verified

75
76// 解析类型表里的所有类型描述
77func (self *typeModelRoot) ParseData(localFD *model.FileDescriptor, globalFD *model.FileDescriptor) bool {
78
79 var td *model.Descriptor
80
81 reservedRowFieldTypeName := localFD.Pragma.GetString("TableName") + "Define"
82
83 // 每一行
84 for _, m := range self.models {
85
86 self.Row = m.row
87
88 var rawTypeName string
89
90 rawTypeName, self.Col = m.getValue("ObjectType")
91
92 if rawTypeName == reservedRowFieldTypeName {
93 log.Errorf("%s '%s'", i18n.String(i18n.DataHeader_UseReservedTypeName), rawTypeName)
94 return false
95 }
96
97 existType, ok := localFD.DescriptorByName[rawTypeName]
98
99 if ok {
100
101 td = existType
102
103 } else {
104
105 td = model.NewDescriptor()
106 td.Name = rawTypeName
107 localFD.Add(td)
108 }
109
110 // 字段名
111 m.fd.Name, self.Col = m.getValue("FieldName")
112
113 // 解析类型
114 m.rawFieldType, self.Col = m.getValue("FieldType")
115 self.fieldTypeCol = self.Col
116
117 fieldType, isrepeated, complexType, ok := findFieldType(localFD, globalFD, m.rawFieldType)
118 if !ok {
119 return false
120 }
121
122 if fieldType == model.FieldType_None {
123 self.unknownModel = append(self.unknownModel, m)
124 }
125
126 m.fd.Type = fieldType
127 m.fd.Complex = complexType
128 m.fd.IsRepeated = isrepeated
129
130 var rawFieldValue string
131 // 解析值
132 rawFieldValue, self.Col = m.getValue("Value")
133
134 kind, enumvalue, ok := parseFieldValue(rawFieldValue)

Callers 1

ParseMethod · 0.95

Calls 9

AddMethod · 0.95
StringFunction · 0.92
NewDescriptorFunction · 0.92
findFieldTypeFunction · 0.85
parseFieldValueFunction · 0.85
getValueMethod · 0.80
ErrorMethod · 0.80
AddMethod · 0.45
ParseMethod · 0.45

Tested by

no test coverage detected