Move logic out of main package
This commit is contained in:
parent
2f73596d35
commit
64b7a51f69
21
gilo.go
21
gilo.go
@ -3,7 +3,8 @@ package main
|
||||
import (
|
||||
"bufio"
|
||||
"os"
|
||||
"timshome.page/gilo/internal/rune"
|
||||
|
||||
"timshome.page/gilo/internal/editor"
|
||||
"timshome.page/gilo/internal/terminal"
|
||||
)
|
||||
|
||||
@ -14,21 +15,7 @@ func main() {
|
||||
|
||||
reader := bufio.NewReader(os.Stdin)
|
||||
|
||||
for {
|
||||
char, _, err := reader.ReadRune()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// Ugliest syntax structure ever?
|
||||
switch {
|
||||
case char == rune.Ctrl('q'):
|
||||
terminal.OutLn("bye!")
|
||||
return
|
||||
case rune.IsCtrl(char):
|
||||
terminal.OutLn("%d", char)
|
||||
default:
|
||||
terminal.OutLn("%d ('%c')", char, char)
|
||||
}
|
||||
for editor.ProcessKeypress(reader) {
|
||||
// loop!
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package rune
|
||||
package char
|
||||
|
||||
func isAscii(char rune) bool {
|
||||
ord := int(char)
|
@ -1 +1,34 @@
|
||||
package editor
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
|
||||
"timshome.page/gilo/internal/char"
|
||||
"timshome.page/gilo/internal/terminal"
|
||||
)
|
||||
|
||||
func readKey(reader *bufio.Reader) (rune, int) {
|
||||
ch, size, err := reader.ReadRune()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
return ch, size
|
||||
}
|
||||
|
||||
func ProcessKeypress(reader *bufio.Reader) bool {
|
||||
ch, _ := readKey(reader)
|
||||
|
||||
// Ugliest syntax structure ever?
|
||||
switch {
|
||||
case ch == char.Ctrl('q'):
|
||||
terminal.OutLn("bye!")
|
||||
return false
|
||||
case char.IsCtrl(ch):
|
||||
terminal.OutLn("%d", ch)
|
||||
default:
|
||||
terminal.OutLn("%d ('%c')", ch, ch)
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user