aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gleam_stdlib.mjs8
-rw-r--r--test/gleam/string_test.gleam12
2 files changed, 19 insertions, 1 deletions
diff --git a/src/gleam_stdlib.mjs b/src/gleam_stdlib.mjs
index cdbb91a..0a3aef2 100644
--- a/src/gleam_stdlib.mjs
+++ b/src/gleam_stdlib.mjs
@@ -94,8 +94,14 @@ export function string_length(string) {
}
function graphemes_iterator(string) {
+ let env_locale = () => {
+ if (typeof navigator.language !== "undefined") {
+ return navigator.language;
+ }
+ return Intl.DateTimeFormat().resolvedOptions().locale;
+ };
if (Intl && Intl.Segmenter) {
- return new Intl.Segmenter("en-gb").segment(string)[Symbol.iterator]();
+ return new Intl.Segmenter(env_locale).segment(string)[Symbol.iterator]();
}
}
diff --git a/test/gleam/string_test.gleam b/test/gleam/string_test.gleam
index fafea89..ca986e8 100644
--- a/test/gleam/string_test.gleam
+++ b/test/gleam/string_test.gleam
@@ -379,6 +379,18 @@ pub fn to_graphemes_test() {
|> string.to_graphemes
|> should.equal(["뎌", "쉐"])
+ "πŸ‘¨β€πŸ‘©β€πŸ‘¦β€πŸ‘¦"
+ |> string.to_graphemes()
+ |> should.equal(["πŸ‘¨β€πŸ‘©β€πŸ‘¦β€πŸ‘¦"])
+
+ "ごん゙に゙げば"
+ |> string.to_graphemes()
+ |> should.equal(["ご", "γ‚“γ‚™", "に゙", "げ", "ば"])
+
+ "γƒγ‚šγƒ’γ‚šγƒ•γ‚šγƒ˜γ‚šγƒ›γ‚š"
+ |> string.to_graphemes()
+ |> should.equal(["γƒγ‚š", "γƒ’γ‚š", "γƒ•γ‚š", "γƒ˜γ‚š", "γƒ›γ‚š"])
+
"ZΝ‘Ν«Μ“ΝͺΜ‚Ν«Μ½ΝΜ΄Μ™Μ€ΜžΝ‰ΝšΜ―ΜžΜ ΝAΜ΄Μ΅ΜœΜ°Ν”Ν«Ν—Ν’L̠ͨͧͩ͘GΜ΄Μ»ΝˆΝΝ”ΜΉΜ‘Ν—ΜŽΜ…Ν›ΜΗͺΜ΅ΜΉΜ»ΜΜ³Ν‚ΜŒΜŒΝ˜!Ν–Μ¬Μ°Μ™Μ—ΜΏΜ‹Ν₯Ν₯Μ‚Ν£ΜΜΜΝœΝž"
|> string.to_graphemes
|> should.equal([