Skip to content

Commit d88e2c9

Browse files
Added 'String::with[out]LeadingSlash'
1 parent 5186954 commit d88e2c9

File tree

2 files changed

+43
-0
lines changed

2 files changed

+43
-0
lines changed

src/Util/String.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,28 @@ public static function withoutTrailingSlash($string)
184184
return strlen($string) > 1 && substr($string, -1) === '/' ? substr($string, 0, -1) : $string;
185185
}
186186

187+
/**
188+
* Adds leading slash to a string/path if not already there.
189+
*
190+
* @param string $string
191+
* @return string
192+
*/
193+
public static function withLeadingSlash($string)
194+
{
195+
return (substr($string, 0, 1) !== '/' ? '/' : '') . $string;
196+
}
197+
198+
/**
199+
* Removes the leading slash from a string/path.
200+
*
201+
* @param string $string
202+
* @return string
203+
*/
204+
public static function withoutLeadingSlash($string)
205+
{
206+
return substr($string, 0, 1) === '/' ? substr($string, 1) : $string;
207+
}
208+
187209
/**
188210
* Appends a plural "s" or "'s".
189211
*

tests/phpbu/Util/StringTest.php

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,27 @@ public function testWithoutTrailingSlash()
208208
$this->assertEquals('/', String::withoutTrailingSlash('/'), '/ should be stay /');
209209
}
210210

211+
/**
212+
* Test with trailing slash.
213+
*/
214+
public function testWithLeadingSlash()
215+
{
216+
$this->assertEquals('/foo', String::withLeadingSlash('foo'), 'should be /foo');
217+
$this->assertEquals('/foo/bar', String::withLeadingSlash('foo/bar'), 'should be /foo/bar');
218+
$this->assertEquals('/baz', String::withLeadingSlash('/baz'), 'should be baz/');
219+
}
220+
221+
/**
222+
* Test without trailing slash.
223+
*/
224+
public function testWithoutLeadingSlash()
225+
{
226+
$this->assertEquals('foo', String::withoutLeadingSlash('/foo'), 'should be foo');
227+
$this->assertEquals('foo/bar', String::withoutLeadingSlash('/foo/bar'), 'should be foo/bar');
228+
$this->assertEquals('baz', String::withoutLeadingSlash('baz'), 'should be baz');
229+
$this->assertEquals('', String::withoutLeadingSlash('/'), 'slash should be removed');
230+
}
231+
211232
/**
212233
* Tests String::appendPluralS
213234
*/

0 commit comments

Comments
 (0)