refactor: update data struct field

上级 b3f83de9
package trial package trial
type CodeDataStruct struct { type CodeDataStruct struct {
Name string
ID string
MemberIds []string
Properties []CodeProperty
Extend string
Implements []string
Annotations []interface{}
Extension interface{}
}
type JavaExtension struct {
MethodCalls []CodeCall
Fields []CodeProperty
Tag []interface{}
}
type PythonAnnotation struct {
Name string Name string
ID string
MemberIds []string
Properties []CodeProperty Properties []CodeProperty
//Fields []CodeProperty
//MethodCalls []CodeCall
//Extend string
//Implements []string
//Annotations []interface{}
//Tag []interface{}
} }
...@@ -7,6 +7,7 @@ type CodeFile struct { ...@@ -7,6 +7,7 @@ type CodeFile struct {
PackageName string PackageName string
Imports []string Imports []string
Members []*CodeMember Members []*CodeMember
ClassNodes []domain.JClassNode
DataStructures []CodeDataStruct DataStructures []CodeDataStruct
// Deprecated: support for migration only
ClassNodes []domain.JClassNode
} }
...@@ -2,7 +2,11 @@ ...@@ -2,7 +2,11 @@
"ClassNodes": null, "ClassNodes": null,
"DataStructures": [ "DataStructures": [
{ {
"Annotations": null,
"Extend": "",
"Extension": null,
"ID": "", "ID": "",
"Implements": null,
"MemberIds": null, "MemberIds": null,
"Name": "Shape", "Name": "Shape",
"Properties": [ "Properties": [
...@@ -35,7 +39,11 @@ ...@@ -35,7 +39,11 @@
] ]
}, },
{ {
"Annotations": null,
"Extend": "",
"Extension": null,
"ID": "", "ID": "",
"Implements": null,
"MemberIds": null, "MemberIds": null,
"Name": "Object", "Name": "Object",
"Properties": [ "Properties": [
...@@ -59,7 +67,11 @@ ...@@ -59,7 +67,11 @@
] ]
}, },
{ {
"Annotations": null,
"Extend": "",
"Extension": null,
"ID": "", "ID": "",
"Implements": null,
"MemberIds": null, "MemberIds": null,
"Name": "Material", "Name": "Material",
"Properties": [ "Properties": [
......
...@@ -2,7 +2,11 @@ ...@@ -2,7 +2,11 @@
"ClassNodes": null, "ClassNodes": null,
"DataStructures": [ "DataStructures": [
{ {
"Annotations": null,
"Extend": "",
"Extension": null,
"ID": "", "ID": "",
"Implements": null,
"MemberIds": null, "MemberIds": null,
"Name": "CodeFile", "Name": "CodeFile",
"Properties": [ "Properties": [
......
...@@ -2,7 +2,11 @@ ...@@ -2,7 +2,11 @@
"ClassNodes": null, "ClassNodes": null,
"DataStructures": [ "DataStructures": [
{ {
"Annotations": null,
"Extend": "",
"Extension": null,
"ID": "", "ID": "",
"Implements": null,
"MemberIds": null, "MemberIds": null,
"Name": "O", "Name": "O",
"Properties": null "Properties": null
......
...@@ -2,7 +2,11 @@ ...@@ -2,7 +2,11 @@
"ClassNodes": null, "ClassNodes": null,
"DataStructures": [ "DataStructures": [
{ {
"Annotations": null,
"Extend": "",
"Extension": null,
"ID": "", "ID": "",
"Implements": null,
"MemberIds": null, "MemberIds": null,
"Name": "Person", "Name": "Person",
"Properties": [ "Properties": [
......
...@@ -2,7 +2,11 @@ ...@@ -2,7 +2,11 @@
"ClassNodes": null, "ClassNodes": null,
"DataStructures": [ "DataStructures": [
{ {
"Annotations": null,
"Extend": "",
"Extension": null,
"ID": "", "ID": "",
"Implements": null,
"MemberIds": null, "MemberIds": null,
"Name": "person", "Name": "person",
"Properties": [ "Properties": [
......
...@@ -42,3 +42,14 @@ func Test_PythonClass(t *testing.T) { ...@@ -42,3 +42,14 @@ func Test_PythonClass(t *testing.T) {
results := app.Analysis(string(defs), "testdata/grammar/classdef.py") results := app.Analysis(string(defs), "testdata/grammar/classdef.py")
g.Expect(len(results.DataStructures)).To(Equal(3)) g.Expect(len(results.DataStructures)).To(Equal(3))
} }
func Test_PythonClassWithDecorator(t *testing.T) {
g := NewGomegaWithT(t)
app := new(PythonApiApp)
file, _ := ioutil.ReadFile("testdata/grammar/class_or_func_def_stmt.py")
codeFile := app.Analysis(string(file), "testdata/grammar/class_or_func_def_stmt.py")
g.Expect(len(codeFile.DataStructures)).To(Equal(1))
}
package pyast package pyast
import ( import (
"fmt"
parser "github.com/phodal/coca/languages/python" parser "github.com/phodal/coca/languages/python"
"github.com/phodal/coca/pkg/domain/trial" "github.com/phodal/coca/pkg/domain/trial"
"reflect"
) )
type PythonIdentListener struct { type PythonIdentListener struct {
...@@ -25,6 +27,13 @@ func (s *PythonIdentListener) EnterClassdef(ctx *parser.ClassdefContext) { ...@@ -25,6 +27,13 @@ func (s *PythonIdentListener) EnterClassdef(ctx *parser.ClassdefContext) {
Properties: nil, Properties: nil,
} }
switch x := ctx.GetParent().GetChild(0).(type) {
case *parser.DecoratorContext:
default:
fmt.Println(reflect.TypeOf(x))
}
currentCodeFile.DataStructures = append(currentCodeFile.DataStructures, dataStruct) currentCodeFile.DataStructures = append(currentCodeFile.DataStructures, dataStruct)
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册