main
Matthew Butterick 6 years ago
parent 474fc23864
commit 9096610c86

@ -145,11 +145,11 @@
(pt-y (size (car pcs)))))]))
(values (cons new-run runs) rest)))
(struct line-break quad ())
(define lbr (q #:type line-break #:printable #f))
(define-quad line-break quad ())
(define lbr (make-line-break #:printable #f))
;; treat paragraph break as special kind of line break
(struct para-break line-break ())
(define pbr (q #:type para-break #:printable #f))
(define-quad para-break line-break ())
(define pbr (make-para-break #:printable #f))
(module+ test
(check-true (line-break? (second (quad-elems (q "foo" pbr "bar")))))

@ -1,5 +1,6 @@
#lang debug racket/base
(require racket/struct racket/format racket/list racket/string racket/promise racket/dict racket/match)
(require (for-syntax racket/base racket/syntax)
racket/struct racket/format racket/list racket/string racket/promise racket/dict racket/match)
(provide (all-defined-out))
(module+ test (require rackunit))
@ -106,6 +107,15 @@
draw
draw-end)]))
(define-syntax (define-quad stx)
(syntax-case stx ()
[(_ ID SUPER ARGS . REST)
(with-syntax ([MAKE-ID (format-id #'ID "make-~a" (syntax-e #'ID))])
#'(begin
(struct ID SUPER ARGS . REST)
(define MAKE-ID (make-keyword-procedure (λ (kws kw-args . rest)
(keyword-apply make-quad #:type ID kws kw-args rest))))))]))
(define q make-quad)
(module+ test

Loading…
Cancel
Save