Provided by: tcllib_1.19-dfsg-2_all bug

NAME

       stringprep - Implementation of stringprep

SYNOPSIS

       package require Tcl  8.3

       package require stringprep  1.0.1

       ::stringprep::register  profile  ?-mapping  list? ?-normalization form? ?-prohibited list?
       ?-prohibitedList list? ?-prohibitedCommand command? ?-prohibitedBidi boolean?

       ::stringprep::stringprep profile string

       ::stringprep::compare profile string1 string2

_________________________________________________________________________________________________

DESCRIPTION

       This is  an  implementation  in  Tcl  of  the  Preparation  of  Internationalized  Strings
       ("stringprep").  It  allows  to define stringprep profiles and use them to prepare Unicode
       strings for comparison as defined in RFC-3454.

COMMANDS

       ::stringprep::register profile ?-mapping list? ?-normalization  form?  ?-prohibited  list?
       ?-prohibitedList list? ?-prohibitedCommand command? ?-prohibitedBidi boolean?
              Register the stringprep profile named profile. Options are the following.

              Option  -mapping specifies stringprep mapping tables.  This parameter takes list of
              tables from appendix B of RFC-3454. The usual list values are  {B.1  B.2}  or  {B.1
              B.3}  where  B.1  contains  characters which commonly map to nothing, B.3 specifies
              case folding, and B.2 is used in  profiles  with  unicode  normalization  form  KC.
              Defult value is {} which means no mapping.

              Option  -normalization  takes a string and if it is nonempty then it uses as a name
              of Unicode normalization form. Any value of "D", "C", "KD" or  "KC"  may  be  used,
              though  RFC-3454  defines only two options: no normalization or normalization using
              form KC.

              Option -prohibited takes a list of  RFC-3454  tables  with  prohibited  characters.
              Current version does allow to prohibit either all tables from C.3 to C.9 or neither
              of them. An example of this list for RFC-3491 is {A.1 C.1.2 C.2.2 C.3 C.4  C.5  C.6
              C.7 C.8 C.9}.

              Option  -prohibitedList  specifies  a list of additional prohibited characters. The
              list contains not characters themselves but their  Unicode  numbers.  For  example,
              Nodeprep  specification  from RFC-3920 forbids the following codes: {0x22 0x26 0x27
              0x2f 0x3a 0x3c 0x3e 0x40} (\" \& \' / : < > @).

              Option -prohibitedCommand specifies a command which is called for  every  character
              code  in  mapped  and  normalized  string.  If  the  command  returns true then the
              character is  considered  prohibited.  This  option  is  useful  when  a  list  for
              -prohibitedList is too large.

              Option -prohibitedBidi takes boolean value and if it is true then the bidirectional
              character processing rules defined in section 6 of RFC-3454 are used.

       ::stringprep::stringprep profile string
              Performs stringprep operations defined in profile profile to string string.  Result
              is  a  prepared  string  or  one  of the following errors: invalid_profile (profile
              profile is not defined), prohibited_character (string string contains a  prohibited
              character)  or  prohibited_bidi  (string string contains a prohibited bidirectional
              sequence).

       ::stringprep::compare profile string1 string2
              Compares two unicode strings prepared accordingly to  stringprep  profile  profile.
              The   command   returns  0  if  prepared  strings  are  equal,  -1  if  string1  is
              lexicographically less than string2, or 1 if string1 is  lexicographically  greater
              than string2.

EXAMPLES

       Nameprep profile definition (see RFC-3491):

              ::stringprep::register nameprep  -mapping {B.1 B.2}  -normalization KC  -prohibited {A.1 C.1.2 C.2.2 C.3 C.4 C.5 C.6 C.7 C.8 C.9}  -prohibitedBidi 1

       Nodeprep and resourceprep profile definitions (see RFC-3920):

              ::stringprep::register nodeprep  -mapping {B.1 B.2}  -normalization KC  -prohibited {A.1 C.1.1 C.1.2 C.2.1 C.2.2 C.3 C.4 C.5 C.6 C.7 C.8 C.9}  -prohibitedList {0x22 0x26 0x27 0x2f 0x3a 0x3c 0x3e 0x40}  -prohibitedBidi 1

              ::stringprep::register resourceprep  -mapping {B.1}  -normalization KC  -prohibited {A.1 C.1.2 C.2.1 C.2.2 C.3 C.4 C.5 C.6 C.7 C.8 C.9}  -prohibitedBidi 1

REFERENCES

       [1]    "Preparation        of       Internationalized       Strings       ('stringprep')",
              (http://www.ietf.org/rfc/rfc3454.txt)

       [2]    "Nameprep:  A  Stringprep  Profile  for  Internationalized  Domain  Names   (IDN)",
              (http://www.ietf.org/rfc/rfc3491.txt)

       [3]    "Extensible      Messaging     and     Presence     Protocol     (XMPP):     Core",
              (http://www.ietf.org/rfc/rfc3920.txt)

AUTHORS

       Sergei Golovan

BUGS, IDEAS, FEEDBACK

       This document, and the package it describes,  will  undoubtedly  contain  bugs  and  other
       problems.   Please  report  such  in  the  category  stringprep  of  the  Tcllib  Trackers
       [http://core.tcl.tk/tcllib/reportlist].  Please also report any ideas for enhancements you
       may have for either package and/or documentation.

       When proposing code changes, please provide unified diffs, i.e the output of diff -u.

       Note further that attachments are strongly preferred over inlined patches. Attachments can
       be made by going to the Edit form of the ticket immediately after its creation,  and  then
       using the left-most button in the secondary navigation bar.

SEE ALSO

       unicode(3tcl)

KEYWORDS

       stringprep, unicode

COPYRIGHT

       Copyright (c) 2007-2009, Sergei Golovan <sgolovan@nes.ru>