squirrelphp/strings

View on GitHub
src/Filter/UppercaseWordsFirstCharacterFilter.php

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
<?php

namespace Squirrel\Strings\Filter;

use Squirrel\Strings\Common\RegexExceptionTrait;
use Squirrel\Strings\StringFilterInterface;

class UppercaseWordsFirstCharacterFilter implements StringFilterInterface
{
    use RegexExceptionTrait;

    public function filter(string $string): string
    {
        $string = \preg_replace_callback('/\b(\w)/u', function (array $matches): string {
            return \mb_strtoupper($matches[1], 'UTF-8');
        }, $string);

        // @codeCoverageIgnoreStart
        if ($string === null) {
            throw $this->generateRegexException();
        }
        // @codeCoverageIgnoreEnd

        return $string;
    }
}