String#each_grapheme_cluster and String#grapheme_clusters

added to enumerate grapheme clusters [Feature #13780]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59698 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
naruse 2017-08-31 06:35:28 +00:00
parent 54217d68b3
commit df49fc659e
3 changed files with 155 additions and 0 deletions

View file

@ -885,6 +885,46 @@ CODE
end
end
def test_each_grapheme_cluster
[
"\u{20 200d}",
"\u{600 600}",
"\u{600 20}",
"\u{261d 1F3FB}",
"\u{1f600}",
"\u{20 308}",
"\u{1F477 1F3FF 200D 2640 FE0F}",
"\u{1F468 200D 1F393}",
"\u{1F46F 200D 2642 FE0F}",
"\u{1f469 200d 2764 fe0f 200d 1f469}",
].each do |g|
assert_equal [g], g.each_grapheme_cluster.to_a
end
assert_equal ["\u000A", "\u0308"], "\u{a 308}".each_grapheme_cluster.to_a
assert_equal ["\u000D", "\u0308"], "\u{d 308}".each_grapheme_cluster.to_a
end
def test_grapheme_clusters
[
"\u{20 200d}",
"\u{600 600}",
"\u{600 20}",
"\u{261d 1F3FB}",
"\u{1f600}",
"\u{20 308}",
"\u{1F477 1F3FF 200D 2640 FE0F}",
"\u{1F468 200D 1F393}",
"\u{1F46F 200D 2642 FE0F}",
"\u{1f469 200d 2764 fe0f 200d 1f469}",
].each do |g|
assert_equal [g], g.grapheme_clusters
end
assert_equal ["\u000A", "\u0308"], "\u{a 308}".grapheme_clusters
assert_equal ["\u000D", "\u0308"], "\u{d 308}".grapheme_clusters
end
def test_each_line
save = $/
$/ = "\n"