From 686c763a1605dd7c5aa67770a5e78fedb5b26888 Mon Sep 17 00:00:00 2001 From: grpaiva Date: Thu, 15 Aug 2019 16:59:04 -0300 Subject: [PATCH] adds special characters compatibility --- src/Filters/Capitalize.php | 2 +- src/Filters/Lowercase.php | 2 +- src/Filters/Uppercase.php | 2 +- tests/Filters/CapitalizeTest.php | 9 +++++++++ tests/Filters/LowercaseTest.php | 15 +++++++++++++++ tests/Filters/UppercaseTest.php | 15 +++++++++++++++ 6 files changed, 42 insertions(+), 3 deletions(-) diff --git a/src/Filters/Capitalize.php b/src/Filters/Capitalize.php index 3407d3e..8fce5a7 100644 --- a/src/Filters/Capitalize.php +++ b/src/Filters/Capitalize.php @@ -14,6 +14,6 @@ class Capitalize implements Filter */ public function apply($value, $options = []) { - return is_string($value) ? ucwords(strtolower($value)) : $value; + return is_string($value) ? mb_convert_case(mb_strtolower($value, 'UTF-8'), MB_CASE_TITLE) : $value; } } diff --git a/src/Filters/Lowercase.php b/src/Filters/Lowercase.php index f577377..de4fbcd 100644 --- a/src/Filters/Lowercase.php +++ b/src/Filters/Lowercase.php @@ -14,6 +14,6 @@ class Lowercase implements Filter */ public function apply($value, $options = []) { - return is_string($value) ? strtolower($value) : $value; + return is_string($value) ? mb_strtolower($value, 'UTF-8') : $value; } } diff --git a/src/Filters/Uppercase.php b/src/Filters/Uppercase.php index 7bcdc6a..7499e54 100644 --- a/src/Filters/Uppercase.php +++ b/src/Filters/Uppercase.php @@ -14,6 +14,6 @@ class Uppercase implements Filter */ public function apply($value, $options = []) { - return is_string($value) ? strtoupper($value) : $value; + return is_string($value) ? mb_strtoupper($value) : $value; } } diff --git a/tests/Filters/CapitalizeTest.php b/tests/Filters/CapitalizeTest.php index 347ee06..8080444 100644 --- a/tests/Filters/CapitalizeTest.php +++ b/tests/Filters/CapitalizeTest.php @@ -24,4 +24,13 @@ public function it_capitalizes_strings() $result = $this->sanitize(['name' => ' jon snow 145'], ['name' => 'capitalize']); $this->assertEquals(' Jon Snow 145', $result['name']); } + + /** + * @test + */ + public function it_capitalizes_special_characters() + { + $result = $this->sanitize(['name' => 'Τάχιστη αλώπηξ'], ['name' => 'capitalize']); + $this->assertEquals('Τάχιστη Αλώπηξ', $result['name']); + } } diff --git a/tests/Filters/LowercaseTest.php b/tests/Filters/LowercaseTest.php index d1ea301..e09d5ac 100644 --- a/tests/Filters/LowercaseTest.php +++ b/tests/Filters/LowercaseTest.php @@ -30,4 +30,19 @@ public function it_lowercases_strings() $data = $this->sanitize($data, $rules); $this->assertEquals('hello everybody', $data['name']); } + + /** + * @test + */ + public function it_lowercases_special_characters_strings() + { + $data = [ + 'name' => 'Τάχιστη αλώπηξ', + ]; + $rules = [ + 'name' => 'lowercase', + ]; + $data = $this->sanitize($data, $rules); + $this->assertEquals('τάχιστη αλώπηξ', $data['name']); + } } diff --git a/tests/Filters/UppercaseTest.php b/tests/Filters/UppercaseTest.php index a78d198..f512493 100644 --- a/tests/Filters/UppercaseTest.php +++ b/tests/Filters/UppercaseTest.php @@ -30,4 +30,19 @@ public function it_uppercases_strings() $data = $this->sanitize($data, $rules); $this->assertEquals('HELLO EVERYBODY', $data['name']); } + + /** + * @test + */ + public function it_uppercases_special_characters_strings() + { + $data = [ + 'name' => 'Τάχιστη αλώπηξ', + ]; + $rules = [ + 'name' => 'uppercase', + ]; + $data = $this->sanitize($data, $rules); + $this->assertEquals('ΤΆΧΙΣΤΗ ΑΛΏΠΗΞ', $data['name']); + } }