feat: [ts] change return to array for mupltiple class

上级 b9c7ac15
......@@ -22,7 +22,7 @@ func ProcessTsString(code string) *parser.TypeScriptParser {
type TypeScriptApiApp struct {
}
func (j *TypeScriptApiApp) Analysis(code string) domain.JClassNode {
func (j *TypeScriptApiApp) Analysis(code string) []domain.JClassNode {
scriptParser := ProcessTsString(code)
context := scriptParser.Program()
......
package js_ident
import (
"fmt"
. "github.com/onsi/gomega"
"io/ioutil"
"testing"
)
......@@ -11,8 +13,8 @@ func Test_TypeScriptConsoleLog(t *testing.T) {
app := new(TypeScriptApiApp)
results := app.Analysis("console.log('hello, world')")
g.Expect(len(results.MethodCalls)).To(Equal(1))
g.Expect(results.MethodCalls[0].Class).To(Equal("console"))
g.Expect(len(results[0].MethodCalls)).To(Equal(1))
g.Expect(results[0].MethodCalls[0].Class).To(Equal("console"))
}
func Test_TypeScriptClassNode(t *testing.T) {
......@@ -37,6 +39,18 @@ class Person implements IPerson {
}
`)
g.Expect(results.Class).To(Equal("Person"))
g.Expect(results.Implements[0]).To(Equal("IPerson"))
g.Expect(results[0].Class).To(Equal("Person"))
g.Expect(results[0].Implements[0]).To(Equal("IPerson"))
}
func Test_TypeScriptMultipleClass(t *testing.T) {
g := NewGomegaWithT(t)
app := new(TypeScriptApiApp)
code, _ := ioutil.ReadFile("../../../../_fixtures/ts/Class.ts")
results := app.Analysis(string(code))
g.Expect(len(results)).To(Equal(2))
g.Expect(results[0].Implements[0]).To(Equal("IPerson"))
}
\ No newline at end of file
......@@ -8,6 +8,7 @@ import (
var currentNode *domain.JClassNode
var classNodeQueue []domain.JClassNode
var classNodes []domain.JClassNode
type TypeScriptIdentListener struct {
parser.BaseTypeScriptParserListener
......@@ -40,6 +41,7 @@ func (s *TypeScriptIdentListener) EnterClassDeclaration(ctx *parser.ClassDeclara
}
func (s *TypeScriptIdentListener) ExitClassDeclaration(ctx *parser.ClassDeclarationContext) {
classNodes = append(classNodes, *currentNode)
if len(classNodeQueue) >= 1 {
if len(classNodeQueue) == 1 {
currentNode = &classNodeQueue[0]
......@@ -71,6 +73,6 @@ func (s *TypeScriptIdentListener) EnterMemberDotExpression(ctx *parser.MemberDot
}
func (s *TypeScriptIdentListener) GetNodeInfo() domain.JClassNode {
return *currentNode
func (s *TypeScriptIdentListener) GetNodeInfo() []domain.JClassNode {
return classNodes
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册