63 lines
1.2 KiB
Go
63 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
|
|
_ "embed"
|
|
|
|
logger "git.site.quack-lab.dev/dave/cylogger"
|
|
utils "git.site.quack-lab.dev/dave/cyutils"
|
|
)
|
|
|
|
func main() {
|
|
outdir := flag.String("o", ".", "Output directory")
|
|
flag.Parse()
|
|
logger.InitFlag()
|
|
logger.Info("Starting...")
|
|
|
|
files := flag.Args()
|
|
if len(files) == 0 {
|
|
logger.Error("No files specified")
|
|
flag.Usage()
|
|
return
|
|
}
|
|
|
|
// TODO: Implement parsing enums somehow
|
|
// TODO: Implement some sort of switching (between a class and an enum)
|
|
utils.WithWorkers(10, files, func(worker int, file string) {
|
|
class, err := ParseClass(file)
|
|
if err != nil {
|
|
logger.Error("Error parsing file: %v", err)
|
|
return
|
|
}
|
|
class.Write(*outdir, classTemplate)
|
|
})
|
|
}
|
|
|
|
func MapType(t string) string {
|
|
switch t {
|
|
case "var":
|
|
return "any"
|
|
case "int":
|
|
return "number"
|
|
case "float":
|
|
return "number"
|
|
case "double":
|
|
return "number"
|
|
case "bool":
|
|
return "boolean"
|
|
case "table_t":
|
|
return "table"
|
|
default:
|
|
return t
|
|
}
|
|
}
|
|
|
|
func IsReservedKeyword(t string) bool {
|
|
switch t {
|
|
case "any", "boolean", "number", "string", "table", "function", "thread", "userdata", "nil", "var", "in":
|
|
return true
|
|
}
|
|
return false
|
|
}
|