contracts
This commit is contained in:
parent
edb59bc2b7
commit
49c4383602
111
main.rkt
111
main.rkt
|
@ -192,19 +192,6 @@
|
||||||
(d (- r cr) (- c cc) ch))
|
(d (- r cr) (- c cc) ch))
|
||||||
r c))))
|
r c))))
|
||||||
|
|
||||||
(module+ test
|
|
||||||
(draw (crop 70 80 10 20
|
|
||||||
(matte 80 20
|
|
||||||
#:halign 'right
|
|
||||||
(fg 'blue
|
|
||||||
(frame #:fg 'red
|
|
||||||
(inset
|
|
||||||
4 5
|
|
||||||
(happend (style 'underline (text "Left"))
|
|
||||||
(blank 4)
|
|
||||||
(style 'bold (text "Right")))))))))
|
|
||||||
(newline))
|
|
||||||
|
|
||||||
(define (table rows
|
(define (table rows
|
||||||
;; XXX add more options to frames
|
;; XXX add more options to frames
|
||||||
#:frames? [frames? #t]
|
#:frames? [frames? #t]
|
||||||
|
@ -286,31 +273,73 @@
|
||||||
;; xxx text... (fit text inside a width)
|
;; xxx text... (fit text inside a width)
|
||||||
;; xxx paragraph (fit text inside a box)
|
;; xxx paragraph (fit text inside a box)
|
||||||
|
|
||||||
(module+ test
|
(define style/c (apply or/c (hash-keys symbol->style)))
|
||||||
(draw (translate
|
(define color/c (apply or/c (hash-keys symbol->color)))
|
||||||
2 10
|
(define valign/c (or/c 'top 'center 'bottom))
|
||||||
(table
|
(define halign/c (or/c 'left 'center 'right))
|
||||||
#:frames? #t
|
(provide
|
||||||
#:inset-dw 2
|
(contract-out
|
||||||
#:valign 'center
|
[raart? (-> any/c boolean?)]
|
||||||
#:halign '(right left left left)
|
[draw
|
||||||
(text-rows
|
(->* (raart?)
|
||||||
`([ "ID" "First Name" "Last Name" "Grade"]
|
(exact-positive-integer?
|
||||||
[70022 "John" "Smith" "A+"]
|
exact-positive-integer?
|
||||||
[ 22 "Macumber" "Stark" "B"]
|
#:clear? boolean?)
|
||||||
[ 1223 "Sarah" ,(vappend (text "Top")
|
void?)]
|
||||||
(text "Mid")
|
[style/c contract?]
|
||||||
(text "Bot")) "C"])))))
|
[style (-> style/c raart? raart?)]
|
||||||
(newline))
|
[color/c contract?]
|
||||||
|
[fg (-> color/c raart? raart?)]
|
||||||
(provide raart?
|
[bg (-> color/c raart? raart?)]
|
||||||
draw
|
[with-drawing
|
||||||
style fg bg with-drawing
|
(-> (or/c style/c #f)
|
||||||
blank char text
|
(or/c color/c #f)
|
||||||
hline vline
|
(or/c color/c #f)
|
||||||
vappend2 vappend
|
raart? raart?)]
|
||||||
happend2 happend
|
[blank (->* () (exact-nonnegative-integer? exact-nonnegative-integer?) raart?)]
|
||||||
place-at place-at*
|
[char (-> (and/c char? (not/c char-iso-control?)) raart?)]
|
||||||
frame
|
[text (-> string? raart?)]
|
||||||
inset matte-at matte translate
|
[hline (-> exact-nonnegative-integer? raart?)]
|
||||||
table text-rows)
|
[vline (-> exact-nonnegative-integer? raart?)]
|
||||||
|
[vappend2 (-> raart? raart? raart?)]
|
||||||
|
[vappend (->* (raart?) () #:rest (listof raart?) raart?)]
|
||||||
|
[vappend* (-> (non-empty-listof raart?) raart?)]
|
||||||
|
[happend2 (-> raart? raart? raart?)]
|
||||||
|
[happend (->* (raart?) () #:rest (listof raart?) raart?)]
|
||||||
|
[happend* (-> (non-empty-listof raart?) raart?)]
|
||||||
|
[place-at (-> raart? exact-nonnegative-integer? exact-nonnegative-integer? raart?
|
||||||
|
raart?)]
|
||||||
|
[frame (->* (raart?)
|
||||||
|
(#:style (or/c style/c #f) #:fg (or/c color/c #f) #:bg (or/c color/c #f))
|
||||||
|
raart?)]
|
||||||
|
[matte-at (-> exact-nonnegative-integer? exact-nonnegative-integer?
|
||||||
|
exact-nonnegative-integer? exact-nonnegative-integer?
|
||||||
|
raart?
|
||||||
|
raart?)]
|
||||||
|
[translate (-> exact-nonnegative-integer? exact-nonnegative-integer?
|
||||||
|
raart? raart?)]
|
||||||
|
[halign/c contract?]
|
||||||
|
[valign/c contract?]
|
||||||
|
[matte (->* (exact-nonnegative-integer? exact-nonnegative-integer? raart?)
|
||||||
|
(#:halign halign/c #:valign valign/c)
|
||||||
|
raart?)]
|
||||||
|
[inset (-> exact-nonnegative-integer? exact-nonnegative-integer? raart? raart?)]
|
||||||
|
[mask (-> exact-nonnegative-integer? exact-nonnegative-integer?
|
||||||
|
exact-nonnegative-integer? exact-nonnegative-integer?
|
||||||
|
raart? raart?)]
|
||||||
|
[crop (-> exact-nonnegative-integer? exact-nonnegative-integer?
|
||||||
|
exact-nonnegative-integer? exact-nonnegative-integer?
|
||||||
|
raart? raart?)]
|
||||||
|
[table (->* ((listof (listof raart?)))
|
||||||
|
(#:frames? boolean?
|
||||||
|
#:style (or/c style/c #f)
|
||||||
|
#:fg (or/c color/c #f)
|
||||||
|
#:bg (or/c color/c #f)
|
||||||
|
#:inset-dw exact-nonnegative-integer?
|
||||||
|
#:inset-dh exact-nonnegative-integer?
|
||||||
|
#:valign valign/c
|
||||||
|
#:halign (or/c halign/c (list*of halign/c (or/c halign/c '()))))
|
||||||
|
raart?)]
|
||||||
|
[text-rows (-> (listof (listof any/c))
|
||||||
|
(listof (listof raart?)))])
|
||||||
|
place-at*)
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
#lang racket/base
|
||||||
|
(require raart)
|
||||||
|
|
||||||
|
(module+ test
|
||||||
|
(draw (crop 70 80 10 20
|
||||||
|
(matte 80 20
|
||||||
|
#:halign 'right
|
||||||
|
(fg 'blue
|
||||||
|
(frame #:fg 'red
|
||||||
|
(inset
|
||||||
|
4 5
|
||||||
|
(happend (style 'underline (text "Left"))
|
||||||
|
(blank 4)
|
||||||
|
(style 'bold (text "Right")))))))))
|
||||||
|
(newline))
|
||||||
|
|
||||||
|
(module+ test
|
||||||
|
(draw (translate
|
||||||
|
2 10
|
||||||
|
(table
|
||||||
|
#:frames? #t
|
||||||
|
#:inset-dw 2
|
||||||
|
#:valign 'center
|
||||||
|
#:halign '(right left left left)
|
||||||
|
(text-rows
|
||||||
|
`([ "ID" "First Name" "Last Name" "Grade"]
|
||||||
|
[70022 "John" "Smith" "A+"]
|
||||||
|
[ 22 "Macumber" "Stark" "B"]
|
||||||
|
[ 1223 "Sarah" ,(vappend (text "Top")
|
||||||
|
(text "Mid")
|
||||||
|
(text "Bot")) "C"])))))
|
||||||
|
(newline))
|
Loading…
Reference in New Issue