From 17ac1fae3a2c174470a90a74925bac26ed682893 Mon Sep 17 00:00:00 2001 From: Casey Klein Date: Fri, 17 Sep 2010 13:40:30 -0500 Subject: [PATCH] Adds a parameter to enable the typesetting in commit ce211ac --- collects/redex/pict.rkt | 3 ++- collects/redex/private/core-layout.rkt | 5 ++++- collects/redex/private/pict.rkt | 1 + collects/redex/redex.scrbl | 7 +++++++ collects/redex/tests/bitmap-test.rkt | 4 +++- .../redex/tests/bmps-macosx/rdups-delimited.png | Bin 0 -> 4112 bytes .../{rdups.png => rdups-undelimited.png} | Bin 7 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 collects/redex/tests/bmps-macosx/rdups-delimited.png rename collects/redex/tests/bmps-macosx/{rdups.png => rdups-undelimited.png} (100%) diff --git a/collects/redex/pict.rkt b/collects/redex/pict.rkt index 7152103ca3..4d8c67965d 100644 --- a/collects/redex/pict.rkt +++ b/collects/redex/pict.rkt @@ -82,7 +82,8 @@ 'left-right/beside-side-conditions 'up-down 'up-down/vertical-side-conditions - 'up-down/compact-side-conditions))]) + 'up-down/compact-side-conditions))] + [delimit-ellipsis-arguments? (parameter/c any/c)]) (provide/contract [label-font-size (parameter/c (and/c (between/c 1 255) integer?))] diff --git a/collects/redex/private/core-layout.rkt b/collects/redex/private/core-layout.rkt index c10b4870ee..9052c98859 100644 --- a/collects/redex/private/core-layout.rkt +++ b/collects/redex/private/core-layout.rkt @@ -29,6 +29,7 @@ non-terminal literal-style metafunction-style + delimit-ellipsis-arguments? open-white-square-bracket close-white-square-bracket just-before @@ -259,7 +260,8 @@ [(null? (cddr lst)) (cons (car lst) (loop (cdr lst)))] [else - (if (eq? '... (lw-e (cadr lst))) + (if (and (not (delimit-ellipsis-arguments?)) + (eq? '... (lw-e (cadr lst)))) (cons (car lst) (loop (cdr lst))) (list* (car lst) @@ -760,6 +762,7 @@ (define default-font-size (make-parameter 14)) (define metafunction-font-size (make-parameter (default-font-size))) (define label-font-size (make-parameter 14)) + (define delimit-ellipsis-arguments? (make-parameter #t)) (define (open-white-square-bracket) (white-bracket "[")) (define (close-white-square-bracket) (white-bracket "]")) diff --git a/collects/redex/private/pict.rkt b/collects/redex/private/pict.rkt index cc997fbf57..1a87a7871e 100644 --- a/collects/redex/private/pict.rkt +++ b/collects/redex/private/pict.rkt @@ -36,6 +36,7 @@ label-style literal-style metafunction-style + delimit-ellipsis-arguments? label-font-size default-font-size diff --git a/collects/redex/redex.scrbl b/collects/redex/redex.scrbl index 0050387f20..8d79cf875b 100644 --- a/collects/redex/redex.scrbl +++ b/collects/redex/redex.scrbl @@ -2027,6 +2027,13 @@ The @racket['left-right/beside-side-conditions] variant is like @racket['left-right], except it puts the side-conditions on the same line, instead of on a new line below the case.} +@defparam[delimit-ellipsis-arguments? delimit? any/c]{ +This parameter controls the typesetting of metafunction definitions +and applications. When it is non-@racket[#f] (the default), commas +precede ellipses that represent argument sequences; when it is +@racket[#f] no commas appear in those positions. +} + @defparam[linebreaks breaks (or/c #f (listof boolean?))]{ This parameter controls which cases in the metafunction are rendered on two lines and which are rendered on one. diff --git a/collects/redex/tests/bitmap-test.rkt b/collects/redex/tests/bitmap-test.rkt index 4b0c5a40d4..de28d2b737 100644 --- a/collects/redex/tests/bitmap-test.rkt +++ b/collects/redex/tests/bitmap-test.rkt @@ -197,7 +197,9 @@ (where (x_3 ...) (rdups x_2 ...))] [(rdups) ()]) -(test (render-metafunction rdups) "rdups.png") +(test (render-metafunction rdups) "rdups-delimited.png") +(parameterize ([delimit-ellipsis-arguments? #f]) + (test (render-metafunction rdups) "rdups-undelimited.png")) ;; Non-terminal superscripts (test (render-lw lang (to-lw (x_^abcdef x_q^abcdef))) diff --git a/collects/redex/tests/bmps-macosx/rdups-delimited.png b/collects/redex/tests/bmps-macosx/rdups-delimited.png new file mode 100644 index 0000000000000000000000000000000000000000..a24ee3c1b1aa00babb273681f0a3c4f129dbea8e GIT binary patch literal 4112 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