From b2ac080927967d2c510a6c41443fa174b3fba8f8 Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Sat, 24 Apr 2021 10:15:33 -0700 Subject: [PATCH] Update render.rkt rely on default exception messages, which are informative --- pollen/render.rkt | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/pollen/render.rkt b/pollen/render.rkt index 36be786..094de78 100644 --- a/pollen/render.rkt +++ b/pollen/render.rkt @@ -234,19 +234,18 @@ (define ram-cache (make-hash)) (define (get-external-render-proc v) - (cond - [(and (list? v) - (eq? 2 (length v)) - (module-path? (first v)) - (symbol? (second v))) - (let ([mod (first v)] - [render-proc-id (second v)]) - (with-handlers ([exn:fail:filesystem:missing-module? - (lambda (e) (error 'external-renderer "cannot open module ~a" mod))]) - (dynamic-require mod - render-proc-id - (lambda () (error 'external-renderer "~a is not provided by ~a" render-proc-id mod)))))] - [else (error 'setup:external-renderer "Value is not in the form '(module-path proc-id): ~v" v)])) + (match v + [(list (? module-path? mod) (? symbol? render-proc-id)) + (with-handlers ([exn:fail:filesystem:missing-module? + (λ (e) (raise + (exn:fail:contract (string-replace (exn-message e) "standard-module-name-resolver" "external-renderer") + (exn-continuation-marks e))))] + [exn:fail:contract? ;; raised if dynamic-require can't find render-proc-id + (λ (e) (raise + (exn:fail:contract (string-replace (exn-message e) "dynamic-require" "external-renderer") + (exn-continuation-marks e))))]) + (dynamic-require mod render-proc-id))] + [_ (raise-argument-error 'external-renderer "value in the form '(module-path proc-id)" v)])) ;; note that output and template order is reversed from typical (define (render-to-file-base caller