発表の前半の内容は 【RubyKaigi発表予告】error_highlight: user-friendly error diagnostics - クックパッド開発者ブログ にあります。
後半はRuby 3.2 でerror_highligthのエスケープ処理で、\が増えなくなった話でした。
ledsun@MSI:~/error_highlight►ruby -v -e '"\\\\\\\\\\\\\\\\".gsuub("", "")' ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux] -e:1:in `<main>': undefined method `gsuub' for "\\\\\\\\\\\\\\\\":String (NoMethodError) "\\\\\\\\\\\\\\\\".gsuub("", "") ^^^^^^ Did you mean? gsub gsub!
Ruby3.1で\の数が増えて、^^^^^^
の位置がズレています。
-e
で渡すとエスケープしてる分 \ が増えているので、わかりにくいですね。
ledsun@MSI:~/error_highlight►ruby -v -e '"\\\\\\\\\\\\\\\\".gsuub("", "")' ruby 3.2.0preview2 (2022-09-09 master 35cfc9a3bb) [x86_64-linux] -e:1:in `<main>': undefined method `gsuub' for "\\\\\\\\":String (NoMethodError) "\\\\\\\\".gsuub("", "") ^^^^^^ Did you mean? gsub gsub!
Ruby 3.2では直っています。
このRuby側のエスケープ処理は、2003年のとある記事に基づいているそうです。 記事の内容的にはRubyではなく、ターミナル側で対策した方が良さそうな内容だったそうです。 そこで主要なターミナルをしらべて対応済みなので、Rubyからは該当する処理を消したそうです。 このときターミナルのソースコードから、件の記事への言及を発見したと言われてました。 ソースコードまで確認するの、さすがだな、すごいな、と思いました。