From: Sam Roberts Date: 2005-03-15T09:52:42+09:00 Subject: Re: rb_reg_quote weirdness Quoting matz@ruby-lang.org, on Tue, Mar 15, 2005 at 02:35:31AM +0900: > Hi, > > In message "Re: rb_reg_quote weirdness" > on Mon, 14 Mar 2005 06:42:37 +0900, Nikolai Weibull writes: > > |My documentation for Regexp::quote(str) says that a copy of str is > |returned, yet if str doesn't contain any metacharacters, str itself is > |returned: > > |is this how it should be, or should str be copied at this point?, > > For efficiency, avoiding unnecessary copy is sought. For consistency, > and safety (from in-place string modification), all time copy is > better. I chose the former. But I'm still open for input. I think your choice is right. If people want to duplicate the string, they can do str.quote.copy, or something. However, the docs are wrong, they strongly imply a new string will be returned. Cheers, Sam Index: re.c =================================================================== RCS file: /src/ruby/re.c,v retrieving revision 1.114.2.12 diff -u -r1.114.2.12 re.c --- re.c 6 Feb 2005 03:23:40 -0000 1.114.2.12 +++ re.c 15 Mar 2005 00:48:58 -0000 @@ -1801,11 +1801,12 @@ /* * call-seq: - * Regexp.escape(str) => new_str - * Regexp.quote(str) => new_str + * Regexp.escape(str) => a_str + * Regexp.quote(str) => a_str * * Escapes any characters that would have special meaning in a regular - * expression. For any string, + * expression. Returns a new escaped string, or self if no characters are + * escaped. For any string, * Regexp.escape(str)=~str will be true. * * Regexp.escape('\\*?{}.') #=> \\\\\*\?\{\}\.