From: matz@... Date: 2017-02-22T07:06:03+00:00 Subject: [ruby-core:79661] [Ruby trunk Feature#9846][Rejected] Regexp#to_regexp Issue #9846 has been updated by Yukihiro Matsumoto. 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. ---------------------------------------- Feature #9846: Regexp#to_regexp https://bugs.ruby-lang.org/issues/9846#change-63078 * Author: Wayne Conrad * Status: Rejected * Priority: Normal * Assignee: * Target version: ---------------------------------------- There should be `Regexp#to_regexp`, just as there is `Array#to_ary` and `String#to_str`. ```ruby p [].to_ary # => [] p ''.to_str # => "" p //.to_regexp # undefined method `to_regexp`... ``` The use case is code like this: ```ruby 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): ```ruby 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: