racket/collects/scribblings/start/start.scrbl
2007-11-13 14:15:28 +00:00

61 lines
2.1 KiB
Racket

#lang scribble/doc
@require[scribble/manual
scribble/struct
setup/getinfo]
@title{PLT Scheme Documentation}
@begin[
(define (resolve s)
(resolved-module-path-name
(module-path-index-resolve
(module-path-index-join `(lib ,(string-append s ".scrbl")
"scribblings"
,s)
#f))))
(define initial-ones
(list (resolve "quick")
'blank
(resolve "guide")
(resolve "reference")
'blank
(resolve "gui")
'blank))
(let* ([dirs (find-relevant-directories '(scribblings))]
[infos (map get-info/full dirs)]
[docs (apply append
(map (lambda (i dir)
(let ([s (i 'scribblings)])
(map (lambda (d)
(if (pair? d)
(build-path dir (car d))
(build-path dir "???")))
s)))
infos
dirs))]
[line
(lambda (doc)
(list (make-flow (list (make-paragraph (list
(if (eq? doc 'blank)
(hspace 1)
(secref #:doc doc "top"))))))))])
(make-delayed-flow-element
(lambda (renderer part resolve-info)
(make-table
#f
(append (map line initial-ones)
(sort
(map line
(remove* initial-ones
(remove (resolve "start")
docs)))
(lambda (a b)
(let ([a (car (paragraph-content (car (flow-paragraphs (car a)))))]
[b (car (paragraph-content (car (flow-paragraphs (car b)))))])
(string-ci<? (element->string a renderer part resolve-info)
(element->string b renderer part resolve-info))))))))))
]