bkyk8rc3zvpnsf5inmcqq4n3k98cv6hj-my-site-hyper-literate-git.test.suzanne.soy-0.0.1

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 5ddbe502ff44a6f37a871fc8b9535c47d1a45057
parent d2552556d5e8a9779d23ce3bf783fda6d0e5bcfb
Author: Matthew Flatt <mflatt@racket-lang.org>
Date:   Tue, 15 Jul 2008 22:03:36 +0000

add render-element structure, and use it in the search doc

svn: r10782

original commit: 1c6281111b21b6f38c356f7e3b4ea0343e683cef

Diffstat:
Mcollects/scribble/base-render.ss | 2++
Mcollects/scribble/html-render.ss | 5++++-
Mcollects/scribble/latex-render.ss | 2++
Mcollects/scribble/struct.ss | 27++++++++++++++++++++++++++-
Mcollects/scribblings/scribble/struct.scrbl | 15+++++++++++++++
5 files changed, 49 insertions(+), 2 deletions(-)

diff --git a/collects/scribble/base-render.ss b/collects/scribble/base-render.ss @@ -387,6 +387,8 @@ (render-content (strip-aux (car v)) part ri) (render-content (list "[missing]") part ri)))] [(element? i) + (when (render-element? i) + ((render-element-render i) this part ri)) (render-content (element-content i) part ri)] [(delayed-element? i) (render-content (delayed-element-content i ri) part ri)] diff --git a/collects/scribble/html-render.ss b/collects/scribble/html-render.ss @@ -816,7 +816,10 @@ ,@(if (null? (element-content e)) `(,(format "~s" (tag-key (link-element-tag e) ri))) (render-plain-element e part ri))))))))] - [else (render-plain-element e part ri)])) + [else + (when (render-element? e) + ((render-element-render e) this part ri)) + (render-plain-element e part ri)])) (define/private (render-plain-element e part ri) (let* ([raw-style (flatten-style (and (element? e) (element-style e)))] diff --git a/collects/scribble/latex-render.ss b/collects/scribble/latex-render.ss @@ -91,6 +91,8 @@ null) (define/override (render-element e part ri) + (when (render-element? e) + ((render-element-render e) this part ri)) (let ([part-label? (and (link-element? e) (pair? (link-element-tag e)) (eq? 'part (car (link-element-tag e))) diff --git a/collects/scribble/struct.ss b/collects/scribble/struct.ss @@ -309,7 +309,9 @@ prop:serializable (make-serialize-info (lambda (d) - (vector (collect-element-collect d))) + (vector (make-element + (element-style d) + (element-content d)))) #'deserialize-collect-element #f (or (current-load-relative-directory) (current-directory)))) @@ -325,6 +327,29 @@ ;; ---------------------------------------- +(define-struct (render-element element) (render) + #:property + prop:serializable + (make-serialize-info + (lambda (d) + (vector (make-element + (element-style d) + (element-content d)))) + #'deserialize-render-element + #f + (or (current-load-relative-directory) (current-directory)))) + +(provide deserialize-render-element) +(define deserialize-render-element + (make-deserialize-info values values)) + +(provide/contract + [struct render-element ([style any/c] + [content list?] + [render (any/c part? resolve-info? . -> . any)])]) + +;; ---------------------------------------- + (define-struct generated-tag () #:property prop:serializable diff --git a/collects/scribblings/scribble/struct.scrbl b/collects/scribblings/scribble/struct.scrbl @@ -155,6 +155,11 @@ A @deftech{block} is either a @techlink{table}, an the browser, or for rendering to other formats.} + @item{An instance of @scheme[render-element] has a + procedure that is called in the + @techlink{render pass} of document + processing.} + }}}} @item{A @deftech{delayed block} is an instance of @@ -546,6 +551,16 @@ element remains intact (i.e., it is not replaced) by either the } +@defstruct[(render-element element) ([render (any/c part? resolve-info? . -> . any)])]{ + +Like @scheme[delayed-element], but the @scheme[render] procedure is called +during the @techlink{render pass}. + +If a @scheme[render-element] instance is serialized (such as when +saving collected info), it is reduced to a @scheme[element] instance. + +} + @defstruct[with-attributes ([style any/c] [assoc (listof (cons/c symbol? string?))])]{