Project

General

Profile

Feature #9846

Regexp#to_regexp

Added by wconrad (Wayne Conrad) about 6 years ago. Updated over 3 years ago.

Status:
Rejected
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:62615]

Description

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
elsif 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

Also available in: Atom PDF