From 83f11580906cfe97b8fe933361304bb5a425544f Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Thu, 16 Jan 2020 13:29:45 -0800 Subject: [PATCH] fix string-quad (fixes #49) --- quad/quadwriter/layout.rkt | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/quad/quadwriter/layout.rkt b/quad/quadwriter/layout.rkt index 7524364a..cc11c94d 100644 --- a/quad/quadwriter/layout.rkt +++ b/quad/quadwriter/layout.rkt @@ -149,17 +149,19 @@ (define (do-string-quad q) ;; need to handle casing here so that it's reflected in subsequent sizing ops - (define cased-str ((match (quad-ref q :font-case) - [(or "upper" "uppercase") string-upcase] - [(or "lower" "lowercase" "down" "downcase") string-downcase] - [(or "capitalize" "capitalized") string-titlecase] - [_ values]) (unsafe-car (quad-elems q)))) + (define cased-str (and + (pair? (quad-elems q)) + ((match (quad-ref q :font-case) + [(or "upper" "uppercase") string-upcase] + [(or "lower" "lowercase" "down" "downcase") string-downcase] + [(or "title" "titlecase") string-titlecase] + [_ values]) (unsafe-car (quad-elems q))))) (struct-copy string-quad q:string [attrs #:parent quad (let ([attrs (quad-attrs q)]) (hash-ref! attrs :font-size default-font-size) attrs)] - [elems #:parent quad (list cased-str)] + [elems #:parent quad (if cased-str (list cased-str) null)] [size #:parent quad (make-size-promise q cased-str)])) (define (generic->typed-quad q)