/
translator.go
49 lines (40 loc) · 1.07 KB
/
translator.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package native
import (
"github.com/essentialkaos/translit"
"strings"
"unicode"
)
func ToCamelCase(src string) string {
result := []rune(src)
result[0] = unicode.ToUpper(result[0])
return string(result)
}
func ToLowerCamelCase(src string) string {
result := []rune(src)
result[0] = unicode.ToLower(result[0])
return string(result)
}
func (g *Generator) translateType(src string) string {
if strings.HasPrefix(src, "Edm.") {
src = src[4:]
}
if strings.HasPrefix(src, "StandardODATA.") {
src = src[14:]
}
if strings.HasPrefix(src, "Collection(") && strings.HasSuffix(src, ")") {
src = "[]" + g.translateType(src[11:len(src)-1])
}
if val, ok := g.TypeMap[src]; ok {
return ToCamelCase(val)
}
return ToCamelCase(translit.EncodeToICAO(strings.Replace(src, "_", "", -1)))
}
func (g *Generator) translateName(src string) string {
if val, ok := g.NameMap[src]; ok {
return ToCamelCase(val)
}
if strings.HasSuffix(src, "_key") {
return g.translateName(src[:len(src)-4]) + "Key"
}
return ToCamelCase(translit.EncodeToICAO(strings.Replace(src, "_", "", -1)))
}