From: Yui NARUSE Date: 2011-12-29T02:44:03+09:00 Subject: [ruby-dev:45058] [ruby-trunk - Feature #5820] Merge Onigmo to Ruby 2.0 Issue #5820 has been updated by Yui NARUSE. = 現状の非互換について Rubyへの取り込み方: cd Onigmo cp reg{comp,enc,error,exec,parse,syntax}.c reg{enc,int,parse}.h ~/ruby cp oniguruma.h ~/ruby/include/ruby/ Onigmo: edf9df1cefc28472085a857116153529253ffab5 (tmp/ruby-2.0.x) Ruby: r34150 > 1) Failure: > test_parse_utf8(TestDateParse) > [/home/naruse/ruby/test/date/test_date_parse.rb:651]: > <"日本"> expected but was > . 原因: 解析に正規表現を用いており、 [:alpha:] が ASCII にしかマッチしない問題を踏んでいる。 > 2) Failure: > test_iso_8859_1(TestISO8859) [(eval):7]: > Expected /^SS$/i to match "\xDF". > > > 3) Failure: > > test_iso_8859_10(TestISO8859) [(eval):7]: > > Expected /^SS$/i to match "\xDF". > > 4) Failure: > test_iso_8859_13(TestISO8859) [(eval):7]: > Expected /^SS$/i to match "\xDF". > > 5) Failure: > test_iso_8859_14(TestISO8859) [(eval):7]: > Expected /^SS$/i to match "\xDF". > > 6) Failure: > test_iso_8859_15(TestISO8859) [(eval):7]: > Expected /^SS$/i to match "\xDF". > > 7) Failure: > test_iso_8859_16(TestISO8859) [(eval):7]: > Expected /^SS$/i to match "\xDF". > > 8) Failure: > test_iso_8859_2(TestISO8859) [(eval):7]: > Expected /^SS$/i to match "\xDF". > > 9) Failure: > test_iso_8859_3(TestISO8859) [(eval):5]: > Expected /^SS$/i to match "\xDF". > > 10) Failure: > test_iso_8859_4(TestISO8859) [(eval):7]: > Expected /^SS$/i to match "\xDF". > > 11) Failure: > test_iso_8859_9(TestISO8859) [(eval):5]: > Expected /^SS$/i to match "\xDF". 未調査 大文字小文字テーブル対応が壊れた? > 12) Failure: > test_regexp_named_class(TestM17N) [/home/naruse/ruby/test/ruby/test_m17n.rb:543]: > Expected /[[:space:]]/ to match " ". > > 13) Failure: > test_posix_bracket(TestRegexp) [/home/naruse/ruby/test/ruby/test_regexp.rb:716]: > Expected /\A[[:digit:]]+\z/ to match "0123456789". POSIX 文字クラスが ASCII の範囲なため。 > 14) Failure: > test_unicode(TestRegexp) [/home/naruse/ruby/test/ruby/test_regexp.rb:792]: > Expected /^\u0149$/i to match "ʼn". 2)-11) と同じ問題? ---------------------------------------- Feature #5820: Merge Onigmo to Ruby 2.0 https://bugs.ruby-lang.org/issues/5820 Author: Yui NARUSE Status: Assigned Priority: Normal Assignee: Yui NARUSE Category: M17N Target version: 2.0.0 Ruby 1.9 では正規表現エンジンや M17N の基盤として Oniguruma を用いています。 これを 2.0 では Oniguruma の改造版である、k-takata さんの Onigmo に置き換えようという話です。 https://github.com/k-takata/Onigmo/tree/tmp/ruby-2.0.x この取り込みによる影響は以下の通りです。 * 100%互換 (既存のテストが全て無修正で通る) * いくつかの新機能 [ruby-dev:44410] * 正規表現   * \K, \R, \X, (?(cond)yes|no), \g<0>, \g<+n>, (?au)   * Perl 5.10互換の名前参照(←Rubyには不要でしょう。) * Shift_JIS, EUC-JPで、全角アルファベットなどの大文字小文字同一視検索に対応。 * Shift_JIS, EUC-JPで、\p{Han}, \p{Latin}, \p{Greek}, \p{Cyrillic} に対応。 * 最適化 * 暗黙のアンカーによる最適化を実装。 * http://redmine.ruby-lang.org/issues/3568 で無効化された最適化を再度有効化。 現状は POSIX 文字クラスに非互換があり、それが解決されればマージ可能と認識しています。 -- http://redmine.ruby-lang.org