Skip to content

Commit

Permalink
refactor: change classNodes to codeFile childr
Browse files Browse the repository at this point in the history
  • Loading branch information
phodal committed Jan 10, 2020
1 parent 117c99b commit 18553ca
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 19 deletions.
7 changes: 4 additions & 3 deletions pkg/domain/code_file.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ type CodeMember struct {
}

type CodeFile struct {
FullName string
Imports string
Members []CodeMember
FullName string
Imports string
Members []CodeMember
ClassNodes []JClassNode
}
2 changes: 1 addition & 1 deletion trial/pkg/application/ts/ts_ident_app.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ func ProcessTsString(code string) *parser.TypeScriptParser {
type TypeScriptApiApp struct {
}

func (j *TypeScriptApiApp) Analysis(code string, fileName string) []domain.JClassNode {
func (j *TypeScriptApiApp) Analysis(code string, fileName string) domain.CodeFile {
scriptParser := ProcessTsString(code)
context := scriptParser.Program()

Expand Down
22 changes: 11 additions & 11 deletions trial/pkg/application/ts/ts_ident_app_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ func Test_TypeScriptConsoleLog(t *testing.T) {
g := NewGomegaWithT(t)

app := new(TypeScriptApiApp)
results := app.Analysis("console.log('hello, world')", "")
results := app.Analysis("console.log('hello, world')", "").ClassNodes

g.Expect(len(results[0].MethodCalls)).To(Equal(1))
g.Expect(results[0].MethodCalls[0].Class).To(Equal("console"))
Expand All @@ -36,7 +36,7 @@ class Person implements IPerson {
this.name = name;
}
}
`, "")
`, "").ClassNodes

g.Expect(results[0].Class).To(Equal("IPerson"))
g.Expect(results[1].Class).To(Equal("Person"))
Expand All @@ -50,7 +50,7 @@ func Test_TypeScriptMultipleClass(t *testing.T) {
app := new(TypeScriptApiApp)
code, _ := ioutil.ReadFile("../../../../_fixtures/ts/grammar/Class.ts")

results := app.Analysis(string(code), "")
results := app.Analysis(string(code), "").ClassNodes

g.Expect(len(results)).To(Equal(4))
g.Expect(results[1].Implements[0]).To(Equal("IPerson"))
Expand All @@ -63,7 +63,7 @@ func Test_TypeScriptAbstractClass(t *testing.T) {
app := new(TypeScriptApiApp)
code, _ := ioutil.ReadFile("../../../../_fixtures/ts/grammar/AbstractClass.ts")

results := app.Analysis(string(code), "")
results := app.Analysis(string(code), "").ClassNodes

g.Expect(len(results)).To(Equal(3))
g.Expect(results[0].Type).To(Equal("Class"))
Expand All @@ -77,7 +77,7 @@ func Test_ShouldGetClassFromModule(t *testing.T) {
app := new(TypeScriptApiApp)
code, _ := ioutil.ReadFile("../../../../_fixtures/ts/grammar/Module.ts")

results := app.Analysis(string(code), "")
results := app.Analysis(string(code), "").ClassNodes

g.Expect(len(results)).To(Equal(2))
g.Expect(results[0].Class).To(Equal("Employee"))
Expand All @@ -94,7 +94,7 @@ class Employee {
console.log("hello, world");
}
}
`, "")
`, "").ClassNodes

g.Expect(len(results[0].Methods)).To(Equal(1))
}
Expand All @@ -117,7 +117,7 @@ interface IEmployee extends IPerson{
getSalary: (number) => number; // arrow function
getManagerName(number): string;
}
`, "")
`, "").ClassNodes

g.Expect(results[1].Extend).To(Equal("IPerson"))
}
Expand All @@ -133,7 +133,7 @@ export interface IPerson {
getSalary: (number) => number;
getManagerName(number): string;
}
`, "")
`, "").ClassNodes

firstMethod := results[0].Methods[0]
secondMethod := results[0].Methods[1]
Expand All @@ -155,7 +155,7 @@ function Sum(x: number, y: number) : void {
console.log('processNumKeyPairs: key = ' + key + ', value = ' + value)
return x + y;
}
`, "")
`, "").ClassNodes

firstMethod := results[0].Methods[0]
parameters := firstMethod.Parameters
Expand All @@ -174,7 +174,7 @@ func Test_ShouldHandleRestParameters(t *testing.T) {
function buildName(firstName: string, ...restOfName: string[]) {
return firstName + " " + restOfName.join(" ");
}
`, "")
`, "").ClassNodes

firstMethod := results[0].Methods[0]
parameters := firstMethod.Parameters
Expand All @@ -189,7 +189,7 @@ func Test_ShouldGetClassFields(t *testing.T) {
app := new(TypeScriptApiApp)
code, _ := ioutil.ReadFile("../../../../_fixtures/ts/grammar/Class.ts")

results := app.Analysis(string(code), "")
results := app.Analysis(string(code), "").ClassNodes

fields := results[1].Fields
g.Expect(len(fields)).To(Equal(5))
Expand Down
16 changes: 12 additions & 4 deletions trial/pkg/ast/typescript_ident_listener.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,25 +11,33 @@ var currentNode *domain.JClassNode
var classNodeQueue []domain.JClassNode
var classNodes []domain.JClassNode

var default_class = "default"
var defaultClass = "default"
var filePath string

type TypeScriptIdentListener struct {
parser.BaseTypeScriptParserListener
}

func NewTypeScriptIdentListener(fileName string) *TypeScriptIdentListener {
classNodes = nil
filePath = fileName
currentNode = domain.NewClassNode()
return &TypeScriptIdentListener{}
}

func (s *TypeScriptIdentListener) GetNodeInfo() []domain.JClassNode {
func (s *TypeScriptIdentListener) GetNodeInfo() domain.CodeFile {
if currentNode.IsNotEmpty() {
currentNode.Class = default_class
currentNode.Class = defaultClass
classNodes = append(classNodes, *currentNode)
currentNode = domain.NewClassNode()
}
return classNodes

codeFile := &domain.CodeFile{
FullName: filePath,
Imports: "",
ClassNodes: classNodes,
}
return *codeFile
}

func (s *TypeScriptIdentListener) EnterProgram(ctx *parser.ProgramContext) {
Expand Down

0 comments on commit 18553ca

Please sign in to comment.