Project

General

Profile

Actions

Feature #9846

closed

Regexp#to_regexp

Feature #9846: Regexp#to_regexp

Added by wconrad (Wayne Conrad) over 11 years ago. Updated over 8 years ago.

Status:
Rejected
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

Updated by justcolin (Colin Fulton) almost 9 years ago Actions #2 [ruby-core:78715]

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

Updated by nobu (Nobuyoshi Nakada) almost 9 years ago Actions #3 [ruby-core:78717]

  • Description updated (diff)
case when ary = Array.try_convert(o) # do something with ary when str = String.try_convert(o) # do something with str when re = Regexp.try_convert(o) # do something with re else # do other thing end 

Updated by matz (Yukihiro Matsumoto) over 8 years ago Actions #4 [ruby-core:79661]

  • Status changed from Open to Rejected

Is there any concrete use-case? Consistency is not the best reason.
This proposal leads against Duck typing.

Matz.

Actions

Also available in: PDF Atom