diff --git a/src/Config/words.php b/src/Config/profanities/en.php similarity index 100% rename from src/Config/words.php rename to src/Config/profanities/en.php diff --git a/src/Config/profanities/it.php b/src/Config/profanities/it.php new file mode 100644 index 0000000..1242a9d --- /dev/null +++ b/src/Config/profanities/it.php @@ -0,0 +1,20 @@ +extend('toHaveNoProfanity', fn (array $excluding = [], array $including = []): ArchExpectation => Targeted::make( $this, function (ObjectDescription $object) use (&$foundWords, $excluding, $including): bool { - $words = include __DIR__.'/../Config/words.php'; + + $words = []; + $profanitiesDir = __DIR__.'/../Config/profanities'; + + if (($profanitiesFiles = scandir($profanitiesDir)) === false) { + return true; + } + + $profanitiesFiles = array_diff($profanitiesFiles, ['.', '..']); + foreach ($profanitiesFiles as $profanitiesFile) { + $words = array_merge( + $words, + include "$profanitiesDir/$profanitiesFile" + ); + } + $toleratedWords = include __DIR__.'/../Config/tolerated.php'; $words = array_merge($words, $including); @@ -29,6 +44,6 @@ function (ObjectDescription $object) use (&$foundWords, $excluding, $including): }, 'to not use profanity', FileLineFinder::where(function (string $line) use (&$foundWords): bool { - return str_contains(strtolower($line), strtolower(array_values($foundWords ?? [])[0])); + return str_contains(strtolower($line), strtolower((string) array_values($foundWords ?? [])[0])); }) ));