Вход Регистрация
Файл: vendor/nesbot/carbon/src/Carbon/Unit.php
Строк: 140
<?php

declare(strict_types=1);

/**
 * This file is part of the Carbon package.
 *
 * (c) Brian Nesbitt <brian@nesbot.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Carbon;

enum Unitstring
{
    case 
Microsecond 'microsecond';
    case 
Millisecond 'millisecond';
    case 
Second 'second';
    case 
Minute 'minute';
    case 
Hour 'hour';
    case 
Day 'day';
    case 
Week 'week';
    case 
Month 'month';
    case 
Quarter 'quarter';
    case 
Year 'year';
    case 
Decade 'decade';
    case 
Century 'century';
    case 
Millennium 'millennium';

    public static function 
toName(self|string $unit): string
    
{
        return 
$unit instanceof self $unit->value $unit;
    }

    
/** @internal */
    
public static function toNameIfUnit(mixed $unit): mixed
    
{
        return 
$unit instanceof self $unit->value $unit;
    }

    public static function 
fromName(string $name, ?string $locale null): self
    
{
        if (
$locale !== null) {
            
$messages Translator::get($locale)->getMessages($locale) ?? [];

            if (
$messages !== []) {
                
$lowerName mb_strtolower($name);

                foreach (
self::cases() as $unit) {
                    foreach ([
'''_from_now''_ago''_after''_before'] as $suffix) {
                        
$message $messages[$unit->value.$suffix] ?? null;

                        if (
is_string($message)) {
                            
$words explode('|'mb_strtolower(preg_replace(
                                
'/[{[]].+?[}[]]/',
                                
'',
                                
str_replace(':count'''$message),
                            )));

                            foreach (
$words as $word) {
                                if (
trim($word) === $lowerName) {
                                    return 
$unit;
                                }
                            }
                        }
                    }
                }
            }
        }

        return 
self::from(CarbonImmutable::singularUnit($name));
    }

    public function 
singular(?string $locale null): string
    
{
        if (
$locale !== null) {
            return 
trim(Translator::get($locale)->trans($this->value, [
                
'%count%' => 1,
                
':count' => 1,
            ]), 
"1 nrtv");
        }

        return 
$this->value;
    }

    public function 
plural(?string $locale null): string
    
{
        if (
$locale !== null) {
            return 
trim(Translator::get($locale)->trans($this->value, [
                
'%count%' => 9,
                
':count' => 9,
            ]), 
"9 nrtv");
        }

        return 
CarbonImmutable::pluralUnit($this->value);
    }

    public function 
interval(int|float $value 1): CarbonInterval
    
{
        return 
CarbonInterval::fromString("$value $this->name");
    }

    public function 
locale(string $locale): CarbonInterval
    
{
        return 
$this->interval()->locale($locale);
    }

    public function 
toPeriod(...$params): CarbonPeriod
    
{
        return 
$this->interval()->toPeriod(...$params);
    }

    public function 
stepBy(mixed $intervalUnit|string|null $unit null): CarbonPeriod
    
{
        return 
$this->interval()->stepBy($interval$unit);
    }
}
Онлайн: 0
Реклама