input: Refactoring

This commit is contained in:
Hajime Hoshi 2019-09-01 21:12:29 +09:00
parent e465c59395
commit 23002c7597

View File

@ -249,8 +249,8 @@ type Key int
// Keys. // Keys.
const ( const (
{{range $index, $name := .KeyNames}}Key{{$name}} Key = Key(driver.Key{{$name}}) {{range $index, $name := .EbitenKeyNames}}Key{{$name}} Key = Key(driver.Key{{$name}})
{{end}} KeyMax Key = Key{{.LastKeyName}} {{end}} KeyMax Key = Key{{.LastEbitenKeyName}}
) )
// String returns a string representing the key. // String returns a string representing the key.
@ -258,7 +258,7 @@ const (
// If k is an undefined key, String returns an empty string. // If k is an undefined key, String returns an empty string.
func (k Key) String() string { func (k Key) String() string {
switch k { switch k {
{{range $name := .KeyNames}}case Key{{$name}}: {{range $name := .EbitenKeyNames}}case Key{{$name}}:
return {{$name | printf "%q"}} return {{$name | printf "%q"}}
{{end}}} {{end}}}
return "" return ""
@ -266,7 +266,7 @@ func (k Key) String() string {
func keyNameToKey(name string) (Key, bool) { func keyNameToKey(name string) (Key, bool) {
switch strings.ToLower(name) { switch strings.ToLower(name) {
{{range $name := .KeyNames}}case {{$name | printf "%q" | ToLower}}: {{range $name := .EbitenKeyNames}}case {{$name | printf "%q" | ToLower}}:
return Key{{$name}}, true return Key{{$name}}, true
{{end}}} {{end}}}
return 0, false return 0, false
@ -282,7 +282,7 @@ package driver
type Key int type Key int
const ( const (
{{range $index, $name := .KeyNames}}Key{{$name}}{{if eq $index 0}} Key = iota{{end}} {{range $index, $name := .EbitenKeyNames}}Key{{$name}}{{if eq $index 0}} Key = iota{{end}}
{{end}} {{end}}
) )
` `
@ -301,7 +301,7 @@ import (
) )
var glfwKeyCodeToKey = map[glfw.Key]driver.Key{ var glfwKeyCodeToKey = map[glfw.Key]driver.Key{
{{range $index, $name := .KeyNamesWithoutMods}}glfw.Key{{$name}}: driver.Key{{$name}}, {{range $index, $name := .EbitenKeyNamesWithoutMods}}glfw.Key{{$name}}: driver.Key{{$name}},
{{end}} {{end}}
glfw.KeyLeftAlt: driver.KeyAlt, glfw.KeyLeftAlt: driver.KeyAlt,
glfw.KeyRightAlt: driver.KeyAlt, glfw.KeyRightAlt: driver.KeyAlt,
@ -440,28 +440,17 @@ func main() {
// Follow the standard comment rule (https://golang.org/s/generatedcode). // Follow the standard comment rule (https://golang.org/s/generatedcode).
doNotEdit := "// Code generated by genkeys.go using 'go generate'. DO NOT EDIT." doNotEdit := "// Code generated by genkeys.go using 'go generate'. DO NOT EDIT."
namesSet := map[string]struct{}{} ebitenKeyNames := []string{}
namesWithoutModsSet := map[string]struct{}{} ebitenKeyNamesWithoutMods := []string{}
codes := []string{} for name := range nameToJSKeyCodes {
for name, cs := range nameToJSKeyCodes { ebitenKeyNames = append(ebitenKeyNames, name)
namesSet[name] = struct{}{}
codes = append(codes, cs...)
if name != "Alt" && name != "Control" && name != "Shift" { if name != "Alt" && name != "Control" && name != "Shift" {
namesWithoutModsSet[name] = struct{}{} ebitenKeyNamesWithoutMods = append(ebitenKeyNamesWithoutMods, name)
} }
} }
names := []string{}
namesWithoutMods := []string{}
for n := range namesSet {
names = append(names, n)
}
for n := range namesWithoutModsSet {
namesWithoutMods = append(namesWithoutMods, n)
}
sort.Slice(names, keyNamesLess(names)) sort.Slice(ebitenKeyNames, keyNamesLess(ebitenKeyNames))
sort.Slice(namesWithoutMods, keyNamesLess(namesWithoutMods)) sort.Slice(ebitenKeyNamesWithoutMods, keyNamesLess(ebitenKeyNamesWithoutMods))
sort.Strings(codes)
for path, tmpl := range map[string]string{ for path, tmpl := range map[string]string{
"keys.go": ebitenKeysTmpl, "keys.go": ebitenKeysTmpl,
@ -498,27 +487,25 @@ func main() {
} }
// NOTE: According to godoc, maps are automatically sorted by key. // NOTE: According to godoc, maps are automatically sorted by key.
if err := tmpl.Execute(f, struct { if err := tmpl.Execute(f, struct {
License string License string
DoNotEdit string DoNotEdit string
BuildTag string BuildTag string
NameToJSKeyCodes map[string][]string NameToJSKeyCodes map[string][]string
KeyCodeToNameEdge map[int]string KeyCodeToNameEdge map[int]string
Codes []string EbitenKeyNames []string
KeyNames []string EbitenKeyNamesWithoutMods []string
LastKeyName string LastEbitenKeyName string
KeyNamesWithoutMods []string NameToGLFWKeys map[string]glfw.Key
NameToGLFWKeys map[string]glfw.Key
}{ }{
License: license, License: license,
DoNotEdit: doNotEdit, DoNotEdit: doNotEdit,
BuildTag: buildTag, BuildTag: buildTag,
NameToJSKeyCodes: nameToJSKeyCodes, NameToJSKeyCodes: nameToJSKeyCodes,
KeyCodeToNameEdge: keyCodeToNameEdge, KeyCodeToNameEdge: keyCodeToNameEdge,
Codes: codes, EbitenKeyNames: ebitenKeyNames,
KeyNames: names, EbitenKeyNamesWithoutMods: ebitenKeyNamesWithoutMods,
LastKeyName: names[len(names)-1], LastEbitenKeyName: ebitenKeyNames[len(ebitenKeyNames)-1],
KeyNamesWithoutMods: namesWithoutMods, NameToGLFWKeys: nameToGLFWKeys,
NameToGLFWKeys: nameToGLFWKeys,
}); err != nil { }); err != nil {
log.Fatal(err) log.Fatal(err)
} }