\section{\module{stringprep} ---
         Internet String Preparation}

\declaremodule{standard}{stringprep}
\modulesynopsis{String preparation, as per RFC 3453}
\moduleauthor{Martin v. L\"owis}{martin@v.loewis.de}
\sectionauthor{Martin v. L\"owis}{martin@v.loewis.de}

\versionadded{2.3}

When identifying things (such as host names) in the internet, it is
often necessary to compare such identifications for
``equality''. Exactly how this comparison is executed may depend on
the application domain, e.g. whether it should be case-insensitive or
not. It may be also necessary to restrict the possible
identifications, to allow only identifications consisting of
``printable'' characters.

\rfc{3454} defines a procedure for ``preparing'' Unicode strings in
internet protocols. Before passing strings onto the wire, they are
processed with the preparation procedure, after which they have a
certain normalized form. The RFC defines a set of tables, which can be
combined into profiles. Each profile must define which tables it uses,
and what other optional parts of the \code{stringprep} procedure are
part of the profile. One example of a \code{stringprep} profile is
\code{nameprep}, which is used for internationalized domain names.

The module \module{stringprep} only exposes the tables from RFC
3454. As these tables would be very large to represent them as
dictionaries or lists, the module uses the Unicode character database
internally. The module source code itself was generated using the
\code{mkstringprep.py} utility.

As a result, these tables are exposed as functions, not as data
structures. There are two kinds of tables in the RFC: sets and
mappings. For a set, \module{stringprep} provides the ``characteristic
function'', i.e. a function that returns true if the parameter is part
of the set. For mappings, it provides the mapping function: given the
key, it returns the associated value. Below is a list of all functions
available in the module.

\begin{funcdesc}{in_table_a1}{code}
Determine whether \var{code} is in table{A.1} (Unassigned code points
in Unicode 3.2).
\end{funcdesc}

\begin{funcdesc}{in_table_b1}{code}
Determine whether \var{code} is in table{B.1} (Commonly mapped to
nothing).
\end{funcdesc}

\begin{funcdesc}{map_table_b2}{code}
Return the mapped value for \var{code} according to table{B.2} 
(Mapping for case-folding used with NFKC).
\end{funcdesc}

\begin{funcdesc}{map_table_b3}{code}
Return the mapped value for \var{code} according to table{B.3} 
(Mapping for case-folding used with no normalization).
\end{funcdesc}

\begin{funcdesc}{in_table_c11}{code}
Determine whether \var{code} is in table{C.1.1} 
(ASCII space characters).
\end{funcdesc}

\begin{funcdesc}{in_table_c12}{code}
Determine whether \var{code} is in table{C.1.2} 
(Non-ASCII space characters).
\end{funcdesc}

\begin{funcdesc}{in_table_c11_c12}{code}
Determine whether \var{code} is in table{C.1} 
(Space characters, union of C.1.1 and C.1.2).
\end{funcdesc}

\begin{funcdesc}{in_table_c21}{code}
Determine whether \var{code} is in table{C.2.1} 
(ASCII control characters).
\end{funcdesc}

\begin{funcdesc}{in_table_c22}{code}
Determine whether \var{code} is in table{C.2.2} 
(Non-ASCII control characters).
\end{funcdesc}

\begin{funcdesc}{in_table_c21_c22}{code}
Determine whether \var{code} is in table{C.2} 
(Control characters, union of C.2.1 and C.2.2).
\end{funcdesc}

\begin{funcdesc}{in_table_c3}{code}
Determine whether \var{code} is in table{C.3} 
(Private use).
\end{funcdesc}

\begin{funcdesc}{in_table_c4}{code}
Determine whether \var{code} is in table{C.4} 
(Non-character code points).
\end{funcdesc}

\begin{funcdesc}{in_table_c5}{code}
Determine whether \var{code} is in table{C.5} 
(Surrogate codes).
\end{funcdesc}

\begin{funcdesc}{in_table_c6}{code}
Determine whether \var{code} is in table{C.6} 
(Inappropriate for plain text).
\end{funcdesc}

\begin{funcdesc}{in_table_c7}{code}
Determine whether \var{code} is in table{C.7} 
(Inappropriate for canonical representation).
\end{funcdesc}

\begin{funcdesc}{in_table_c8}{code}
Determine whether \var{code} is in table{C.8} 
(Change display properties or are deprecated).
\end{funcdesc}

\begin{funcdesc}{in_table_c9}{code}
Determine whether \var{code} is in table{C.9} 
(Tagging characters).
\end{funcdesc}

\begin{funcdesc}{in_table_d1}{code}
Determine whether \var{code} is in table{D.1} 
(Characters with bidirectional property ``R'' or ``AL'').
\end{funcdesc}

\begin{funcdesc}{in_table_d2}{code}
Determine whether \var{code} is in table{D.2} 
(Characters with bidirectional property ``L'').
\end{funcdesc}

