Вход Регистрация
Файл: vendor/vlucas/phpdotenv/src/Parser/Parser.php
Строк: 93
<?php

declare(strict_types=1);

namespace 
DotenvParser;

use 
DotenvExceptionInvalidFileException;
use 
DotenvUtilRegex;
use 
GrahamCampbellResultTypeResult;
use 
GrahamCampbellResultTypeSuccess;

final class 
Parser implements ParserInterface
{
    
/**
     * Parse content into an entry array.
     *
     * @param string $content
     *
     * @throws DotenvExceptionInvalidFileException
     *
     * @return DotenvParserEntry[]
     */
    
public function parse(string $content)
    {
        return 
Regex::split("/(rn|n|r)/"$content)->mapError(static function () {
            return 
'Could not split into separate lines.';
        })->
flatMap(static function (array $lines) {
            return 
self::process(Lines::process($lines));
        })->
mapError(static function (string $error) {
            throw new 
InvalidFileException(sprintf('Failed to parse dotenv file. %s'$error));
        })->
success()->get();
    }

    
/**
     * Convert the raw entries into proper entries.
     *
     * @param string[] $entries
     *
     * @return GrahamCampbellResultTypeResult<DotenvParserEntry[],string>
     */
    
private static function process(array $entries)
    {
        
/** @var GrahamCampbellResultTypeResult<DotenvParserEntry[],string> */
        
return array_reduce($entries, static function (Result $resultstring $raw) {
            return 
$result->flatMap(static function (array $entries) use ($raw) {
                return 
EntryParser::parse($raw)->map(static function (Entry $entry) use ($entries) {
                    
/** @var DotenvParserEntry[] */
                    
return array_merge($entries, [$entry]);
                });
            });
        }, 
Success::create([]));
    }
}
Онлайн: 1
Реклама