Some racketization (and outdent).
original commit: 34ec39119442c4202e3779a929b8406aee58e524
This commit is contained in:
parent
c3d02f1416
commit
6bec5dbd28
|
@ -1,7 +1,8 @@
|
|||
(module text-render racket/base
|
||||
#lang racket/base
|
||||
(require "core.rkt"
|
||||
racket/class
|
||||
racket/port)
|
||||
racket/port
|
||||
racket/list)
|
||||
(provide render-mixin)
|
||||
|
||||
(define current-preserve-spaces (make-parameter #f))
|
||||
|
@ -10,9 +11,8 @@
|
|||
(define (make-indent amt)
|
||||
(+ amt (current-indent)))
|
||||
(define (indent)
|
||||
(let ([i (current-indent)])
|
||||
(unless (zero? i)
|
||||
(display (make-string i #\space)))))
|
||||
(define i (current-indent))
|
||||
(unless (zero? i) (display (make-string i #\space))))
|
||||
(define (indented-newline)
|
||||
(newline)
|
||||
(indent))
|
||||
|
@ -41,16 +41,11 @@
|
|||
|
||||
(define/override (render-part d ht)
|
||||
(let ([number (collected-info-number (part-collected-info d ht))])
|
||||
(for-each (lambda (n)
|
||||
(when n
|
||||
(printf "~s." n)))
|
||||
(reverse number))
|
||||
(for ([n (in-list (reverse number))] #:when n) (printf "~s." n))
|
||||
(when (part-title-content d)
|
||||
(when (ormap values number)
|
||||
(printf " "))
|
||||
(when (ormap values number) (printf " "))
|
||||
(render-content (part-title-content d) d ht))
|
||||
(when (or (ormap values number)
|
||||
(part-title-content d))
|
||||
(when (or (ormap values number) (part-title-content d))
|
||||
(newline)
|
||||
(newline))
|
||||
(render-flow (part-blocks d) d ht #f)
|
||||
|
@ -65,20 +60,18 @@
|
|||
(define/override (render-flow f part ht starting-item?)
|
||||
(if (null? f)
|
||||
null
|
||||
(apply
|
||||
append
|
||||
(append*
|
||||
(render-block (car f) part ht starting-item?)
|
||||
(map (lambda (p)
|
||||
(for/list ([p (in-list (cdr f))])
|
||||
(indented-newline)
|
||||
(render-block p part ht #f))
|
||||
(cdr f)))))
|
||||
(render-block p part ht #f)))))
|
||||
|
||||
(define/override (render-intrapara-block p part ri first? last? starting-item?)
|
||||
(unless first? (indented-newline))
|
||||
(super render-intrapara-block p part ri first? last? starting-item?))
|
||||
|
||||
(define/override (render-table i part ht inline?)
|
||||
(let ([flowss (table-blockss i)])
|
||||
(define flowss (table-blockss i))
|
||||
(if (null? flowss)
|
||||
null
|
||||
(let* ([strs (map (lambda (flows)
|
||||
|
@ -110,43 +103,40 @@
|
|||
"")))])
|
||||
(for/fold ([indent? indent?]) ([sub-row (in-list row*)])
|
||||
(when indent? (indent))
|
||||
(for/fold ([space? #f]) ([col (in-list sub-row)]
|
||||
(for/fold ([space? #f])
|
||||
([col (in-list sub-row)]
|
||||
[w (in-list widths)])
|
||||
; (when space? (display " "))
|
||||
(let ([col (if (eq? col 'cont)
|
||||
""
|
||||
col)])
|
||||
;; (when space? (display " "))
|
||||
(let ([col (if (eq? col 'cont) "" col)])
|
||||
(display col)
|
||||
(display (make-string (max 0 (- w (string-length col))) #\space)))
|
||||
#t)
|
||||
(newline)
|
||||
#t)))
|
||||
#t)
|
||||
null))))
|
||||
null)))
|
||||
|
||||
(define/override (render-itemization i part ht)
|
||||
(let ([flows (itemization-blockss i)])
|
||||
(if (null? flows)
|
||||
null
|
||||
(apply append
|
||||
(begin
|
||||
(printf "* ")
|
||||
(append*
|
||||
(begin (printf "* ")
|
||||
(parameterize ([current-indent (make-indent 2)])
|
||||
(render-flow (car flows) part ht #t)))
|
||||
(map (lambda (d)
|
||||
(for/list ([d (in-list (cdr flows))])
|
||||
(indented-newline)
|
||||
(printf "* ")
|
||||
(parameterize ([current-indent (make-indent 2)])
|
||||
(render-flow d part ht #f)))
|
||||
(cdr flows))))))
|
||||
(render-flow d part ht #f)))))))
|
||||
|
||||
(define/override (render-paragraph p part ri)
|
||||
(let ([o (open-output-string)])
|
||||
(define o (open-output-string))
|
||||
(parameterize ([current-output-port o])
|
||||
(super render-paragraph p part ri))
|
||||
(let ([i (open-input-string
|
||||
(regexp-replace* #rx"\n" (get-output-string o) " "))]
|
||||
[px (indent->paragraph-px (current-indent))])
|
||||
(define i (open-input-string
|
||||
(regexp-replace* #rx"\n" (get-output-string o) " ")))
|
||||
(define px (indent->paragraph-px (current-indent)))
|
||||
(let loop ([indent? #f])
|
||||
(cond
|
||||
[(or (regexp-try-match px i)
|
||||
|
@ -158,13 +148,13 @@
|
|||
(loop #t))]
|
||||
[else
|
||||
(regexp-try-match "^ +" i)
|
||||
(let ([b (read-byte i)])
|
||||
(define b (read-byte i))
|
||||
(unless (eof-object? b)
|
||||
(when indent? (indent))
|
||||
(write-byte b)
|
||||
(copy-port i (current-output-port))
|
||||
(newline)))])))
|
||||
null))
|
||||
(newline))]))
|
||||
null)
|
||||
|
||||
(define/override (render-content i part ri)
|
||||
(if (and (element? i)
|
||||
|
@ -177,15 +167,13 @@
|
|||
(super render-content i part ri)))
|
||||
|
||||
(define/override (render-nested-flow i part ri starting-item?)
|
||||
(let ([s (nested-flow-style i)])
|
||||
(if (and s
|
||||
(or (eq? (style-name s) 'inset)
|
||||
(define s (nested-flow-style i))
|
||||
(if (and s (or (eq? (style-name s) 'inset)
|
||||
(eq? (style-name s) 'code-inset)))
|
||||
(begin
|
||||
(printf " ")
|
||||
(begin (printf " ")
|
||||
(parameterize ([current-indent (make-indent 2)])
|
||||
(super render-nested-flow i part ri starting-item?)))
|
||||
(super render-nested-flow i part ri starting-item?))))
|
||||
(super render-nested-flow i part ri starting-item?)))
|
||||
|
||||
(define/override (render-other i part ht)
|
||||
(cond
|
||||
|
@ -210,4 +198,4 @@
|
|||
[else (write i)])
|
||||
null)
|
||||
|
||||
(super-new))))
|
||||
(super-new)))
|
||||
|
|
Loading…
Reference in New Issue
Block a user