[#4595] New block syntax — Daniel Amelang <daniel.amelang@...>

I'm really sorry if this isn't the place to talk about this. I've

25 messages 2005/03/21
[#4606] Re: New block syntax — "David A. Black" <dblack@...> 2005/03/21

Hi --

[#4629] Re: New block syntax — "Sean E. Russell" <ser@...> 2005/03/30

On Monday 21 March 2005 16:17, David A. Black wrote:

[#4648] about REXML::Encoding — speakillof <speakillof@...>

Hi.

15 messages 2005/03/31
[#4659] Re: about REXML::Encoding — "Sean E. Russell" <ser@...> 2005/04/04

On Thursday 31 March 2005 09:44, speakillof wrote:

Re: rb_reg_quote weirdness

From: Sam Roberts <sroberts@...>
Date: 2005-03-15 00:52:42 UTC
List: ruby-core #4565
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 <mailing-lists.ruby-core@rawuncut.elitemail.org> 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,
  *  <code>Regexp.escape(<i>str</i>)=~<i>str</i></code> will be true.
  *     
  *     Regexp.escape('\\*?{}.')   #=> \\\\\*\?\{\}\.





In This Thread