[String] add $lastGlue argument to join() methods
This commit is contained in:
parent
bb392bcbbe
commit
714d6290df
@ -387,7 +387,7 @@ abstract class AbstractString implements \JsonSerializable
|
|||||||
/**
|
/**
|
||||||
* @return static
|
* @return static
|
||||||
*/
|
*/
|
||||||
abstract public function join(array $strings): self;
|
abstract public function join(array $strings, string $lastGlue = null): self;
|
||||||
|
|
||||||
public function jsonSerialize(): string
|
public function jsonSerialize(): string
|
||||||
{
|
{
|
||||||
|
@ -180,10 +180,12 @@ abstract class AbstractUnicodeString extends AbstractString
|
|||||||
return $str;
|
return $str;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function join(array $strings): parent
|
public function join(array $strings, string $lastGlue = null): parent
|
||||||
{
|
{
|
||||||
$str = clone $this;
|
$str = clone $this;
|
||||||
$str->string = implode($this->string, $strings);
|
|
||||||
|
$tail = null !== $lastGlue && 1 < \count($strings) ? $lastGlue.array_pop($strings) : '';
|
||||||
|
$str->string = implode($this->string, $strings).$tail;
|
||||||
|
|
||||||
if (!preg_match('//u', $str->string)) {
|
if (!preg_match('//u', $str->string)) {
|
||||||
throw new InvalidArgumentException('Invalid UTF-8 string.');
|
throw new InvalidArgumentException('Invalid UTF-8 string.');
|
||||||
|
@ -168,10 +168,12 @@ class ByteString extends AbstractString
|
|||||||
return '' === $this->string || preg_match('//u', $this->string);
|
return '' === $this->string || preg_match('//u', $this->string);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function join(array $strings): parent
|
public function join(array $strings, string $lastGlue = null): parent
|
||||||
{
|
{
|
||||||
$str = clone $this;
|
$str = clone $this;
|
||||||
$str->string = implode($str->string, $strings);
|
|
||||||
|
$tail = null !== $lastGlue && 1 < \count($strings) ? $lastGlue.array_pop($strings) : '';
|
||||||
|
$str->string = implode($this->string, $strings).$tail;
|
||||||
|
|
||||||
return $str;
|
return $str;
|
||||||
}
|
}
|
||||||
|
@ -1160,6 +1160,11 @@ abstract class AbstractAsciiTestCase extends TestCase
|
|||||||
$this->assertEquals(static::createFromString($expected), $instance);
|
$this->assertEquals(static::createFromString($expected), $instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testJoinWithLastGlue()
|
||||||
|
{
|
||||||
|
$this->assertSame('foo, bar and baz', (string) static::createFromString(', ')->join(['foo', 'bar', 'baz'], ' and '));
|
||||||
|
}
|
||||||
|
|
||||||
public static function provideJoin()
|
public static function provideJoin()
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
|
@ -178,9 +178,9 @@ class UnicodeString extends AbstractUnicodeString
|
|||||||
return false === $i ? null : $i;
|
return false === $i ? null : $i;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function join(array $strings): AbstractString
|
public function join(array $strings, string $lastGlue = null): AbstractString
|
||||||
{
|
{
|
||||||
$str = parent::join($strings);
|
$str = parent::join($strings, $lastGlue);
|
||||||
normalizer_is_normalized($str->string) ?: $str->string = normalizer_normalize($str->string);
|
normalizer_is_normalized($str->string) ?: $str->string = normalizer_normalize($str->string);
|
||||||
|
|
||||||
return $str;
|
return $str;
|
||||||
|
Reference in New Issue
Block a user