Add Regex::clearBeginningSlash() and Regex::clearEndingSlash() methods (that remove slash from the beginning and the end of given string)

This commit is contained in:
Meritoo
2019-08-27 20:26:31 +02:00
parent 0afcf9843e
commit e704dacabd
3 changed files with 294 additions and 0 deletions

View File

@@ -34,6 +34,56 @@ File: `src/Utilities/Regex.php`
- value: `"Lorem ipsum. Dolor sit 12.34 amet."` - value: `"Lorem ipsum. Dolor sit 12.34 amet."`
- result: `"lorem-ipsum-dolor-sit-1234-amet"` - result: `"lorem-ipsum-dolor-sit-1234-amet"`
### clearBeginningSlash(string): string
> Clears, removes slash from the beginning of given string
##### Arguments
- `string $string` - String that may contains slash as the 1st character
##### Examples
1)
- string: `"lorem ipsum"`
- result: `"lorem ipsum"`
2)
- string: `"/lorem ipsum"`
- result: `"lorem ipsum"`
3)
- string: `"/ lorem 123 ipsum"`
- result: `" lorem 123 ipsum"`
### clearEndingSlash(string): string
> Clears, removes slash from the end of given string
##### Arguments
- `string $string` - String that may contains slash as the last character
##### Examples
1)
- string: `"lorem ipsum"`
- result: `"lorem ipsum"`
2)
- string: `"lorem ipsum/"`
- result: `"lorem ipsum"`
3)
- string: `"lorem 123 ipsum /"`
- result: `"lorem 123 ipsum "`
# More # More
1. [Base test case (with common methods and data providers)](../Base-test-case.md) 1. [Base test case (with common methods and data providers)](../Base-test-case.md)

View File

@@ -40,6 +40,8 @@ class Regex
'color' => '/^[a-f0-9]{6}$/i', 'color' => '/^[a-f0-9]{6}$/i',
'bundleName' => '/^(([A-Z]{1}[a-z0-9]+)((?2))*)(Bundle)$/', 'bundleName' => '/^(([A-Z]{1}[a-z0-9]+)((?2))*)(Bundle)$/',
'binaryValue' => '/[^\x20-\x7E\t\r\n]/', 'binaryValue' => '/[^\x20-\x7E\t\r\n]/',
'beginningSlash' => '|^\/|',
'endingSlash' => '|\/$|',
/* /*
* Matches: * Matches:
@@ -999,4 +1001,18 @@ class Regex
return preg_replace('/[-\s]+/', '-', $result); return preg_replace('/[-\s]+/', '-', $result);
} }
public static function clearBeginningSlash(string $string): string
{
$pattern = static::$patterns['beginningSlash'];
return preg_replace($pattern, '', $string);
}
public static function clearEndingSlash(string $string): string
{
$pattern = static::$patterns['endingSlash'];
return preg_replace($pattern, '', $string);
}
} }

View File

@@ -649,6 +649,28 @@ class RegexTest extends BaseTestCase
self::assertSame($expected, Regex::createSlug($value)); self::assertSame($expected, Regex::createSlug($value));
} }
/**
* @param string $string
* @param string $expected
*
* @dataProvider provideStringToClearBeginningSlash
*/
public function testClearBeginningSlash(string $string, string $expected): void
{
static::assertSame($expected, Regex::clearBeginningSlash($string));
}
/**
* @param string $string
* @param string $expected
*
* @dataProvider provideStringToClearEndingSlash
*/
public function testClearEndingSlash(string $string, string $expected): void
{
static::assertSame($expected, Regex::clearEndingSlash($string));
}
/** /**
* Provides name of bundle and information if it's valid name * Provides name of bundle and information if it's valid name
* *
@@ -1983,6 +2005,212 @@ class RegexTest extends BaseTestCase
]; ];
} }
public function provideStringToClearBeginningSlash(): ?Generator
{
yield[
'',
'',
];
yield[
'/',
'',
];
yield[
'\\',
'\\',
];
yield[
'//',
'/',
];
yield[
'lorem ipsum',
'lorem ipsum',
];
yield[
'1234',
'1234',
];
yield[
'lorem/ipsum',
'lorem/ipsum',
];
yield[
'lorem / ipsum',
'lorem / ipsum',
];
yield[
'lorem\ipsum',
'lorem\ipsum',
];
yield[
'lorem \ ipsum',
'lorem \ ipsum',
];
yield[
'\lorem ipsum',
'\lorem ipsum',
];
yield[
'\ lorem ipsum',
'\ lorem ipsum',
];
yield[
'lorem ipsum/',
'lorem ipsum/',
];
yield[
'lorem ipsum /',
'lorem ipsum /',
];
yield[
'/lorem ipsum',
'lorem ipsum',
];
yield[
'/ lorem ipsum',
' lorem ipsum',
];
yield[
'/123 456',
'123 456',
];
yield[
'/ 123 456',
' 123 456',
];
yield[
'/lorem 123 ipsum 456',
'lorem 123 ipsum 456',
];
yield[
'/ lorem 123 ipsum 456',
' lorem 123 ipsum 456',
];
}
public function provideStringToClearEndingSlash(): ?Generator
{
yield[
'',
'',
];
yield[
'/',
'',
];
yield[
'\\',
'\\',
];
yield[
'//',
'/',
];
yield[
'lorem ipsum',
'lorem ipsum',
];
yield[
'1234',
'1234',
];
yield[
'lorem/ipsum',
'lorem/ipsum',
];
yield[
'lorem / ipsum',
'lorem / ipsum',
];
yield[
'lorem\ipsum',
'lorem\ipsum',
];
yield[
'lorem \ ipsum',
'lorem \ ipsum',
];
yield[
'\lorem ipsum',
'\lorem ipsum',
];
yield[
'\ lorem ipsum',
'\ lorem ipsum',
];
yield[
'/lorem ipsum',
'/lorem ipsum',
];
yield[
'/ lorem ipsum',
'/ lorem ipsum',
];
yield[
'lorem ipsum/',
'lorem ipsum',
];
yield[
'lorem ipsum /',
'lorem ipsum ',
];
yield[
'123 456/',
'123 456',
];
yield[
'123 456 /',
'123 456 ',
];
yield[
'lorem 123 ipsum 456/',
'lorem 123 ipsum 456',
];
yield[
'lorem 123 ipsum 456 /',
'lorem 123 ipsum 456 ',
];
}
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */