test button.plaintext parser

This commit is contained in:
bel
2023-03-24 21:38:06 -06:00
parent 0e46f6e122
commit 7182ab387f
4 changed files with 70 additions and 8 deletions

View File

@@ -6,26 +6,29 @@ import (
)
type Plaintext struct {
src raw.Raw
src raw.Raw
release byte
}
func NewPlaintext(src raw.Raw) Plaintext {
return Plaintext{src: src}
releaseChar := byte('!')
if v := os.Getenv("BUTTON_PLAINTEXT_RELEASE"); v != "" {
releaseChar = byte(v[0])
}
return Plaintext{
src: src,
release: releaseChar,
}
}
func (p Plaintext) Close() { p.src.Close() }
func (p Plaintext) Read() []Button {
releaseChar := byte('!')
if v := os.Getenv("BUTTON_PLAINTEXT_RELEASE"); v != "" {
releaseChar = byte(v[0])
}
b := p.src.Read()
buttons := make([]Button, 0, len(b))
down := true
for i := range b {
if b[i] == releaseChar {
if b[i] == p.release {
down = false
} else {
if b[i] != '\n' {