Hi Austin

Austin Ziegler wrote:
> I disagree that either #to_re or #to_rx would be a good name for this
> construct.

I don't feel strongly about the name, though compare #to_f, #to_i, and #to_s already in the core - I don't see those as obviously more 'expressive' than to_rx, simply more familiar. 

After all, #to_s *could* mean to 'to_symbol', and #to_f *could* mean 'to_file', if one were being perverse.

> I don't think I've actually ever seen Regexp.compile used, so maybe it
> can be repurposed in 1.9 to do this.

Yes, the special constrctor always makes me think it should do something "special" - perhaps like the /o modifier in perlre. However, I'd prefer an instance method in String to a new or repurposed class method in Regexp.

> FWIW, I don't tend to use the construct that Alex did -- I tend to
> either anchor my strings or insert them in the middle of a larger
> regexp, which is why I don't particularly think that this is a method
> that belongs on String.

I also commonly use them anchored within a larger regexp, but it would still be nicer to be able to write

/before #{str.to_rx} after/

Than to have to wedge a long call to a class function in an interpolated section.

I suppose the point I'm making is that Strings have a 'natural' affinity to or representation as Regexps - viz their mutually substitutable uses in #split, #sub and friends, and so it would be nice to make conversion between the two less unwieldy and verbose. 

Regexp seems to me a 'major' core class, with its own literal syntax (as Float, Integer, String, Symbol) etc. I wouldn't like to make anyone write "#{an_integer}" to do the work of Integer#to_s, unless they really wanted to.

I agree there is some ambiguity about the semantics re anchoring - should #to_rx mean

/#{Regexp.escape(a_string)/
or
/\A#{Regexp.escape(a_string)\z/

The strongest argument for the former is that the latter doesn't do anything useful that #== doesn't already do.
 
> If it's to be on String, though, it should probably be on a few others
> as well (Fixnum) and it should be explicit: #to_regexp.

Perhaps, yes. It's not something I've ever yearned for personally.

cheers
alex