From 5da6761fa6d7d531c92b818e9cf8ea4a1c603a66 Mon Sep 17 00:00:00 2001 From: alex Date: Sat, 4 Jul 2026 22:41:14 +0200 Subject: made * case in parser recursive --- main.go | 29 +++++++---------------------- 1 file changed, 7 insertions(+), 22 deletions(-) (limited to 'main.go') diff --git a/main.go b/main.go index a2ace56..2e6329e 100644 --- a/main.go +++ b/main.go @@ -149,28 +149,13 @@ func parseRESP(reader *bufio.Reader) ([]string, error) { argC, _ := strconv.Atoi(strings.TrimSpace(line[1:])) for i := 0; i < argC; i++ { - lengthLine, err := reader.ReadString('\n') - - if err != nil { - return nil, err - } - - strLen, _ := strconv.Atoi(strings.TrimSpace(lengthLine[1:])) - - buf := make([]byte, strLen) - - _, err = io.ReadFull(reader, buf) - if err != nil { - return nil, err - } - - _, err = reader.Discard(2) - if err != nil { - return nil, err - } - - args = append(args, string(buf)) - } + nestedArgs, err := parseRESP(reader) + if err != nil { + return nil, err + } + + args = append(args, nestedArgs...) + } return args, nil case '$': strLen, _ := strconv.Atoi(strings.TrimSpace(line[1:])) -- cgit v1.2.3