32 lines
1.1 KiB
Racket
32 lines
1.1 KiB
Racket
#lang racket
|
|
(require "status.rkt")
|
|
|
|
(define (rewrite-status #:rewrite rewrite-string s)
|
|
(match s
|
|
[(struct exit (start end command-line output-log code))
|
|
(make-exit start end
|
|
(rewrite-strings #:rewrite rewrite-string command-line)
|
|
(rewrite-events #:rewrite rewrite-string output-log)
|
|
code)]
|
|
[(struct timeout (start end command-line output-log))
|
|
(make-timeout start end
|
|
(rewrite-strings #:rewrite rewrite-string command-line)
|
|
(rewrite-events #:rewrite rewrite-string output-log))]))
|
|
|
|
(define (rewrite-strings #:rewrite rewrite-string los)
|
|
(map rewrite-string los))
|
|
(define (rewrite-events #:rewrite rewrite-string loe)
|
|
(map (rewrite-event #:rewrite rewrite-string) loe))
|
|
(define (rewrite-event #:rewrite rewrite-bytes)
|
|
(match-lambda
|
|
[(struct stdout (b)) (make-stdout (rewrite-bytes b))]
|
|
[(struct stderr (b)) (make-stderr (rewrite-bytes b))]))
|
|
|
|
|
|
(define rewrite-string/c
|
|
((or/c string? bytes?) . -> . (or/c string? bytes?)))
|
|
|
|
(provide/contract
|
|
[rewrite-string/c contract?]
|
|
[rewrite-status (#:rewrite rewrite-string/c status? . -> . status?)])
|