diff options
author | Martin Dürst <[email protected]> | 2021-07-27 18:12:24 +0900 |
---|---|---|
committer | Martin Dürst <[email protected]> | 2021-07-27 18:14:20 +0900 |
commit | 26b1e6fca8f2c9e02e7b5d26fb35a16f3e7a66a3 (patch) | |
tree | f09314903b6f91447e7232b7c6ac6940b311bbe1 | |
parent | c3d31377b36b905779683ef22e4c27d25ddaa037 (diff) |
Deal with Unicode ranges in the file emoji-sequences.txt
Detect Unicode ranges and loop over them.
This fixes issue #18028.
l--------- | bin/goruby | 1 | ||||
l--------- | bin/ruby | 1 | ||||
l--------- | lib/libruby.so.3.1.0 | 1 | ||||
-rw-r--r-- | test/ruby/enc/test_emoji_breaks.rb | 11 |
4 files changed, 13 insertions, 1 deletions
diff --git a/bin/goruby b/bin/goruby new file mode 120000 index 0000000000..ac297319a0 --- /dev/null +++ b/bin/goruby @@ -0,0 +1 @@ +../goruby
\ No newline at end of file diff --git a/bin/ruby b/bin/ruby new file mode 120000 index 0000000000..69cf0817c5 --- /dev/null +++ b/bin/ruby @@ -0,0 +1 @@ +../ruby
\ No newline at end of file diff --git a/lib/libruby.so.3.1.0 b/lib/libruby.so.3.1.0 new file mode 120000 index 0000000000..db22f09057 --- /dev/null +++ b/lib/libruby.so.3.1.0 @@ -0,0 +1 @@ +../libruby.so.3.1.0
\ No newline at end of file diff --git a/test/ruby/enc/test_emoji_breaks.rb b/test/ruby/enc/test_emoji_breaks.rb index e765b10233..1d58e43ffa 100644 --- a/test/ruby/enc/test_emoji_breaks.rb +++ b/test/ruby/enc/test_emoji_breaks.rb @@ -84,7 +84,16 @@ TestEmojiBreaks.data_files_available? and class TestEmojiBreaks raise "File Name Mismatch: line: #{line}, expected filename: #{file.basename}.txt" if $.==1 and not line=="# #{file.basename}.txt" version_mismatch = false if line =~ /^# Version: #{file.version}/ next if /\A(#|\z)/.match? line - file_tests << BreakTest.new(file.basename, $., *line.split('#')) rescue 'whatever' + if line =~ /^(\h{4,6})\.\.(\h{4,6}) *(;.+)/ # deal with Unicode ranges in emoji-sequences.txt (Bug #18028) + range_start = $1.to_i(16) + range_end = $2.to_i(16) + rest = $3 + (range_start..range_end).each do |code_point| + file_tests << BreakTest.new(file.basename, $., *(code_point.to_s(16)+rest).split('#')) rescue 'whatever' + end + else + file_tests << BreakTest.new(file.basename, $., *line.split('#')) rescue 'whatever' + end end raise "File Version Mismatch: file: #{file.fullname}, version: #{file.version}" if version_mismatch tests += file_tests |