Skip to content

Commit c53b22c

Browse files
authored
Merge pull request #113 from jackhftang/master
deterministic generation
2 parents e46791d + 8bd2766 commit c53b22c

File tree

2 files changed

+21
-5
lines changed

2 files changed

+21
-5
lines changed

gojay/codegen/generator.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
"os"
88
"path/filepath"
99
"strings"
10-
1110
"github.com/viant/toolbox"
1211
)
1312

@@ -89,19 +88,24 @@ func (g *Generator) Generate() error {
8988

9089
func (g *Generator) writeCode() error {
9190
var generatedCode = []string{}
92-
for _, code := range g.pooledObjects {
91+
92+
for _, key := range sortedKeys(g.pooledObjects) {
93+
code := g.pooledObjects[key]
9394
generatedCode = append(generatedCode, code)
9495
}
9596
generatedCode = append(generatedCode, "")
96-
for _, code := range g.sliceTypes {
97+
for _, key := range sortedKeys(g.sliceTypes) {
98+
code := g.sliceTypes[key]
9799
generatedCode = append(generatedCode, code)
98100
}
99101
generatedCode = append(generatedCode, "")
100-
for _, code := range g.structTypes {
102+
for _, key := range sortedKeys(g.structTypes) {
103+
code := g.structTypes[key]
101104
generatedCode = append(generatedCode, code)
102105
}
103106

104-
for _, code := range g.poolInit {
107+
for _, key := range sortedKeys(g.poolInit) {
108+
code := g.poolInit[key]
105109
if g.Init != "" {
106110
g.Init += "\n"
107111
}

gojay/codegen/helper.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"github.com/viant/toolbox"
55
"reflect"
66
"strings"
7+
"sort"
78
)
89

910
func firstLetterToUppercase(text string) string {
@@ -87,3 +88,14 @@ func getJSONKey(options *Options, field *toolbox.FieldInfo) string {
8788
func normalizeTypeName(typeName string) string {
8889
return strings.Replace(typeName, "*", "", strings.Count(typeName, "*"))
8990
}
91+
92+
func sortedKeys(m map[string]string) ([]string) {
93+
keys := make([]string, len(m))
94+
i := 0
95+
for k := range m {
96+
keys[i] = k
97+
i++
98+
}
99+
sort.Strings(keys)
100+
return keys
101+
}

0 commit comments

Comments
 (0)