Issue #11999 has been updated by sorah Shota Fukumori. Assignee set to sorah Shota Fukumori Discussed at https://bugs.ruby-lang.org/projects/ruby/wiki/DevelopersMeeting20160216Japan with Matz and several committers: Log: https://docs.google.com/document/d/1rj7ODOCSfcsQeBd6-p-NiVwqxDUg05G66LwDOkKOGTw/pub - #to_h is inappropriate name while non-named capture exists: 1. Return Hash with integer keys? ( `{0 => "a", 1 => "b"}` ) - there's no use case for this behavior. - rejected 2. `#named_captures` (accepted) - matz said acceptable - Behavior when there are multiple named captures with same name - Return last matched value ``` ruby /(?<a>b)|(?<a>x)/.match("abc").to_h #=> {"a" => "b"} ``` - Behavior when named captures didn”Ēt match anything - Return nil as value - Behavior when no named captures - `#captures` returns `[]` when a regexp has no capture, so `#named_captures` returns `{}` when a regexp has no named capture ---- @matz Could you confirm this ¢¬ and say accept here please? ---------------------------------------- Feature #11999: MatchData#to_h to get a Hash from named captures https://bugs.ruby-lang.org/issues/11999#change-57015 * Author: sorah Shota Fukumori * Status: Open * Priority: Normal * Assignee: sorah Shota Fukumori ---------------------------------------- ~~~ class MatchData def to_h self.names.map { |n| [n, self[n]] }.to_h end end p '12'.match(/(?<a>.)(?<b>.)(?<c>.)?/).to_h #=> {"a"=>"1", "b"=>"2", "c"=>nil} ~~~ Sometimes I want to get a Hash from named capture, but currently I have to use #names + #captures. How about adding MatchData#to_h for convenience way? ---Files-------------------------------- 11999.diff (2.77 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>