7.5 Decoding Text
At the flow level, decoding recognizes a blank line as a paragraph separator. Blocks and paragraphs without blank lines in between are collected into a compound paragraph.
At the content level, decoding makes just a few special text conversions:
---: converted to 'mdash
--: converted to 'ndash
``: converted to 'ldquo, which is fancy open quotes: “
'': converted to 'rdquo, which is fancy closing quotes: ”
': converted to 'rsquo, which is a fancy apostrophe: ’
`: converted to 'lsquo, which is a fancy quote: ‘
Some functions decode a sequence of pre-flow or pre-content arguments using decode-flow or decode-content, respectively. For example, the bold function accepts any number of pre-content arguments, so that in
@bold{``apple''} |
the ``apple'' argument is decoded to use fancy quotes, and then it is bolded.
procedure
(pre-content? v) → boolean?
v : any/c
Pre-content is decoded into content by functions like decode-content and decode-paragraph.
Pre-flow is decoded into a flow (i.e., a list of blocks) by functions like decode-flow.
A pre-part sequence is decoded into a part by functions like decode and decode-part.
Portions of lst are within a part are decoded using decode-flow.
procedure
(decode-part lst tags title depth) → part?
lst : (listof pre-part?) tags : (listof string?) title : (or/c #f list?) depth : exact-nonnegative-integer?
procedure
(decode-flow lst) → (listof block?)
lst : (listof pre-flow?)
Portions of lst are within a compound paragraph are decoded using decode-compound-paragraph.
procedure
(decode-compound-paragraph lst) → block?
lst : (listof pre-flow?)
Portions of lst that are separated by blocks are decoded using decode-content.
procedure
(decode-paragraph lst) → paragraph?
lst : (listof pre-content?)
procedure
(decode-content lst) → list?
lst : (listof pre-content?)
procedure
(decode-elements lst) → list?
lst : (listof pre-content?)
procedure
(decode-string s) → (listof content?)
s : string?
procedure
(whitespace? s) → boolean?
s : string?
struct
(struct title-decl (tag-prefix tags version style content) #:extra-constructor-name make-title-decl) tag-prefix : (or/c #f string?) tags : (listof string?) version : (or/c string? #f) style : style? content : content?
struct
(struct part-start (depth tag-prefix tags style title) #:extra-constructor-name make-part-start) depth : integer? tag-prefix : (or/c #f string?) tags : (listof string?) style : style? title : content?
struct
(struct part-index-decl (plain-seq entry-seq) #:extra-constructor-name make-part-index-decl) plain-seq : (listof string?) entry-seq : list?
struct
(struct part-collect-decl (element) #:extra-constructor-name make-part-collect-decl) element : (or/c element? part-relative-element?)
struct
(struct part-tag-decl (tag) #:extra-constructor-name make-part-tag-decl) tag : tag?
struct
(struct splice (run) #:extra-constructor-name make-splice) run : list?
procedure
(spliceof ctc) → flat-contract?
ctc : flat-contract?
procedure
(clean-up-index-string str) → string?
str : string?