diff --git a/src/String/Extra.elm b/src/String/Extra.elm index 6f5a9ec..c83768e 100644 --- a/src/String/Extra.elm +++ b/src/String/Extra.elm @@ -121,11 +121,11 @@ toTitleCase : String -> String toTitleCase ws = let uppercaseMatch = - Regex.replace (regexFromString "\\w+") (.match >> toSentenceCase) + Regex.replace (regexFromString "\\S+") (.match >> toSentenceCase) in ws |> Regex.replace - (regexFromString "^([a-z])|\\s+([a-z])") + (regexFromString "^(.)|\\s+(.)") (.match >> uppercaseMatch) diff --git a/tests/Tests.elm b/tests/Tests.elm index 98fd6c1..12c0f47 100644 --- a/tests/Tests.elm +++ b/tests/Tests.elm @@ -114,6 +114,19 @@ toTitleCaseTest = |> String.length in Expect.equal expected result + , test "Works with accented characters" <| + \_ -> + Expect.equal "Álbum De Fotos" (toTitleCase "álbum de fotos") + , test "works with ñ" <| + \() -> + Expect.equal "El Niño" (toTitleCase "el Niño") + , test "works with French accents" <| + \() -> + Expect.equal "École De Paris" (toTitleCase "école de paris") + , test "works with fully accented phrase" <| + \() -> + Expect.equal "Ángel Éxtasis Ícono Ópera Único" + (toTitleCase "ángel éxtasis ícono ópera único") ]