Project

General

Profile

Bug #11825

Updated by nobu (Nobuyoshi Nakada) over 8 years ago

`MatchData#names` MatchData#names returns ASCII-8BIT. 
 But `MatchData#[]` MatchData#[] doesn't accept ASCII-8BIT name if name has non-ASCII chars. 

 `MatchData#names` MatchData#names should return same encoding of regexp. (UTF-8 by default) 

 ~~~ 
 $ irb 
 ruby 2.3.0preview2 (2015-12-11 trunk 53028) [x86_64-linux] 
 irb(main):001:0> m = /(?<宝石>ルビー)/.match('ルビー') 
 => #<MatchData "ルビー" 宝石:"ルビー"> 
 irb(main):002:0> m.names 
 => ["\xE5\xAE\x9D\xE7\x9F\xB3"] 
 irb(main):003:0> m[m.names[0]] 
 IndexError: undefined group name reference: "\xE5\xAE\x9D\xE7\x9F\xB3" 
         from (irb):3:in `[]' 
         from (irb):3 
         from /usr/local/anyenv/envs/rbenv/versions/2.3.0-preview2/bin/irb:11:in `<main>' 
 irb(main):004:0> m['宝石'] 
 => "ルビー" 
 irb(main):005:0> m.names[0].encoding 
 => #<Encoding:ASCII-8BIT> 
 irb(main):006:0> m = /(?<gem>ルビー)/.match('ルビー') 
 => #<MatchData "ルビー" gem:"ルビー"> 
 irb(main):007:0> m.names 
 => ["gem"] 
 irb(main):008:0> m.names[0].encoding 
 => #<Encoding:ASCII-8BIT> 
 irb(main):009:0> m[m.names[0]] 
 => "ルビー" 
 ~~~ 

Back