mirror of
https://github.com/wiosna-dev/common-library.git
synced 2026-03-12 09:31:51 +01:00
Add Regex::clearBeginningSlash() and Regex::clearEndingSlash() methods (that remove slash from the beginning and the end of given string)
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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}
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user