diff --git a/src/FilterBy.php b/src/FilterBy.php index 9fba16a8..873a5630 100644 --- a/src/FilterBy.php +++ b/src/FilterBy.php @@ -4,8 +4,12 @@ class FilterBy { - public static function escapeString(string $value): string + public static function escape(string|int|float|bool $value): string { - return '`' . str_replace('`', '\\`', $value) . '`'; + return match (true) { + is_string($value) => '`' . str_replace('`', '\\`', $value) . '`', + is_bool($value) => $value ? 'true' : 'false', + default => (string) $value, + }; } } diff --git a/tests/Feature/FilterByTest.php b/tests/Feature/FilterByTest.php index 3a91603f..ca19e750 100644 --- a/tests/Feature/FilterByTest.php +++ b/tests/Feature/FilterByTest.php @@ -11,7 +11,7 @@ public function testEscapesSpecialCharactersByWrappingInBackticks(): void { $rawFilterValue = "The 17\" O'Conner && O`Series \n OR a || 1%2 book? (draft), [alpha]"; - $escapedFilterValue = FilterBy::escapeString($rawFilterValue); + $escapedFilterValue = FilterBy::escape($rawFilterValue); $this->assertSame( "`The 17\" O'Conner && O\\`Series \n OR a || 1%2 book? (draft), [alpha]`", @@ -21,8 +21,36 @@ public function testEscapesSpecialCharactersByWrappingInBackticks(): void public function testEscapesMultipleBackticksWithinAFilterString(): void { - $escapedFilterValue = FilterBy::escapeString('`left` and `right`'); + $escapedFilterValue = FilterBy::escape('`left` and `right`'); $this->assertSame('`\\`left\\` and \\`right\\``', $escapedFilterValue); } + + public function testEscapeBooleanTrue(): void + { + $escapedFilterValue = FilterBy::escape(true); + + $this->assertSame('true', $escapedFilterValue); + } + + public function testEscapeBooleanFalse(): void + { + $escapedFilterValue = FilterBy::escape(false); + + $this->assertSame('false', $escapedFilterValue); + } + + public function testEscapeFloat(): void + { + $escapedFilterValue = FilterBy::escape(1.12); + + $this->assertSame('1.12', $escapedFilterValue); + } + + public function testEscapeInt(): void + { + $escapedFilterValue = FilterBy::escape(1); + + $this->assertSame('1', $escapedFilterValue); + } }