Skip to content

Commit d46d300

Browse files
committed
fix scheme implementation
1 parent 083b16b commit d46d300

File tree

2 files changed

+15
-21
lines changed

2 files changed

+15
-21
lines changed

parsers/rs/parser.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ impl EWPRequest {
3838
let headers_len = self.headers.len().to_string();
3939
let body_len = self.body.len().to_string();
4040

41-
let mut parts: Vec<&str> = vec![
41+
let parts: Vec<&str> = vec![
4242
"EWP",
4343
&self.version,
4444
&self.command,

parsers/scheme/hobbit.scm

+14-20
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
(provide marshal-request parse-request)
33
(define (parse-request-line rl)
44
(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)))
5+
(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))))
66
)
77
(define list-index
88
(lambda (e lst)
@@ -29,7 +29,7 @@
2929
(match (length lst)
3030
[0 ""]
3131
[1 (car lst)]
32-
[_
32+
[ _
3333
(string-append (string-append (car lst) delim) (arr-to-string (cdr lst) delim))]
3434
)
3535
)
@@ -46,29 +46,23 @@
4646
(let ([req-split (string-split request "\n" #:trim? #f #:repeat? #f)])
4747
(let ([req-line (parse-request-line (car req-split))])
4848
(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))])
49+
(let ([body-len (list-ref req-line 4)])
50+
(let ([header-len (list-ref req-line 3)])
5151
(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)))))))))
52+
(reverse (cddr (reverse req-line)))
53+
(list
54+
(substring payload 0 header-len)
55+
(substring payload header-len (+ header-len body-len)))
56+
))))))
6057
)
6158

6259
(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) ",")
60+
(string-append (arr-merge request " " 0 2)
6661
(string-append " "
67-
(string-append (number->string (string-length (list-ref request 6)))
62+
(string-append (number->string (string-length (list-ref request 3)))
6863
(string-append " "
69-
(string-append (number->string (string-length (list-ref request 7)))
70-
(string-append (if (list-ref request 5) " H" "" )
64+
(string-append (number->string (string-length (list-ref request 4)))
7165
(string-append "\n"
72-
(string-append (list-ref request 6) (list-ref request 7)))))))))))
73-
)
66+
(string-append (list-ref request 3) (list-ref request 4)))))))))
67+
7468
)

0 commit comments

Comments
 (0)