Files
mayhem-party/src/device/input/parse/plaintext.go
2023-03-25 22:52:09 -06:00

49 lines
901 B
Go

package parse
import (
"mayhem-party/src/device/input/button"
"mayhem-party/src/device/input/raw"
"os"
)
var (
FlagParsePlaintextRelease = os.Getenv("PARSE_PLAINTEXT_RELEASE")
)
type Plaintext struct {
src raw.Raw
release byte
}
func NewPlaintext(src raw.Raw) Plaintext {
releaseChar := byte('!')
if FlagParsePlaintextRelease != "" {
releaseChar = byte(FlagParsePlaintextRelease[0])
}
return Plaintext{
src: src,
release: releaseChar,
}
}
func (p Plaintext) Close() { p.src.Close() }
func (p Plaintext) CloseWrap() raw.Raw { return p.src }
func (p Plaintext) Read() []button.Button {
b := p.src.Read()
buttons := make([]button.Button, 0, len(b))
down := true
for i := range b {
if b[i] == p.release {
down = false
} else {
if b[i] != '\n' {
buttons = append(buttons, button.Button{Char: b[i], Down: down})
}
down = true
}
}
return buttons
}