doc build automatically go to main doc dir; added doc categories for start doc; fix locale-sensitive byte<->string ops to actually use the locale; other small edits

svn: r8286
This commit is contained in:
Matthew Flatt 2008-01-10 23:42:23 +00:00
parent 73396b7d7b
commit 1e069dd2bc
38 changed files with 209 additions and 120 deletions

View File

@ -3,7 +3,7 @@
(for-label "main.ss"
scheme/gui/base)]
@title{Virtual Playing Cards Library}
@title{@bold{Cards}: Virtual Playing Cards Library}
@defmodule[games/cards/main]{The @schememodname[games/cards/main]
module provides a toolbox for creating cards games.}

View File

@ -1,5 +1,5 @@
(module info setup/infotab
(define name "Game Cards")
(define doc.txt "doc.txt")
(define scribblings '(("doc.scrbl"))))
(define scribblings '(("cards.scrbl"))))

View File

@ -4,7 +4,7 @@
scheme/contract
"../graphics.ss"))
@title{Legacy Graphics Library}
@title{@bold{Graphics}: Legacy Library}
@table-of-contents[]

View File

@ -1,7 +1,7 @@
#lang scribble/doc
@(require "common.ss")
@title{Extra PLT GUI Libraries}
@title{@bold{MrLib}: Extra PLT GUI Libraries}
@table-of-contents[]

View File

@ -1771,6 +1771,9 @@
(define (seclink tag #:underline? [u? #t] #:doc [doc #f] . s)
(make-link-element (if u? #f "plainlink") (decode-content s) `(part ,(doc-prefix doc tag))))
(define (other-manual #:underline? [u? #t] doc)
(secref #:doc doc #:underline? u? "top"))
(define (*schemelink stx-id id . s)
(let ([content (decode-content s)])
(make-delayed-element
@ -1786,7 +1789,7 @@
(define-syntax schemelink
(syntax-rules ()
[(_ id . content) (*schemelink (quote-syntax id) 'id . content)]))
(provide secref seclink schemelink)
(provide secref seclink schemelink other-manual)
(define (pidefterm . s)
(let ([c (apply defterm s)])

View File

@ -1,3 +1,4 @@
(module info setup/infotab
(define name "Scribblings: DrScheme")
(define scribblings '(("drscheme.scrbl" (#;multi-page main-doc)))))
(define scribblings '(("drscheme.scrbl" (#;multi-page main-doc))))
(define doc-categories '((tool 1))))

View File

@ -1,3 +1,5 @@
(module info setup/infotab
(define name "Scribblings: FFI")
(define scribblings '(("foreign.scrbl" (multi-page main-doc)))))
(define scribblings '(("foreign.scrbl" (multi-page main-doc))))
(define doc-categories '(foreign))
(define doc-priorities '(1)))

View File

@ -18,5 +18,4 @@
(define InsideMzScheme
(italic (secref #:doc '(lib "scribblings/inside/inside.scrbl")
"top")))
(other-manual '(lib "scribblings/inside/inside.scrbl")))

View File

@ -1,8 +1,7 @@
#lang scribble/doc
@require["common.ss"]
@title[#:tag-prefix '(lib "scribblings/gui/gui.scrbl")
#:tag "top"]{@bold{GUI}: PLT Graphics Toolkit}
@title{@bold{GUI}: PLT Graphics Toolkit}
@declare-exporting[scheme/gui/base scheme/gui]

View File

@ -19,7 +19,7 @@
ext-refsecref)
(define Quick
(italic (secref #:doc '(lib "scribblings/quick/quick.scrbl") "top")))
(other-manual '(lib "scribblings/quick/quick.scrbl")))
(define HtDP
(italic (link "http://www.htdp.org" "How to Design Programs")))
@ -62,5 +62,4 @@
(define (ext-refsecref s)
(make-element #f (list (refsecref s) " in " MzScheme)))
(define MzScheme
(italic (refsecref "top"))))
(define MzScheme (other-manual '(lib "scribblings/reference/reference.scrbl"))))

View File

@ -3,8 +3,7 @@
@require[scribble/eval]
@require["guide-utils.ss"]
@title[#:tag-prefix '(lib "scribblings/guide/guide.scrbl")
#:tag "top"]{@bold{Guide}: PLT Scheme}
@title{@bold{Guide}: PLT Scheme}
This guide is intended for programmers who are new to Scheme, new to PLT
Scheme, or new to some part of PLT Scheme. It assumes
@ -110,21 +109,21 @@ printed output.
@; ----------------------------------------------------------------------
@section{More Libraries}
@italic{@secref[#:doc '(lib "scribblings/gui/gui.scrbl") "top"]} describes the
PLT Scheme graphics toolbox, whose core is implemented by the MrEd
@other-manual['(lib "scribblings/gui/gui.scrbl")] describes the PLT
Scheme graphics toolbox, whose core is implemented by the MrEd
executable.
@italic{@secref[#:doc '(lib "scribblings/foreign/foreign.scrbl")
"top"]} describes tools for using Scheme to access libraries that are
normally used by C programs.
@other-manual['(lib "scribblings/foreign/foreign.scrbl")] describes
tools for using Scheme to access libraries that are normally used by C
programs.
@italic{@secref[#:doc '(lib "web-server/scribblings/web-server.scrbl")
"top"]} describes the PLT Scheme web server, which supports servlets
@other-manual['(lib "web-server/scribblings/web-server.scrbl")]
describes the PLT Scheme web server, which supports servlets
implemented in Scheme.
@secref[#:doc '(lib "scribblings/start/start.scrbl") "top"] provides
links to documentation for many other libraries distributed with PLT
Scheme or installed on your system.
@other-manual['(lib "scribblings/start/start.scrbl")] provides links
to documentation for many other libraries distributed with PLT Scheme
or installed on your system.
@link["http://planet.plt-scheme.org/"]{@|PLaneT|} offers even more
downloadable packages contributed by PLT Scheme users.

View File

@ -1,3 +1,4 @@
(module info setup/infotab
(define name "Scribblings: Guide")
(define scribblings '(("guide.scrbl" (multi-page main-doc)))))
(define scribblings '(("guide.scrbl" (multi-page main-doc))))
(define doc-categories '(getting-started)))

View File

@ -1,4 +1,5 @@
(module info setup/infotab
(define name "Scribblings: Honu")
(define scribblings '(("honu.scrbl" (multi-page main-doc)))))
(define scribblings '(("honu.scrbl" (multi-page main-doc))))
(define doc-categories '(other)))

View File

@ -1,7 +1,7 @@
#lang scribble/doc
@(require "common.ss")
@title{Languages for @italic{How to Design Programs}}
@title{@italic{How to Design Programs} Languages}
@table-of-contents[]

View File

@ -1,4 +1,4 @@
(module info setup/infotab
(define name "Scribblings: HtDP Languages")
(define scribblings '(("htdp-langs.scrbl" (multi-page main-doc)))))
(define scribblings '(("htdp-langs.scrbl" (multi-page main-doc))))
(define doc-categories '((language -1))))

View File

@ -1,3 +1,4 @@
(module info setup/infotab
(define name "Scribblings: Inside PLT Scheme")
(define scribblings '(("inside.scrbl" (multi-page main-doc)))))
(define scribblings '(("inside.scrbl" (multi-page main-doc))))
(define doc-categories '(foreign)))

View File

@ -10,10 +10,9 @@ embedded within an arbitrary C/C++ program. The manual assumes
familiarity with PLT Scheme as described in @|MzScheme|.
For an alternative way of dealing with foreign code, see
@italic{@secref[#:doc '(lib "scribblings/foreign/foreign.scrbl")
"top"]}, which describes the @schememodname[scheme/foreign] module for
manipulating low-level libraries and structures purely through Scheme
code.
@other-manual['(lib "scribblings/foreign/foreign.scrbl")], which
describes the @schememodname[scheme/foreign] module for manipulating
low-level libraries and structures purely through Scheme code.
@table-of-contents[]

View File

@ -157,7 +157,7 @@
(secref #:doc '(lib "scribblings/reference/reference.scrbl") s))
(define MzScheme
(italic (refsecref "top")))
(other-manual '(lib "scribblings/reference/reference.scrbl")))
(define (FormatD s)
(litchar (string-append "%" s)))

View File

@ -1,3 +1,4 @@
(module info setup/infotab
(define name "Scribblings: Quick")
(define scribblings '(("quick.scrbl" (main-doc)))))
(define scribblings '(("quick.scrbl" (main-doc))))
(define doc-categories '((getting-started 1))))

View File

@ -1,7 +1,6 @@
#lang scribble/doc
@title[#:tag-prefix '(lib "quick.scrbl" "scribblings/quick")
#:tag "top"]{@bold{Quick}: An Introduction to PLT Scheme with Pictures}
@title{@bold{Quick}: An Introduction to PLT Scheme with Pictures}
@; ----------------------------------------------------------------------
@ -576,5 +575,5 @@ way that Scheme is often described---PLT Scheme offers a rich language
with an extensive set of libraries and tools.
To start learning about the full PLT Scheme language and tools in
depth, move on to @italic[@secref[#:doc '(lib "guide.scrbl"
"scribblings/guide") "top"]].
depth, move on to @other-manual['(lib "guide.scrbl"
"scribblings/guide")].

View File

@ -184,8 +184,8 @@ An @tech{extension-load handler} takes the same arguments as a
@deftech{dynamic extension}, typically with the file suffix
@filepath{.so} (Unix), @filepath{.dll} (Windows), or @filepath{.dylib}
(Mac OS X). The file is loaded using internal, OS-specific
primitives. See @italic{@secref[#:doc '(lib
"scribblings/inside/inside.scrbl") "top"]} for more information on
primitives. See @other-manual['(lib
"scribblings/inside/inside.scrbl")] for more information on
@tech{dynamic extensions}.}

View File

@ -1,4 +1,5 @@
(module info setup/infotab
(define name "Scribblings: Reference")
(define scribblings '(("reference.scrbl" (multi-page main-doc)))))
(define scribblings '(("reference.scrbl" (multi-page main-doc))))
(define doc-categories '(language)))

View File

@ -74,9 +74,8 @@
(list ".")))))
(define Guide
(italic (guidesecref "top")))
(other-manual '(lib "scribblings/guide/guide.scrbl")))
(define HonuManual
(secref #:doc '(lib "scribblings/honu/honu.scrbl") "top")))
(other-manual '(lib "scribblings/honu/honu.scrbl"))))

View File

@ -1,6 +1,9 @@
#lang scribble/doc
@require["mz.ss"
scheme/math]
@(require "mz.ss"
scheme/math)
@(define math-eval (make-base-eval))
@interaction-eval[#:eval math-eval (require scheme/math)]
@title[#:tag "numbers"]{Numbers}
@ -809,6 +812,7 @@ Returns the sign of @scheme[x] as either @math{-1}, @math{0}, or
@math{1}.
@examples[
#:eval math-eval
(sgn 10)
(sgn -10.0)
(sgn 0)
@ -819,6 +823,7 @@ Returns the sign of @scheme[x] as either @math{-1}, @math{0}, or
Returns the complex conjugate of @scheme[z].
@examples[
#:eval math-eval
(conjugate 1)
(conjugate 3+4i)
]}

View File

@ -1,8 +1,7 @@
#lang scribble/doc
@require["mz.ss"]
@title[#:tag-prefix '(lib "scribblings/reference/reference.scrbl")
#:tag "top"]{@bold{Reference}: PLT Scheme}
@title{@bold{Reference}: PLT Scheme}
This manual defines the core PLT Scheme language and describes its
most prominent libraries. The companion manual @|Guide| provides a

View File

@ -142,9 +142,8 @@ Produces an opaque value representing the location of @scheme[id],
which must be bound as a @tech{top-level variable} or
@tech{module-level variable}.
The result is useful to low-level extensions; see
@italic{@secref[#:doc '(lib "scribblings/inside/inside.scrbl")
"top"]}. It can also be used with
The result is useful to low-level extensions; see @other-manual['(lib
"scribblings/inside/inside.scrbl")]. It can also be used with
@scheme[variable-reference->empty-namespace],
@scheme[variable-reference->resolved-module-path], and
@scheme[variable-reference->top-level-namespace], but facilities like

View File

@ -19,8 +19,10 @@ To document a collection or @|PLaneT| package:
@itemize{
@item{Create a file in your collection or planet package with the
file extension @filepath{.scrbl}. The remainder of these
instructions assume that the file is called @filepath{manual.scrbl}.}
file extension @filepath{.scrbl}. Beware that the file name you
choose will determine the output directory's name. The
remainder of these instructions assume that the file is called
@filepath{manual.scrbl}.}
@item{Start @filepath{manual.scrbl} like this:
@verbatim[#<<EOS
@ -67,15 +69,13 @@ EOS
collection, optionally supply @Flag{l} followed by the
collection name to limit the build process to that collection.}
@item{The generated documentation is
@filepath{compiled/doc/manual/index.html} within the
collection or @|PLaneT| package directory.
If you want the output to be relative to the PLT Scheme
documentation directory (which is recommend only for those who
produce the ``official'' PLT Scheme distribution, and even
then only in certain cases), add the @scheme['main-doc] option
to the @scheme[scribblings] definition in @filepath{info.ss}.}
@item{The generated documentation is normally
@filepath{doc/manual/index.html} within the collection or
@|PLaneT| package directory. If the collection in the PLT
Scheme installation's the main @filepath{collects} directory,
however, then the documentation is generated as
@filepath{manual/index.html} in the installation's main
@filepath{doc} directory.}
}

View File

@ -1,3 +1,4 @@
(module info setup/infotab
(define name "Scribblings: Scribble")
(define scribblings '(("scribble.scrbl" (multi-page main-doc)))))
(define scribblings '(("scribble.scrbl" (multi-page main-doc))))
(define doc-categories '(tool)))

View File

@ -638,17 +638,43 @@ and @litchar{^} for subscripts and superscripts.}
@; ------------------------------------------------------------------------
@section[#:tag "scribble:manual:section-links"]{Links}
@defproc[(secref [tag string?]) element?]{
@defproc[(secref [tag string?]
[#:doc module-path (or/c module-path? false/c) #f]
[#:underline? underline? any/c #t])
element?]{
Inserts the hyperlinked title of the section tagged @scheme[tag], but
@scheme{aux-element} items in the title content are omitted in the
hyperlink label.}
hyperlink label.
If @scheme[module-path] is provided, the @scheme[tag] refers to a tag
with a prefix determined by @scheme[module-path]. When
@exec{setup-plt} renders documentation, it automatically adds a tag
prefix to the document based on the source module. Thus, for example,
to refer to a section of the PLT Scheme reference,
@scheme[module-path] would be @scheme['(lib
"scribblings/reference/reference.scrbl")].
If @scheme[underline?] is @scheme[#f], then the hyperlink is rendered
in HTML without an underline.}
@defproc[(seclink [tag string?] [pre-content any/c] ...) element?]{
@defproc[(seclink [tag string?]
[#:doc module-path (or/c module-path? false/c) #f]
[#:underline? underline? any/c #t]
[pre-content any/c] ...) element?]{
The @tech{decode}d @scheme[pre-content] is hyperlinked to the section
tagged @scheme[tag].}
Like @scheme[secref], but the link label is the @tech{decode}d
@scheme[pre-content] insteda of the target section's name.}
@defproc[(other-manual [module-path module-path?]
[#:underline? underline? any/c #t])
element?]{
Like @scheme[secref] for the document's implicit @scheme["top"]
tag. Use this function to refer to a whole manual instead of
@scheme[secref], in case a special style in the future is used for
manual titles.}
@defproc[(schemelink [id symbol?] [pre-content any/c] ...) element?]{

View File

@ -1,3 +1,4 @@
(module info setup/infotab
(define name "Scribblings: Slideshow")
(define scribblings '(("slideshow.scrbl" (multi-page main-doc)))))
(define scribblings '(("slideshow.scrbl" (multi-page main-doc))))
(define doc-categories '(tool)))

View File

@ -1,3 +1,4 @@
(module info setup/infotab
(define name "Scribblings: Start")
(define scribblings '(("start.scrbl" (main-doc)))))
(define scribblings '(("start.scrbl" (main-doc always-run))))
(define doc-categories '(omit)))

View File

@ -14,54 +14,94 @@
,s)
#f))))
(define initial-ones
(list (resolve "quick")
'blank
(resolve "guide")
(resolve "reference")
'blank
(resolve "gui")
'blank))
(define-struct sec (cat label))
(define ending-ones
(list 'blank
(resolve "foreign")
(resolve "inside")))
(define sections
(list (make-sec 'getting-started
"Getting Started")
(make-sec 'language
"Languages")
(make-sec 'tool
"Tools")
(make-sec 'library
"Libraries")
(make-sec 'foreign
"Low-Level APIs")
(make-sec 'other
"Other")))
(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)))
(map (lambda (d cat)
(let ([new-cat (if (or (symbol? cat)
(and (list? cat)
(= 2 (length cat))
(symbol? (car cat))
(real? (cadr cat))))
cat
'unknown)])
(list
;; Category
(let ([the-cat (if (list? new-cat)
(car new-cat)
new-cat)])
(case the-cat
[(getting-started language tool library foreign other omit)
the-cat]
[else
(fprintf (current-error-port)
"WARNING: base category: ~e from: ~e"
cat
dir)]))
;; Priority
(if (list? new-cat)
(cadr new-cat)
0)
;; Path
(if (pair? d)
(build-path dir (car d))
(build-path dir "???")))))
s
(i 'doc-categories (lambda ()
(map (lambda (i) 'library) s))))))
infos
dirs))]
[plain-line
(lambda content
(list (make-flow (list (make-paragraph content)))))]
[line
(lambda (doc)
(list (make-flow (list (make-paragraph (list
(if (eq? doc 'blank)
(hspace 1)
(secref #:doc doc #:underline? #f "top"))))))))])
(plain-line (hspace 2)
(other-manual doc #:underline? #f)))])
(make-delayed-flow-element
(lambda (renderer part resolve-info)
(make-table
#f
(append (map line initial-ones)
(sort
(map line
(remove* (append initial-ones
ending-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)))))
(map line ending-ones))))))
(cdr
(apply append
(map (lambda (sec)
(let ([docs (filter (lambda (doc)
(eq? (car doc) (sec-cat sec)))
docs)])
(list*
(plain-line (hspace 1))
(plain-line (sec-label sec))
(map
cdr
(sort
(map (lambda (doc) (cons (cadr doc)
(line (caddr doc))))
docs)
(lambda (ad bd)
(let ([a (cadr (paragraph-content (car (flow-paragraphs (cadr ad)))))]
[b (cadr (paragraph-content (car (flow-paragraphs (cadr bd)))))])
(if (= (car ad) (car bd))
(begin
(string-ci<? (element->string a renderer part resolve-info)
(element->string b renderer part resolve-info)))
(> (car ad) (car bd))))))))))
sections)))))))
]

View File

@ -1,3 +1,4 @@
(module info setup/infotab
(define name "Scribblings: Tools")
(define scribblings '(("tools.scrbl" (multi-page main-doc)))))
(define scribblings '(("tools.scrbl" (multi-page main-doc))))
(define doc-categories '(other)))

View File

@ -18,11 +18,11 @@
This manual describes DrScheme's tools interface. It assumes
familiarity with
PLT Scheme, as described in
@(secref #:doc '(lib "scribblings/guide/guide.scrbl") "top"),
@(other-manual '(lib "scribblings/guide/guide.scrbl")),
DrScheme, as described in
@(secref #:doc '(lib "drscheme/drscheme.scrbl") "top"),
@(other-manual '(lib "drscheme/drscheme.scrbl")),
and the Framework, as described in
@(secref #:doc '(lib "framework/framework.scrbl") "top").
@(other-manual '(lib "framework/framework.scrbl")).
@section{Thanks}

View File

@ -40,7 +40,8 @@
(and (and (list? (cadr v))
(andmap (lambda (i)
(member i '(main-doc
multi-page)))
multi-page
always-run)))
(cadr v)))
(or (null? (cddr v))
(and (path-string? (caddr v))
@ -58,9 +59,10 @@
(cadr d)
(let-values ([(base name dir?) (split-path (car d))])
(path-replace-suffix name #"")))])
(if (memq 'main-doc flags)
(if (or (memq 'main-doc flags)
(pair? (path->main-collects-relative dir)))
(build-path (find-doc-dir) name)
(build-path dir "compiled" "doc" name)))
(build-path dir "doc" name)))
flags)))
s)
(begin
@ -303,7 +305,9 @@
(list-ref v-in 3) ; searches
(map string->path (list-ref v-in 2)) ; deps, in case we don't need to build...
can-run?
my-time info-out-time #f
my-time info-out-time
(and can-run?
(memq 'always-run (doc-flags doc)))
#f #f
vers
#f)))

View File

@ -4,7 +4,7 @@
(for-label scheme
trace/calltrace-lib)]
@title[#:tag "top"]{@bold{Calltrace}}
@title[#:tag "top"]{@bold{Trace}: Instrumentation to Show Function Calls}
@bold{Calltrace} is a tool that displays all calls to user procedures.
It displays the arguments to the calls, and it indents to show the

View File

@ -1,6 +1,7 @@
(module info setup/infotab
(define name "Web Server")
(define scribblings '(("scribblings/web-server.scrbl" (multi-page main-doc))))
(define doc-categories '(tool))
(define mzscheme-launcher-libraries
(list "main.ss"))

View File

@ -175,6 +175,10 @@ static char *nl_langinfo(int which)
if (!current_locale_name)
current_locale_name = (mzchar *)"\0\0\0\0";
if ((current_local_name[0] = 'C')
&& !current_local_name[1])
return "US-ASCII";
for (i = 0; current_locale_name[i]; i++) {
if (current_locale_name[i] == '.') {
if (current_locale_name[i + 1]) {
@ -196,9 +200,12 @@ static char *nl_langinfo(int which)
return "UTF-8";
}
# define mz_iconv_nl_langinfo() nl_langinfo(0)
#else
#endif
#ifdef DONT_USE_LOCALE
# define mz_iconv_nl_langinfo() ""
#else
# define mz_iconv_nl_langinfo() nl_langinfo(0)
#endif
static const char * const STRING_IS_NOT_UTF_8 = "string is not a well-formed UTF-8 encoding: ";