From e7adecfd59afcf2645c115e536519c0d927d8fda Mon Sep 17 00:00:00 2001 From: Matthew Flatt <mflatt@racket-lang.org> Date: Thu, 6 Feb 2014 09:12:39 -0700 Subject: [PATCH] Scribble docs: split preprocessor variants into a separate manual original commit: ce31b5965c4680ca53cb85d6ec6731e2f949878f --- .../scribblings/scribble/how-to-paper.scrbl | 6 ++-- .../scribblings/scribble/info.rkt | 1 + .../scribblings/scribble/scribble-pp.scrbl | 26 +++++++++++++++++ .../scribblings/scribble/scribble.scrbl | 4 +-- .../scribblings/scribble/text.scrbl | 29 ++++++++++--------- 5 files changed, 47 insertions(+), 19 deletions(-) create mode 100644 pkgs/scribble-pkgs/scribble-doc/scribblings/scribble/scribble-pp.scrbl diff --git a/pkgs/scribble-pkgs/scribble-doc/scribblings/scribble/how-to-paper.scrbl b/pkgs/scribble-pkgs/scribble-doc/scribblings/scribble/how-to-paper.scrbl index 341b6e14..a15d190b 100644 --- a/pkgs/scribble-pkgs/scribble-doc/scribblings/scribble/how-to-paper.scrbl +++ b/pkgs/scribble-pkgs/scribble-doc/scribblings/scribble/how-to-paper.scrbl @@ -577,7 +577,8 @@ the @hash-lang[] line that starts the document. The @racket[decode] operation. The @racketmodname[scribble/text] language, however, acts more like a plain-text generator and preprocessor, and it does not perform any such decoding rules. (For more on -@racketmodname[scribble/text], see @secref["text"].) +@racketmodname[scribble/text], see @other-doc['(lib +"scribblings/scribble/scribble-pp.scrbl")].) @margin-note{More precisely, languages like @racketmodname[scribble/base] apply @racket[decode] only after @@ -677,4 +678,5 @@ Racket, continue with @secref["reader"] and then need more power. If you are interested in text generation and preprocessing, continue -with @secref["reader"], but then skip to @secref["text"]. +with @secref["reader"], but then switch to +@other-doc['(lib "scribblings/scribble/scribble-pp.scrbl")]. \ No newline at end of file diff --git a/pkgs/scribble-pkgs/scribble-doc/scribblings/scribble/info.rkt b/pkgs/scribble-pkgs/scribble-doc/scribblings/scribble/info.rkt index e8aa9ab8..2df098de 100644 --- a/pkgs/scribble-pkgs/scribble-doc/scribblings/scribble/info.rkt +++ b/pkgs/scribble-pkgs/scribble-doc/scribblings/scribble/info.rkt @@ -1,6 +1,7 @@ #lang info (define scribblings '(("scribble.scrbl" (multi-page) (racket-core -24)) + ("scribble-pp.scrbl" (multi-page) (tool)) ("demo-s1.scrbl" (keep-style no-search) (omit-start)) ("demo-m1.scrbl" (multi-page keep-style no-search) (omit-start)) diff --git a/pkgs/scribble-pkgs/scribble-doc/scribblings/scribble/scribble-pp.scrbl b/pkgs/scribble-pkgs/scribble-doc/scribblings/scribble/scribble-pp.scrbl new file mode 100644 index 00000000..7cde8eec --- /dev/null +++ b/pkgs/scribble-pkgs/scribble-doc/scribblings/scribble/scribble-pp.scrbl @@ -0,0 +1,26 @@ +#lang scribble/manual +@(require "utils.rkt") + +@title{Scribble as Preprocessor} + +@author["Matthew Flatt" "Eli Barzilay"] + +@section-index["Preprocessor"] + +The @racketmodname[scribble/text] and @racketmodname[scribble/html] +languages act as ``preprocessor'' languages for generating text or +HTML. These preprocessor languages use the same @"@" syntax as the +main Scribble tool (see @other-doc['(lib +"scribblings/scribble/scribble.scrbl")]), but instead of working in +terms of a document abstraction that can be rendered to text and HTML +(and other formats), the preprocessor languages work in a way that is +more specific to the target formats. + +@table-of-contents[] + +@; ------------------------------------------------------------------------ + +@include-section["text.scrbl"] +@include-section["html.scrbl"] + +@index-section[] diff --git a/pkgs/scribble-pkgs/scribble-doc/scribblings/scribble/scribble.scrbl b/pkgs/scribble-pkgs/scribble-doc/scribblings/scribble/scribble.scrbl index adce341d..b23116db 100644 --- a/pkgs/scribble-pkgs/scribble-doc/scribblings/scribble/scribble.scrbl +++ b/pkgs/scribble-pkgs/scribble-doc/scribblings/scribble/scribble.scrbl @@ -1,5 +1,5 @@ #lang scribble/manual -@(require scribble/bnf "utils.rkt") +@(require "utils.rkt") @title{Scribble: The Racket Documentation Tool} @@ -26,8 +26,6 @@ starting with the @filepath{scribble.scrbl} file. @include-section["generic.scrbl"] @include-section["plt.scrbl"] @include-section["lp.scrbl"] -@include-section["text.scrbl"] -@include-section["html.scrbl"] @include-section["internals.scrbl"] @include-section["running.scrbl"] diff --git a/pkgs/scribble-pkgs/scribble-doc/scribblings/scribble/text.scrbl b/pkgs/scribble-pkgs/scribble-doc/scribblings/scribble/text.scrbl index 57c699bb..118ed0e9 100644 --- a/pkgs/scribble-pkgs/scribble-doc/scribblings/scribble/text.scrbl +++ b/pkgs/scribble-pkgs/scribble-doc/scribblings/scribble/text.scrbl @@ -10,6 +10,8 @@ @initialize-tests @(define (tech/r s) @tech[s #:doc '(lib "scribblings/reference/reference.scrbl")]) +@(define scribble-doc '(lib "scribblings/scribble/scribble.scrbl")) +@(define @-form @tech[#:doc scribble-doc]{@"@"-forms}) @(define-syntax-rule (def-rkt t-id) (begin @@ -21,7 +23,6 @@ #:style (make-style #f (list (make-tex-addition "shaded.tex") (make-css-addition "shaded.css"))) ]{Text Generation} -@section-index["Preprocessor"] @defmodulelang[scribble/text]{The @racketmodname[scribble/text] language provides everything from @racket[racket/base], @@ -33,9 +34,9 @@ preprocessor language: @itemize[ @item{The language uses @racket[read-syntax-inside] to read the body - of the module, similar to @secref["docreader"]. This means that + of the module, similar to @secref[#:doc scribble-doc "docreader"]. This means that by default, all text is read in as Racket strings; and - @seclink["reader"]|{@-forms}| can be used to use Racket + @seclink[#:doc scribble-doc "reader"]|{@-forms}| can be used to use Racket functions and expression escapes.} @item{Values of expressions are printed with a custom @racket[output] @@ -77,7 +78,7 @@ part shows the source input, and the right part the printed result.) feature on top of feature, but blah blah blah.}-| -Using @seclink["reader"]|{@-forms}|, we can define and use Racket +Using @seclink[#:doc scribble-doc "reader"]|{@-forms}|, we can define and use Racket functions. @example|-{#lang scribble/text @@ -114,7 +115,7 @@ convenient conditional output. You have 3 errors in your code, I fixed 1 error.}-| -Using the scribble @seclink["reader"]|{@-forms}| syntax, you can write +Using the scribble @seclink[#:doc scribble-doc "reader"]|{@-forms}| syntax, you can write functions more conveniently too. @example|-{#lang scribble/text @@ -277,14 +278,14 @@ The separator can be set to any value. @section{Defining Functions and More} (Note: most of the tips in this section are applicable to any code -that uses the Scribble @tech{@"@"-form} syntax.) +that uses the Scribble @|@-form| syntax.) Because the Scribble reader is uniform, you can use it in place of any expression where it is more convenient. (By convention, we use a plain S-expression syntax when we want a Racket expression escape, and -an @tech{@"@"-form} for expressions that render as text, which, in the +an @|@-form| for expressions that render as text, which, in the @racket[scribble/text] language, is any value-producing expression.) -For example, you can use an @tech{@"@"-form} for a function that you define. +For example, you can use an @|@-form| for a function that you define. @example|-{#lang scribble/text @(define @bold[text] @list{*@|text|*}) @@ -298,7 +299,7 @@ will need to accept a variable number of arguments. In fact, this leads to a common problem: what if we want to write a function that consumes a number of ``text arguments'' rathen than a single ``rest-like'' body? The common solution for this is to provide the -separate text arguments in the S-expression part of an @tech{@"@"-form}. +separate text arguments in the S-expression part of an @|@-form|. @example|-{#lang scribble/text @(define (choose 1st 2nd) @@ -310,7 +311,7 @@ separate text arguments in the S-expression part of an @tech{@"@"-form}. Either you're with us, or against us. }-| -You can even use @tech{@"@"-forms} with a Racket quote or quasiquote as the +You can even use @|@-form|s with a Racket quote or quasiquote as the ``head'' part to make it shorter, or use a macro to get grouping of sub-parts without dealing with quotes. @@ -337,7 +338,7 @@ sub-parts without dealing with quotes. Yet another solution is to look at the text values and split the input arguments based on a specific token. Using @racket[match] can make it -convenient --- you can even specify the patterns with @tech{@"@"-forms}. +convenient --- you can even specify the patterns with @|@-form|s. @example|-{#lang scribble/text @(require racket/match) @@ -487,7 +488,7 @@ is the indentation of the output. This can be crucial in some cases, if you're generating code for an indentation-sensitive language (e.g., Haskell, Python, or C preprocessor directives). To get a better understanding of how the pieces interact, you may want to review how the -@seclink["reader"]|{Scribble reader}| section, but also remember that +@seclink[#:doc scribble-doc "reader"]|{Scribble reader}| section, but also remember that you can use quoted forms to see how some form is read. @example|-{#lang scribble/text @@ -983,7 +984,7 @@ trivial: the source text is still source code in a module, so you can more }-| -Note that the @seclink["at-exp-lang"]{@racket[at-exp] language} can +Note that the @seclink[#:doc scribble-doc "at-exp-lang"]{@racket[at-exp] language} can often be useful here, since such files need to deal with texts. Using it, it is easy to include a lot of textual content. @@ -1018,7 +1019,7 @@ it, it is easy to include a lot of textual content. }-| Of course, the extreme side of this will be to put all of your content -in a plain Racket module, using @tech{@"@"-forms} for convenience. However, +in a plain Racket module, using @|@-form|s for convenience. However, there is no need to use the text language in this case; instead, you can @racket[(require scribble/text)], which will get all of the bindings that are available in the @racket[scribble/text] language. Using