| 
<?php
 declare(strict_types=1);
 
 namespace NorseBlue\ScalarObjects;
 
 /**
 * Merge the path segments to the base path.
 *
 * @param string|array<string> $segments
 *
 * @codeCoverageIgnore
 */
 function path_merge(
 string $base,
 string|array $segments,
 string $separator = DIRECTORY_SEPARATOR,
 bool $trailing_separator = false
 ): string {
 $path = rtrim($base, $separator);
 
 if (! is_array($segments)) {
 $segments = [$segments];
 }
 
 foreach ($segments as $segment) {
 $path .= $separator . $segment;
 }
 
 $path = rtrim($path, $separator);
 
 return $path . ($trailing_separator ? $separator : '');
 }
 
 |