From dfbde800afdabc83efc9ebe087b1aed6a90136d8 Mon Sep 17 00:00:00 2001 From: Steve Bennett Date: Thu, 6 Oct 2011 07:51:43 +1000 Subject: [PATCH] Document [string map] Reported-by: Lorance Stinson Signed-off-by: Steve Bennett --- Tcl_shipped.html | 77 +++++++++++++++++++++++++++++++++++++++++++++----------- jim_tcl.txt | 40 +++++++++++++++++++++++------ 2 files changed, 95 insertions(+), 22 deletions(-) diff --git a/Tcl_shipped.html b/Tcl_shipped.html index 35b9d58..e85ebb0 100644 --- a/Tcl_shipped.html +++ b/Tcl_shipped.html @@ -5688,6 +5688,15 @@ The legal options (which may be abbreviated) are:

+string byterange string first last +
+
+

+ Like string range except works on bytes rather than characters. + These commands are identical if UTF-8 support is not enabled. +

+
+
string compare ?-nocase? string1 string2
@@ -5920,6 +5929,55 @@ Any hexadecimal digit character ([0-9A-Fa-f]).

+string map ?-nocase? mapping string +
+
+

+ Replaces substrings in string based on the key-value pairs in + mapping, which is a list of key value key value ... as in the form + returned by array get. Each instance of a key in the string will be + replaced with its corresponding value. If -nocase is specified, then + matching is done without regard to case differences. Both key and value may + be multiple characters. Replacement is done in an ordered manner, so the + key appearing first in the list will be checked first, and so on. string is + only iterated over once, so earlier key replacements will have no affect for + later key matches. For example, +

+
+
+
string map {abc 1 ab 2 a 3 1 0} 1abcaababcabababc
+
+
+
+ +
+
+

+ will return the string 01321221. +

+
+
+ +
+
+

+ Note that if an earlier key is a prefix of a later one, it will completely mask the later + one. So if the previous example is reordered like this, +

+
+
+
string map {1 0 ab 2 a 3 abc 1} 1abcaababcabababc
+
+
+
+ +
+
+

+ it will return the string 02c322c222c. +

+
+
string match ?-nocase? pattern string
@@ -5949,12 +6007,12 @@ Any hexadecimal digit character ([0-9A-Fa-f]).

-[chars] +[chars]

Matches any character in the set given by chars. - If a sequence of the form x-y appears in chars, + If a sequence of the form x-y appears in chars, then any character between x and y, inclusive, will match.

@@ -5965,8 +6023,8 @@ Any hexadecimal digit character ([0-9A-Fa-f]).

Matches the single character x. This provides a way of - avoiding the special interpretation of the characters \*?[]\ - in '+pattern'+. + avoiding the special interpretation of the characters \*?[] + in pattern.

@@ -6010,15 +6068,6 @@ Any hexadecimal digit character ([0-9A-Fa-f]).

-string byterange string first last -
-
-

- Like string range except works on bytes rather than characters. These commands - are identical if UTF-8 support is not enabled -

-
-
string repeat string count
@@ -7637,7 +7686,7 @@ official policies, either expressed or implied, of the Jim Tcl Project.
diff --git a/jim_tcl.txt b/jim_tcl.txt index 09bd9c4..389522a 100644 --- a/jim_tcl.txt +++ b/jim_tcl.txt @@ -3730,6 +3730,10 @@ The legal options (which may be abbreviated) are: or if the string is composed entirely of ASCII characters. See UTF-8 AND UNICODE. ++*string byterange* 'string first last'+:: + Like `string range` except works on bytes rather than characters. + These commands are identical if UTF-8 support is not enabled. + +*string compare ?-nocase?* 'string1 string2'+:: Perform a character-by-character comparison of strings +'string1'+ and +'string2'+ in the same way as the C 'strcmp' procedure. Return @@ -3799,6 +3803,30 @@ The legal options (which may be abbreviated) are: If UTF-8 support is enabled, this may be different than the number of bytes. See UTF-8 AND UNICODE ++*string map ?-nocase?* 'mapping string'+:: + Replaces substrings in +'string'+ based on the key-value pairs in + +'mapping'+, which is a list of +key value key value \...+ as in the form + returned by `array get`. Each instance of a key in the string will be + replaced with its corresponding value. If +-nocase+ is specified, then + matching is done without regard to case differences. Both key and value may + be multiple characters. Replacement is done in an ordered manner, so the + key appearing first in the list will be checked first, and so on. +'string'+ is + only iterated over once, so earlier key replacements will have no affect for + later key matches. For example, + + string map {abc 1 ab 2 a 3 1 0} 1abcaababcabababc + + :: + will return the string +01321221+. + :: + Note that if an earlier key is a prefix of a later one, it will completely mask the later + one. So if the previous example is reordered like this, + + string map {1 0 ab 2 a 3 abc 1} 1abcaababcabababc + + :: + it will return the string +02c322c222c+. + +*string match ?-nocase?* 'pattern string'+:: See if +'pattern'+ matches +'string'+; return 1 if it does, 0 if it doesn't. Matching is done in a fashion similar to that @@ -3813,16 +3841,16 @@ The legal options (which may be abbreviated) are: +?+;; Matches any single character in +'string'+. - +[+'chars'+]+;; + +['chars']+;; Matches any character in the set given by +'chars'+. - If a sequence of the form +'x'+-+'y'+ appears in +'chars'+, + If a sequence of the form +'x-y'+ appears in +'chars'+, then any character between +'x'+ and +'y'+, inclusive, will match. +{backslash}x+;; Matches the single character +'x'+. This provides a way of - avoiding the special interpretation of the characters \`\*?[]\` - in +''+pattern+''+. + avoiding the special interpretation of the characters +{backslash}*?[]+ + in +'pattern'+. :: Performs a case-insensitive comparison if +-nocase+ is specified. @@ -3839,10 +3867,6 @@ The legal options (which may be abbreviated) are: it is treated as if it were +end+. If +'first'+ is greater than +'last'+ then an empty string is returned. -+*string byterange* 'string first last'+:: - Like 'string range' except works on bytes rather than characters. These commands - are identical if UTF-8 support is not enabled - +*string repeat* 'string count'+:: Returns a new string consisting of +'string'+ repeated +'count'+ times. -- 2.11.4.GIT