Issue #9846 has been updated by Colin Fulton.


I know this is an old issues, but this also surprised me.

----------------------------------------
Feature #9846: Regexp#to_regexp
https://bugs.ruby-lang.org/issues/9846#change-62087

* Author: Wayne Conrad
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
There should be Regexp#to_regexp, just as there is Array#to_ary and String#to_str.

    p [].to_ary       # => []
    p ''.to_str       # => ""
    p //.to_regexp    # undefined method `to_regexp`... 

The use case is code like this:

    if o.respond_to?(:to_ary)
      # do something with o.to_ary
    elsif o.respond_to?(:to_str)
      # do something with o.to_str
    elseif o.respond_to?(to_regexp)    # can't do this today
      # do something with o.to_regexp

The workaround is to use Regexp.try_convert.  Regexp.try_convert accepts either a Regexp or an object that responds to #to_regexp; so this code works fine (and is in some ways better):

    elsif re = Regexp.try_convert(o)
      # do something with o

Still, that Regexp does not respond to #to_regexp surprised me.  Does it surprise anyone else?

---Files--------------------------------
0001-re.c-rb_reg_to_regexp-add-to_regexp.patch (2 KB)


-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>