norse-blue/php-scalar-objects

View on GitHub
src/Extensions/String/StringTrimLeftExtension.php

Summary

Maintainability
A
2 hrs
Test Coverage
<?php

declare(strict_types=1);

namespace NorseBlue\ScalarObjects\Extensions\String;

use NorseBlue\ExtensibleObjects\Contracts\ExtensionMethod;
use NorseBlue\ScalarObjects\Types\StringType;

use function NorseBlue\ScalarObjects\Functions\string;

final class StringTrimLeftExtension extends StringType implements ExtensionMethod
{
    /**
     * @return callable(string|StringType $character_mask = " \t\n\r\0\x0B"): StringType
     */
    public function __invoke(): callable
    {
        /**
         * Strip whitespace (or other characters) from the beginning of a string.
         *
         * @param string|StringType $character_mask
         *
         * @see https://www.php.net/manual/en/function.ltrim.php
         */
        return function ($character_mask = " \t\n\r\0\x0B"): StringType {
            return string(ltrim($this->value, self::unwrap($character_mask)));
        };
    }
}