stringprep(n)      Preparation of Internationalized Strings      stringprep(n)



______________________________________________________________________________

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 SF Trackers
       [http://sourceforge.net/tracker/?group_id=12883].  Please also report
       any ideas for enhancements you may have for either package and/or
       documentation.

SEE ALSO
       unicode(n)

KEYWORDS
       stringprep, unicode

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




stringprep                           1.0.1                       stringprep(n)
