samples are typed

main
Matthew Butterick 9 years ago
parent c075a302db
commit 27be947819

@ -0,0 +1,13 @@
#lang typed/racket/base
(require "main-typed.rkt" "logger-typed.rkt" "world-typed.rkt")
(require "render.rkt" racket/class profile)
(require "samples.rkt")
(activate-logger quad-logger)
(parameterize ([world:quality-default world:draft-quality]
[world:paper-width-default 600.0]
[world:paper-height-default 700.0])
(define sample (ti5))
sample
#;(define to (begin (time (typeset sample))))
#; (time (send (new pdf-renderer%) render-to-file to "foo.pdf")))

@ -1,6 +1,5 @@
#lang racket/base
(require "quads.rkt" racket/file racket/string racket/function racket/list)
(provide (all-defined-out))
#lang typed/racket/base
(require "quads-typed.rkt" racket/file racket/string racket/list)
;(define ti (block '(measure 54 leading 18) "Meg is an ally."))
(define (ti2) (block '(leading 10 measure 400 size 13 x-align left x-align-last-line left font "Equity Text B") (block #f "Foo-d" (word '(size 13) "og ") "and " (box) "Zu" (word-break '(nb "c" bb "k-")) "kermans. Instead of a circle, the result is a picture of the code that, if it were used as an expression, would produce a circle. In other words, code is not a function, but instead a " (block '(style italic) "new syntactic form") " for creating pictures; the bit between the opening " (block '(weight bold) "parenthesis") " with code is not an expression, but instead manipulated by the code syntactic form. " (word '(font "Triplicate T4" size 22.5 color "Orchid" background "Yellow") "Bangazoom!") " This helps explain what we meant in the previous section when we said that racket provides require and the function-calling syntax.") (block-break) (block #f "Libraries are not restricted to exporting values, such as functions; they can also define new syntactic forms. In this sense, Racket isnt exactly a language at all; its more of an idea for how to structure a language so that you can extend it or create entirely new ones.")))
@ -16,17 +15,19 @@
"Firstlinerhere" (column-break) "Secondlinerhere" (column-break) "Thirdlinerhere"))
(define (make-sample jude-text [line-limit #f])
(define sample-string (if line-limit
(let ([lines (file->lines jude-text)])
(define/typed (make-sample jude-text line-limit)
(String (Option Integer) . -> . Quad)
(define sample-string : String
(if line-limit
(let ([lines : (Listof String) (file->lines jude-text)])
(string-join (take lines (min line-limit (length lines))) "\n"))
(file->string jude-text)))
(define jude-blocks (map (λ(s) (regexp-replace* #rx"\n" s " ")) (string-split sample-string "\n\n")))
(apply block '(font "Equity Text B" measure 360 leading 14 column-count 1 column-gutter 10 size 11.5 x-align justify x-align-last-line left) (add-between (map (λ(jb) (block #f (box '(width 10)) (optical-kern) jb)) (filter (λ(jb) (< 0 (string-length jb))) jude-blocks)) (block-break))))
(define jude-blocks ((inst map String String) (λ(s) (regexp-replace* #rx"\n" s " ")) (string-split sample-string "\n\n")))
(apply block '(font "Equity Text B" measure 360 leading 14 column-count 1 column-gutter 10 size 11.5 x-align justify x-align-last-line left) (add-between (map (λ([jb : String]) (block #f (box '(width 10)) (optical-kern) jb)) (filter (λ([jb : String]) (< 0 (string-length jb))) jude-blocks)) (block-break))))
(define (jude) (make-sample "texts/jude.txt"))
(define (jude0) (make-sample "texts/jude0.txt"))
(define (judebig) (make-sample "texts/judebig.txt"))
(define (segfault) (make-sample "texts/segfault.txt"))
(define (jude) (make-sample "texts/jude.txt" #f))
(define (jude0) (make-sample "texts/jude0.txt" #f))
(define (judebig) (make-sample "texts/judebig.txt" #f))
(define (segfault) (make-sample "texts/segfault.txt" #f))
(define (jude1) (block '(font "Equity Text B" measure 150 leading 14 column-count 4 size 11 x-align justify x-align-last-line left) "this—is—a—test—of—em—dashes—breakable—or—not?"))
Loading…
Cancel
Save