Skip to content

Commit 083b16b

Browse files
committed
fix racket implementation
1 parent 2d6fc10 commit 083b16b

File tree

2 files changed

+16
-21
lines changed

2 files changed

+16
-21
lines changed

parsers/build.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ pushd c
55
popd
66

77
pushd clisp
8-
clisp setup.lisp
9-
clisp -i "~/quicklisp/setup.lisp" -i init.lisp -c hobbit.lisp
8+
clisp setup.lisp || true
9+
clisp -i "~/quicklisp/setup.lisp" -i init.lisp -c hobbit.lisp || true
1010
popd
1111

1212
pushd cpp

parsers/racket/hobbit.rkt

+14-19
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
(module ewp racket
2+
23
(provide marshal-request parse-request)
34
(define (parse-request-line rl)
45
(let ([arr (string-split rl " ")])
5-
(append (append (reverse (list-tail (reverse arr) (- (length arr) 4))) (list (explode (string->list (list-ref arr 4)) #\,))) (list-tail arr 5)))
6+
(list (list-ref arr 0) (list-ref arr 1) (list-ref arr 2) (string->number (list-ref arr 3)) (string->number (list-ref arr 4))))
67
)
78
(define list-index
89
(lambda (e lst)
@@ -46,31 +47,25 @@
4647
(let ([req-split (string-split request "\n" #:trim? #f #:repeat? #f)])
4748
(let ([req-line (parse-request-line (car req-split))])
4849
(let ([payload (if (equal? (length req-split) 1) "" (arr-to-string (cdr req-split) "\n")) ])
49-
(let ([body-len (string->number (list-ref req-line 6))])
50-
(let ([header-len (string->number (list-ref req-line 5))])
50+
(let ([body-len (list-ref req-line 4)])
51+
(let ([header-len (list-ref req-line 3)])
5152
(append
52-
(reverse
53-
(if (equal? 8 (length req-line)) (cdddr (reverse req-line)) (cddr (reverse req-line))))
54-
(list
55-
(and
56-
(equal? 8 (length req-line))
57-
(equal? "H" (list-ref req-line 7 )))
58-
(substring payload 0 header-len)
59-
(substring payload header-len (+ header-len body-len)))))))))
53+
(reverse (cddr (reverse req-line)))
54+
(list
55+
(substring payload 0 header-len)
56+
(substring payload header-len (+ header-len body-len)))
57+
))))))
6058
)
6159

6260
(define (marshal-request request)
63-
(string-append (arr-merge request " " 0 3)
64-
(string-append " "
65-
(string-append (arr-to-string (list-ref request 4) ",")
61+
(string-append (arr-merge request " " 0 2)
6662
(string-append " "
67-
(string-append (number->string (string-length (list-ref request 6)))
63+
(string-append (number->string (string-length (list-ref request 3)))
6864
(string-append " "
69-
(string-append (number->string (string-length (list-ref request 7)))
70-
(string-append (if (list-ref request 5) " H" "" )
65+
(string-append (number->string (string-length (list-ref request 4)))
7166
(string-append "\n"
72-
(string-append (list-ref request 6) (list-ref request 7)))))))))))
73-
)
67+
(string-append (list-ref request 3) (list-ref request 4)))))))))
68+
7469
)
7570
;(parse-request "EWP 0.2 PING 2 3\n55555")
7671
;(marshal-request (parse-request "EWP 0.2 PING 2 3\n55555"))

0 commit comments

Comments
 (0)