refactor: change build property

上级 e37d065a
......@@ -57,7 +57,7 @@ func JSONFileBytesEqual(actualInterface interface{}, exceptFile string) (bool, e
contents, err := ioutil.ReadFile(exceptFile)
if err != nil {
return false, err
_ = ioutil.WriteFile(exceptFile, []byte(`{}`), 0644)
}
return JSONBytesEqual(actual, contents, exceptFile)
......
package trial
type CodeProperty struct {
Modifiers []string
Name string
TypeName string
TypeType string
Modifiers []string
Name string
TypeName string
TypeType string
ReturnTypes []CodeProperty
Parameters []CodeProperty
}
......@@ -11,17 +11,10 @@ func AddStructType(currentStruct trial.CodeDataStruct, x *ast.StructType, curren
Type: "struct",
}
for _, field := range x.Fields.List {
typeName, typeType := BuildPropertyField(field)
property := trial.CodeProperty{
Modifiers: nil,
Name: getFieldName(field),
TypeType: typeType,
TypeName: typeName,
}
property := BuildPropertyField(getFieldName(field), field)
member.FileID = currentFile.FullName
currentStruct.Properties = append(currentStruct.Properties, property)
currentStruct.Properties = append(currentStruct.Properties, *property)
}
currentFile.Members = append(currentFile.Members, &member)
currentFile.DataStructures = append(currentFile.DataStructures, currentStruct)
}
......@@ -259,14 +259,8 @@ func GetMemberFromFile(file trial.CodeFile, recv string) *trial.CodeMember {
func BuildFieldToProperty(fieldList []*ast.Field) []trial.CodeProperty {
var properties []trial.CodeProperty
for _, field := range fieldList {
typeName, typeType := BuildPropertyField(field)
property := trial.CodeProperty{
Modifiers: nil,
Name: getFieldName(field),
TypeType: typeType,
TypeName: typeName,
}
properties = append(properties, property)
property := BuildPropertyField(getFieldName(field), field)
properties = append(properties, *property)
}
return properties
}
......@@ -278,7 +272,7 @@ func getFieldName(field *ast.Field) string {
return field.Names[0].Name
}
func BuildPropertyField(field *ast.Field) (string, string) {
func BuildPropertyField(name string, field *ast.Field) *trial.CodeProperty {
var typeName string
var typeType string
switch x := field.Type.(type) {
......@@ -306,7 +300,14 @@ func BuildPropertyField(field *ast.Field) (string, string) {
default:
fmt.Println("BuildPropertyField", reflect.TypeOf(x))
}
return typeName, typeType
property := &trial.CodeProperty{
Modifiers: nil,
Name: name,
TypeType: typeType,
TypeName: typeName,
}
return property
}
func getSelectorName(typeX ast.SelectorExpr) string {
......
......@@ -9,6 +9,8 @@
{
"Modifiers": null,
"Name": "Area",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "func",
"TypeType": "Function"
}
......@@ -22,6 +24,8 @@
{
"Modifiers": null,
"Name": "Volume",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "func",
"TypeType": "Function"
}
......@@ -35,12 +39,16 @@
{
"Modifiers": null,
"Name": "",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "Shape",
"TypeType": "Identify"
},
{
"Modifiers": null,
"Name": "",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "Object",
"TypeType": "Identify"
}
......
......@@ -9,30 +9,40 @@
{
"Modifiers": null,
"Name": "FullName",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "string",
"TypeType": "Identify"
},
{
"Modifiers": null,
"Name": "PackageName",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "string",
"TypeType": "Identify"
},
{
"Modifiers": null,
"Name": "Imports",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "string",
"TypeType": "ArrayType"
},
{
"Modifiers": null,
"Name": "Members",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "CodeMember",
"TypeType": "ArrayType"
},
{
"Modifiers": null,
"Name": "ClassNodes",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "domain.JClassNode",
"TypeType": "ArrayType"
}
......@@ -49,9 +59,9 @@
"DataStructID": "CodeFile",
"FileID": "testdata/data_struct_property.code",
"ID": "",
"MethodNodes": null,
"Name": "",
"Namespace": null,
"MethodNodes": null,
"Position": {
"StartLine": 0,
"StartLinePosition": 0,
......@@ -62,4 +72,4 @@
}
],
"PackageName": "trial"
}
}
\ No newline at end of file
{
"ClassNodes": null,
"DataStructures": null,
"FullName": "testdata/hello_world.code",
"Imports": [
"fmt"
],
"Members": [
{
"ClassNodes": null,
"DataStructID": "default",
"FileID": "",
"ID": "",
"MethodNodes": [
{
"Annotations": null,
"Creators": null,
"InnerFunctions": null,
"MethodCalls": [
{
"Class": "fmt",
"MethodName": "Println",
"Package": "",
"Parameters": [
{
"Modifiers": null,
"Name": "",
"TypeName": "\"hello, world\"",
"TypeType": "STRING"
}
],
"Type": ""
}
],
"Modifiers": null,
"Name": "main",
"Override": false,
"Parameters": null,
"ReturnTypes": null
}
],
"Name": "",
"Namespace": null,
"Position": {
"StartLine": 0,
"StartLinePosition": 0,
"StopLine": 0,
"StopLinePosition": 0
},
"Type": "method"
}
],
"PackageName": "main"
"ClassNodes": null,
"DataStructures": null,
"FullName": "testdata/hello_world.code",
"Imports": [
"fmt"
],
"Members": [
{
"ClassNodes": null,
"DataStructID": "default",
"FileID": "",
"ID": "",
"MethodNodes": [
{
"Annotations": null,
"Creators": null,
"InnerFunctions": null,
"MethodCalls": [
{
"Class": "fmt",
"MethodName": "Println",
"Package": "",
"Parameters": [
{
"Modifiers": null,
"Name": "",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "\"hello, world\"",
"TypeType": "STRING"
}
],
"Type": ""
}
],
"Modifiers": null,
"Name": "main",
"Override": false,
"Parameters": null,
"ReturnTypes": null
}
],
"Name": "",
"Namespace": null,
"Position": {
"StartLine": 0,
"StartLinePosition": 0,
"StopLine": 0,
"StopLinePosition": 0
},
"Type": "method"
}
],
"PackageName": "main"
}
\ No newline at end of file
......@@ -25,6 +25,8 @@
{
"Modifiers": null,
"Name": "",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "\"Hello World!\"",
"TypeType": "STRING"
}
......
{
"ClassNodes": null,
"DataStructures": null,
"FullName": "testdata/normal_method.code",
"Imports": [
"github.com/antlr/antlr4/runtime/Go/antlr",
"github.com/phodal/coca/languages/ts"
],
"Members": [
{
"ClassNodes": null,
"DataStructID": "default",
"FileID": "",
"ID": "",
"MethodNodes": [
{
"Annotations": null,
"Creators": null,
"InnerFunctions": null,
"MethodCalls": null,
"Modifiers": null,
"Name": "ProcessTsString",
"Override": false,
"Parameters": [
{
"Modifiers": null,
"Name": "code",
"TypeName": "string",
"TypeType": "Identify"
}
],
"ReturnTypes": [
{
"Modifiers": null,
"Name": "code",
"TypeName": "string",
"TypeType": "Identify"
},
{
"Modifiers": null,
"Name": "",
"TypeName": "parser.TypeScriptParser",
"TypeType": "Star"
}
]
},
{
"Annotations": null,
"Creators": null,
"InnerFunctions": null,
"MethodCalls": null,
"Modifiers": null,
"Name": "processStream",
"Override": false,
"Parameters": [
{
"Modifiers": null,
"Name": "is",
"TypeName": "antlr.CharStream",
"TypeType": ""
}
],
"ReturnTypes": [
{
"Modifiers": null,
"Name": "is",
"TypeName": "antlr.CharStream",
"TypeType": ""
},
{
"Modifiers": null,
"Name": "",
"TypeName": "parser.TypeScriptParser",
"TypeType": "Star"
}
]
}
],
"Name": "",
"Namespace": null,
"Position": {
"StartLine": 0,
"StartLinePosition": 0,
"StopLine": 0,
"StopLinePosition": 0
},
"Type": "method"
},
{
"ClassNodes": null,
"DataStructID": "default",
"FileID": "",
"ID": "",
"MethodNodes": [
{
"Annotations": null,
"Creators": null,
"InnerFunctions": null,
"MethodCalls": null,
"Modifiers": null,
"Name": "ProcessTsString",
"Override": false,
"Parameters": [
{
"Modifiers": null,
"Name": "code",
"TypeName": "string",
"TypeType": "Identify"
}
],
"ReturnTypes": [
{
"Modifiers": null,
"Name": "code",
"TypeName": "string",
"TypeType": "Identify"
},
{
"Modifiers": null,
"Name": "",
"TypeName": "parser.TypeScriptParser",
"TypeType": "Star"
}
]
},
{
"Annotations": null,
"Creators": null,
"InnerFunctions": null,
"MethodCalls": null,
"Modifiers": null,
"Name": "processStream",
"Override": false,
"Parameters": [
{
"Modifiers": null,
"Name": "is",
"TypeName": "antlr.CharStream",
"TypeType": ""
}
],
"ReturnTypes": [
{
"Modifiers": null,
"Name": "is",
"TypeName": "antlr.CharStream",
"TypeType": ""
},
{
"Modifiers": null,
"Name": "",
"TypeName": "parser.TypeScriptParser",
"TypeType": "Star"
}
]
}
],
"Name": "",
"Namespace": null,
"Position": {
"StartLine": 0,
"StartLinePosition": 0,
"StopLine": 0,
"StopLinePosition": 0
},
"Type": "method"
}
],
"PackageName": "testdata"
"ClassNodes": null,
"DataStructures": null,
"FullName": "testdata/normal_method.code",
"Imports": [
"github.com/antlr/antlr4/runtime/Go/antlr",
"github.com/phodal/coca/languages/ts"
],
"Members": [
{
"ClassNodes": null,
"DataStructID": "default",
"FileID": "",
"ID": "",
"MethodNodes": [
{
"Annotations": null,
"Creators": null,
"InnerFunctions": null,
"MethodCalls": null,
"Modifiers": null,
"Name": "ProcessTsString",
"Override": false,
"Parameters": [
{
"Modifiers": null,
"Name": "code",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "string",
"TypeType": "Identify"
}
],
"ReturnTypes": [
{
"Modifiers": null,
"Name": "code",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "string",
"TypeType": "Identify"
},
{
"Modifiers": null,
"Name": "",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "parser.TypeScriptParser",
"TypeType": "Star"
}
]
},
{
"Annotations": null,
"Creators": null,
"InnerFunctions": null,
"MethodCalls": null,
"Modifiers": null,
"Name": "processStream",
"Override": false,
"Parameters": [
{
"Modifiers": null,
"Name": "is",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "antlr.CharStream",
"TypeType": ""
}
],
"ReturnTypes": [
{
"Modifiers": null,
"Name": "is",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "antlr.CharStream",
"TypeType": ""
},
{
"Modifiers": null,
"Name": "",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "parser.TypeScriptParser",
"TypeType": "Star"
}
]
}
],
"Name": "",
"Namespace": null,
"Position": {
"StartLine": 0,
"StartLinePosition": 0,
"StopLine": 0,
"StopLinePosition": 0
},
"Type": "method"
},
{
"ClassNodes": null,
"DataStructID": "default",
"FileID": "",
"ID": "",
"MethodNodes": [
{
"Annotations": null,
"Creators": null,
"InnerFunctions": null,
"MethodCalls": null,
"Modifiers": null,
"Name": "ProcessTsString",
"Override": false,
"Parameters": [
{
"Modifiers": null,
"Name": "code",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "string",
"TypeType": "Identify"
}
],
"ReturnTypes": [
{
"Modifiers": null,
"Name": "code",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "string",
"TypeType": "Identify"
},
{
"Modifiers": null,
"Name": "",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "parser.TypeScriptParser",
"TypeType": "Star"
}
]
},
{
"Annotations": null,
"Creators": null,
"InnerFunctions": null,
"MethodCalls": null,
"Modifiers": null,
"Name": "processStream",
"Override": false,
"Parameters": [
{
"Modifiers": null,
"Name": "is",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "antlr.CharStream",
"TypeType": ""
}
],
"ReturnTypes": [
{
"Modifiers": null,
"Name": "is",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "antlr.CharStream",
"TypeType": ""
},
{
"Modifiers": null,
"Name": "",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "parser.TypeScriptParser",
"TypeType": "Star"
}
]
}
],
"Name": "",
"Namespace": null,
"Position": {
"StartLine": 0,
"StartLinePosition": 0,
"StopLine": 0,
"StopLinePosition": 0
},
"Type": "method"
}
],
"PackageName": "testdata"
}
\ No newline at end of file
{
"ClassNodes": null,
"DataStructures": [
{
"ID": "",
"MemberIds": null,
"Name": "O",
"Properties": null
}
],
"FullName": "testdata/struct_type_zero.code",
"Imports": null,
"Members": [
{
"ClassNodes": null,
"DataStructID": "O",
"FileID": "",
"ID": "",
"MethodNodes": [
{
"Annotations": null,
"Creators": null,
"InnerFunctions": null,
"MethodCalls": null,
"Modifiers": null,
"Name": "typee",
"Override": false,
"Parameters": null,
"ReturnTypes": null
}
],
"Name": "",
"Namespace": null,
"Position": {
"StartLine": 0,
"StartLinePosition": 0,
"StopLine": 0,
"StopLinePosition": 0
},
"Type": "struct"
}
],
"PackageName": "testdata"
"ClassNodes": null,
"DataStructures": [
{
"ID": "",
"MemberIds": null,
"Name": "O",
"Properties": null
}
],
"FullName": "testdata/struct_type_zero.code",
"Imports": null,
"Members": [
{
"ClassNodes": null,
"DataStructID": "O",
"FileID": "",
"ID": "",
"MethodNodes": [
{
"Annotations": null,
"Creators": null,
"InnerFunctions": null,
"MethodCalls": null,
"Modifiers": null,
"Name": "typee",
"Override": false,
"Parameters": null,
"ReturnTypes": null
}
],
"Name": "",
"Namespace": null,
"Position": {
"StartLine": 0,
"StartLinePosition": 0,
"StopLine": 0,
"StopLinePosition": 0
},
"Type": "struct"
}
],
"PackageName": "testdata"
}
\ No newline at end of file
......@@ -9,18 +9,24 @@
{
"Modifiers": null,
"Name": "work",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "func",
"TypeType": "Function"
},
{
"Modifiers": null,
"Name": "name",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "string",
"TypeType": "Identify"
},
{
"Modifiers": null,
"Name": "age",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "int32",
"TypeType": "Identify"
}
......
{
"ClassNodes": null,
"DataStructures": [
{
"ID": "",
"MemberIds": null,
"Name": "person",
"Properties": [
{
"Modifiers": null,
"Name": "name",
"TypeName": "string",
"TypeType": "Identify"
},
{
"Modifiers": null,
"Name": "age",
"TypeName": "int",
"TypeType": "Identify"
},
{
"Modifiers": null,
"Name": "personfunc",
"TypeName": "func",
"TypeType": "Function"
}
]
}
],
"FullName": "testdata/struct_with_func_decl.code",
"Imports": [
"fmt"
],
"Members": [
{
"ClassNodes": null,
"DataStructID": "person",
"FileID": "testdata/struct_with_func_decl.code",
"ID": "",
"MethodNodes": [
{
"Annotations": null,
"Creators": null,
"InnerFunctions": null,
"MethodCalls": [
{
"Class": "fmt",
"MethodName": "Println",
"Package": "",
"Parameters": [
{
"Modifiers": null,
"Name": "",
"TypeName": "\"Declared outside and invoked!!!\"",
"TypeType": "STRING"
}
],
"Type": ""
}
],
"Modifiers": null,
"Name": "outside",
"Override": false,
"Parameters": null,
"ReturnTypes": null
}
],
"Name": "",
"Namespace": null,
"Position": {
"StartLine": 0,
"StartLinePosition": 0,
"StopLine": 0,
"StopLinePosition": 0
},
"Type": "struct"
}
],
"PackageName": "testdata"
"ClassNodes": null,
"DataStructures": [
{
"ID": "",
"MemberIds": null,
"Name": "person",
"Properties": [
{
"Modifiers": null,
"Name": "name",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "string",
"TypeType": "Identify"
},
{
"Modifiers": null,
"Name": "age",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "int",
"TypeType": "Identify"
},
{
"Modifiers": null,
"Name": "personfunc",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "func",
"TypeType": "Function"
}
]
}
],
"FullName": "testdata/struct_with_func_decl.code",
"Imports": [
"fmt"
],
"Members": [
{
"ClassNodes": null,
"DataStructID": "person",
"FileID": "testdata/struct_with_func_decl.code",
"ID": "",
"MethodNodes": [
{
"Annotations": null,
"Creators": null,
"InnerFunctions": null,
"MethodCalls": [
{
"Class": "fmt",
"MethodName": "Println",
"Package": "",
"Parameters": [
{
"Modifiers": null,
"Name": "",
"Parameters": null,
"ReturnTypes": null,
"TypeName": "\"Declared outside and invoked!!!\"",
"TypeType": "STRING"
}
],
"Type": ""
}
],
"Modifiers": null,
"Name": "outside",
"Override": false,
"Parameters": null,
"ReturnTypes": null
}
],
"Name": "",
"Namespace": null,
"Position": {
"StartLine": 0,
"StartLinePosition": 0,
"StopLine": 0,
"StopLinePosition": 0
},
"Type": "struct"
}
],
"PackageName": "testdata"
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册