-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathKotlinMapWriter.go
More file actions
85 lines (73 loc) · 2.71 KB
/
KotlinMapWriter.go
File metadata and controls
85 lines (73 loc) · 2.71 KB
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package main
import (
"os"
"sort"
)
/*
Writes the KotlinMap StringCheese api for a given StringKey struct
*/
func writeKotlinMapFiles(rootValue *StringKeys, values []*StringKeys, config *StringCheeseConfig) error {
pathToKotlinFile := config.pathToKotlinFolderMap + getKotlinMapFileName(config)
_ = os.Remove(pathToKotlinFile) //ignore error
//if err != nil {
// return err
//}
file, err := os.Create(pathToKotlinFile)
if err != nil {
return err
}
writeKotlinMapFileHeader(file, rootValue, values, config)
for _, value := range values {
writeKotlinMap(file,value,config)
}
file.WriteString("}")
file.Close()
return nil
}
func writeKotlinMapFileHeader(file *os.File, rootValue *StringKeys, values []*StringKeys, config *StringCheeseConfig) {
file.WriteString(config.timeStampString +
"\n" +
"//Generated String Cheese Kotlin Map file\n" +
"package org.stringcheese\n" +
"\n" +
"class StringCheeseKotlinMapProvider() {\n")
for _, value := range values {
file.WriteString(" val " + getKotlinMapLanguageMethodNames(value, config) + ": Map<String, String> = create_" + getKotlinMapLanguageMethodNames(value, config)+ "()\n")
}
file.WriteString(" fun getLanguageMap(languageShortName: String): Map<String, String> {\n" +
" return when(languageShortName) {\n")
for _, value := range values {
file.WriteString(" \"" + value.languageId + "\" -> " + getKotlinMapLanguageMethodNames(value, config)+ "\n")
}
file.WriteString(" else -> " + getKotlinMapLanguageMethodNames(rootValue, config)+ "\n" +
" }\n"+
"}\n")
}
func writeKotlinMap(file *os.File, value *StringKeys, config *StringCheeseConfig) {
file.WriteString("\n" +
"//Generating " + value.languageId + " String Cheese Kotlin map creator\n" +
" fun create_" + getKotlinMapLanguageMethodNames(value, config) +"(): Map<String, String> { \n" +
" val hashMap = HashMap<String, String>()\n")
valueMap := value.strings
useArgs := config.shouldCreateArguments
keys := make([]string,0)
for key, _ := range valueMap {
keys = append(keys,key)
}
sort.Strings(keys)
for _, key := range keys {
value := valueMap[key]
if useArgs && value.numberOfArguments > 0 {
//file.WriteString(" get raw_"+ jsTransformKeyToJSVarName(value.originalKey) +"() {" +
// " return '" + value.formatString + "';" +
// " }\n" )
//file.WriteString(" format_"+ jsTransformKeyToJSVarName(value.originalKey) +"("+value.argumentString+") {" +
// " return `" + value.formatString + "`;" +
// " }\n" )
} else {
file.WriteString(" hashMap[\""+ kotlinMapTransformKeyTokotlinMapVarName(value.originalKey) +"\"] = \"" + value.value +"\"\n")
}
}
file.WriteString(" return hashMap\n" +
" }\n\n")
}