summaryrefslogtreecommitdiffstats
path: root/doc/regsub.n
diff options
context:
space:
mode:
authordkf <donal.k.fellows@manchester.ac.uk>2010-09-10 13:02:12 (GMT)
committerdkf <donal.k.fellows@manchester.ac.uk>2010-09-10 13:02:12 (GMT)
commitbd7807f91414bf059602e1a2100a329442a0348c (patch)
tree6391537b7795029b02b495e01b23031ad30f61c9 /doc/regsub.n
parent9e8566ff42a2366b85143427edf1ffb37d186b04 (diff)
downloadtcl-bd7807f91414bf059602e1a2100a329442a0348c.zip
tcl-bd7807f91414bf059602e1a2100a329442a0348c.tar.gz
tcl-bd7807f91414bf059602e1a2100a329442a0348c.tar.bz2
* doc/regsub.n: [Bug 3063568]: Fix for gotcha in example due to Tcl's
special handling of backslash-newline. Makes example slightly less pure, but more useful.
Diffstat (limited to 'doc/regsub.n')
-rw-r--r--doc/regsub.n13
1 files changed, 8 insertions, 5 deletions
diff --git a/doc/regsub.n b/doc/regsub.n
index 413a6ab..e762b9d 100644
--- a/doc/regsub.n
+++ b/doc/regsub.n
@@ -6,7 +6,7 @@
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\"
-'\" RCS: @(#) $Id: regsub.n,v 1.22.2.1 2008/07/07 08:36:30 dkf Exp $
+'\" RCS: @(#) $Id: regsub.n,v 1.22.2.2 2010/09/10 13:02:12 dkf Exp $
'\"
.so man.macros
.TH regsub n 8.3 Tcl "Tcl Built-In Commands"
@@ -161,15 +161,18 @@ Insert double-quotes around the first instance of the word
Convert all non-ASCII and Tcl-significant characters into \eu escape
sequences by using \fBregsub\fR and \fBsubst\fR in combination:
.CS
-# This RE is just a character class for everything "bad"
-set RE {[][{};#\e\e\e$\es\eu0080-\euffff]}
+# This RE is just a character class for almost everything "bad"
+set RE {[][{};#\e\e\e$ \er\et\eu0080-\euffff]}
# We will substitute with a fragment of Tcl script in brackets
set substitution {[format \e\e\e\eu%04x [scan "\e\e&" %c]]}
# Now we apply the substitution to get a subst-string that
-# will perform the computational parts of the conversion.
-set quoted [subst [\fBregsub\fR -all $RE $string $substitution]]
+# will perform the computational parts of the conversion. Note
+# that newline is handled specially through \fBstring map\fR since
+# backslash-newline is a special sequence.
+set quoted [subst [string map {\en {\e\eu000a}} \e
+ [\fBregsub\fR -all $RE $string $substitution]]]
.CE
.SH "SEE ALSO"
regexp(n), re_syntax(n), subst(n),