document net/unihead
This commit is contained in:
parent
0c96946bdd
commit
ed15636bfc
|
@ -13,6 +13,7 @@
|
|||
@include-section["smtp.scrbl"]
|
||||
@include-section["sendmail.scrbl"]
|
||||
@include-section["head.scrbl"]
|
||||
@include-section["unihead.scrbl"]
|
||||
@include-section["imap.scrbl"]
|
||||
@include-section["pop3.scrbl"]
|
||||
@include-section["mime.scrbl"]
|
||||
|
|
63
net-doc/net/scribblings/unihead.scrbl
Normal file
63
net-doc/net/scribblings/unihead.scrbl
Normal file
|
@ -0,0 +1,63 @@
|
|||
#lang scribble/doc
|
||||
@(require "common.rkt"
|
||||
scribble/eval
|
||||
scribble/bnf
|
||||
(for-label net/unihead))
|
||||
|
||||
@(define unihead-eval (make-base-eval))
|
||||
@interaction-eval[#:eval unihead-eval (require net/unihead)]
|
||||
|
||||
@(define l1-seq @elem{@litchar{=?ISO-8859-1?Q?}...@litchar{?=}})
|
||||
@(define uni-seq @elem{@litchar{=?UTF-8?B?}...@litchar{?=}})
|
||||
|
||||
@(define enc-format @elem{@litchar{=?}@nonterm{encoding}@litchar{?}@nonterm{transport}@litchar{?}...@litchar{?=}})
|
||||
|
||||
@title[#:tag "unihead"]{Header Field Encoding}
|
||||
|
||||
@defmodule[net/unihead]{The @racketmodname[net/unihead] module
|
||||
provides utilities for encoding and decoding header fields using the
|
||||
@|enc-format| format.}
|
||||
|
||||
@defproc[(encode-for-header [s string?]) string?]{
|
||||
|
||||
Encodes @racket[s] for use in a header.
|
||||
|
||||
If @racket[s] contains only ASCII characters, then the result string
|
||||
will have the same content as the given string. If @racket[s] contains
|
||||
only Latin-1 characters, then on each CRLF-delimited line, the
|
||||
space-delimited sequence containing all non-ASCII characters in
|
||||
@racket[s] is encoded with a @|l1-seq| sequence. If @racket[s]
|
||||
contains non-Latin-1 characters, then on each CRLF-delimited line, a
|
||||
space-delimited sequence containing all non-ASCII characters in
|
||||
@racket[s] is encoded with a @|uni-seq| sequence.
|
||||
|
||||
@examples[
|
||||
#:eval unihead-eval
|
||||
(encode-for-header "English")
|
||||
(encode-for-header "français")
|
||||
(encode-for-header "→" )
|
||||
(encode-for-header "→\r\nboth → and français here")
|
||||
]}
|
||||
|
||||
@defproc[(decode-for-header [s string?]) string?]{
|
||||
|
||||
Decodes header fields that use the @|enc-format| encoding format. The
|
||||
specified @nonterm{encoding} is generalized via
|
||||
@racket[generalize-encoding] before decoding content.
|
||||
|
||||
@examples[
|
||||
#:eval unihead-eval
|
||||
(decode-for-header "English")
|
||||
(decode-for-header "=?UTF-8?B?4oaS?= =?ISO-8859-1?Q?fran=E7ais?=")
|
||||
]}
|
||||
|
||||
|
||||
@defproc[(generalize-encoding [s (or string? bytes?)]) (or string? bytes?)]{
|
||||
|
||||
Generalizes the encoding name @racket[s] to compensate for typical
|
||||
mailer bugs: Latin-1 and ASCII encodings are geenralized to
|
||||
WINDOWS-1252; GB and GB2312 are generalized to GBK; and KS_C_5601-1987
|
||||
is generalized to CP949.}
|
||||
|
||||
|
||||
@close-eval[unihead-eval]
|
Loading…
Reference in New Issue
Block a user