package hook import ( "bufio" "io" "tunnel/pkg/server/queue" "unicode" ) func alpha(cb func(rune) rune) Func { return func(rq, wq queue.Q) error { r := bufio.NewReader(rq.Reader()) for { c, _, err := r.ReadRune() if err != nil { if err == io.EOF { break } return err } wq <- []byte(string(cb(c))) } return nil } } func init() { registerFunc("lower", alpha(unicode.ToLower)) registerFunc("upper", alpha(unicode.ToUpper)) }