From: sawadatsuyoshi@... Date: 2018-02-05T06:02:20+00:00 Subject: [ruby-core:85387] [Ruby trunk Feature#14443] Omit 'pattern' parameter in '(g)sub(!)' when 'hash' is given Issue #14443 has been updated by sawa (Tsuyoshi Sawada). If creation of the union is done within C-Ruby code, I believe that should be more efficient than having the `pattern` argument explicitly given and interpreted. ---------------------------------------- Feature #14443: Omit 'pattern' parameter in '(g)sub(!)' when 'hash' is given https://bugs.ruby-lang.org/issues/14443#change-70166 * Author: sawa (Tsuyoshi Sawada) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- When `(g)sub(!)` takes a hash as the second argument, in almost all use cases, the first argument expresses the union of keys of the hash. In the following, `/[abc]/` is the union of the keys `"a"`, `"b"`, `"c"`. ```ruby "blahblah".sub(/[abc]/, {"a" => "A", "b" => "B", "c" => "C"}) ``` I feel this redundant and not efficient. Hence I propose to let the current first argument be optional when a hash is given. The following: ```ruby "blahblah".sub("a" => "A", "b" => "B", "c" => "C") ``` should be equivalent to: ```ruby "blahblah".sub(pattern, {"a" => "A", "b" => "B", "c" => "C"}) ``` where: ```ruby pattern = Regexp.union(*{"a" => "A", "b" => "B", "c" => "C"}.keys.map{|k| Regexp.escape(k)}) ``` -- https://bugs.ruby-lang.org/ Unsubscribe: