mirror of
https://github.com/danielstjules/Stringy.git
synced 2025-08-08 06:16:32 +02:00
Added $charList and $type to trim function
Adding the option to trim the string with others characters, not only with the default characters provided by php. Also added the option to define the function which will be used to trim the string, if it's normal trim, left trim or right trim
This commit is contained in:
@@ -4,6 +4,13 @@ namespace Stringy;
|
|||||||
|
|
||||||
class Stringy implements \Countable, \IteratorAggregate, \ArrayAccess
|
class Stringy implements \Countable, \IteratorAggregate, \ArrayAccess
|
||||||
{
|
{
|
||||||
|
|
||||||
|
const TRIM_BOTH = 'trim';
|
||||||
|
|
||||||
|
const TRIM_LEFT = 'ltrim';
|
||||||
|
|
||||||
|
const TRIM_RIGHT = 'rtrim';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An instance's string.
|
* An instance's string.
|
||||||
*
|
*
|
||||||
@@ -1026,11 +1033,30 @@ class Stringy implements \Countable, \IteratorAggregate, \ArrayAccess
|
|||||||
/**
|
/**
|
||||||
* Returns the trimmed string. An alias for PHP's trim() function.
|
* Returns the trimmed string. An alias for PHP's trim() function.
|
||||||
*
|
*
|
||||||
|
* @param string $charList list with characters to be removed
|
||||||
|
* @param int $type which function will be used to trim the string, trim, ltrim or rtrim
|
||||||
* @return Stringy Object with a trimmed $str
|
* @return Stringy Object with a trimmed $str
|
||||||
|
* @throws \InvalidArgumentException
|
||||||
*/
|
*/
|
||||||
public function trim()
|
public function trim($charList = " \t\n\r\0\x0B", $type = self::TRIM_BOTH)
|
||||||
{
|
{
|
||||||
return static::create(trim($this->str), $this->encoding);
|
if (!is_string($charList)) {
|
||||||
|
throw new \InvalidArgumentException(
|
||||||
|
'Charset list must be a string'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!in_array($type, array(
|
||||||
|
self::TRIM_BOTH,
|
||||||
|
self::TRIM_LEFT,
|
||||||
|
self::TRIM_RIGHT,
|
||||||
|
))) {
|
||||||
|
throw new \InvalidArgumentException(
|
||||||
|
'Type of trim function must be trim (default), rtrim or ltrim, just as native php.'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return static::create($type($this->str, $charList), $this->encoding);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -590,7 +590,7 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function trimProvider()
|
public function trimProviderWithoutParams()
|
||||||
{
|
{
|
||||||
return array(
|
return array(
|
||||||
array('foo bar', ' foo bar '),
|
array('foo bar', ' foo bar '),
|
||||||
@@ -604,6 +604,23 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function trimProviderWithParams()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
array('foo bar', ' foo bar ', " \t\n\r\0\x0B", 'trim'),
|
||||||
|
array('foo bar', ' foo bar', " \t\n\r\0\x0B", 'trim'),
|
||||||
|
array('foo bar', 'foo bar ', " \t\n\r\0\x0B", 'trim'),
|
||||||
|
array('foo bar', "\n\t foo bar \n\t", " \t\n\r\0\x0B", 'trim'),
|
||||||
|
array('fòô bàř', ' fòô bàř ', " \t\n\r\0\x0B", 'trim'),
|
||||||
|
array('fòô bàř', ' fòô bàř', " \t\n\r\0\x0B", 'trim'),
|
||||||
|
array('fòô bàř', 'fòô bàř ', " \t\n\r\0\x0B", 'trim'),
|
||||||
|
array('fòô bàř', "\n\t fòô bàř \n\t", " \t\n\r\0\x0B", 'trim'),
|
||||||
|
array(' foo bar', ' foo bar ', " \t\n\r\0\x0B", 'rtrim'),
|
||||||
|
array('foo bar ', ' foo bar ', " \t\n\r\0\x0B", 'ltrim'),
|
||||||
|
array(' foo bar ', ' foo bar ', "\t\n\r\0\x0B", 'ltrim')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public function longestCommonPrefixProvider()
|
public function longestCommonPrefixProvider()
|
||||||
{
|
{
|
||||||
return array(
|
return array(
|
||||||
|
@@ -382,7 +382,7 @@ class StaticStringyTestCase extends CommonTest
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider trimProvider()
|
* @dataProvider trimProviderWithoutParams()
|
||||||
*/
|
*/
|
||||||
public function testTrim($expected, $str)
|
public function testTrim($expected, $str)
|
||||||
{
|
{
|
||||||
|
@@ -594,9 +594,9 @@ class StringyTestCase extends CommonTest
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider trimProvider()
|
* @dataProvider trimProviderWithoutParams()
|
||||||
*/
|
*/
|
||||||
public function testTrim($expected, $str)
|
public function testTrimWithoutParams($expected, $str)
|
||||||
{
|
{
|
||||||
$stringy = S::create($str);
|
$stringy = S::create($str);
|
||||||
$result = $stringy->trim();
|
$result = $stringy->trim();
|
||||||
@@ -605,6 +605,40 @@ class StringyTestCase extends CommonTest
|
|||||||
$this->assertEquals($str, $stringy);
|
$this->assertEquals($str, $stringy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider trimProviderWithParams()
|
||||||
|
*/
|
||||||
|
public function testTrimWithParams($expected, $str, $charList, $type)
|
||||||
|
{
|
||||||
|
$stringy = S::create($str);
|
||||||
|
$result = $stringy->trim($charList, $type);
|
||||||
|
$this->assertStringy($result);
|
||||||
|
$this->assertEquals($expected, $result);
|
||||||
|
$this->assertEquals($str, $stringy);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException InvalidArgumentException
|
||||||
|
*/
|
||||||
|
public function testTrimWithInvalidCharset()
|
||||||
|
{
|
||||||
|
$stringy = S::create('test');
|
||||||
|
$stringy->trim(array('test1', 'test2'), 'trim');
|
||||||
|
$this->fail('Expecting exception when the first argument passed is not a string');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException InvalidArgumentException
|
||||||
|
*/
|
||||||
|
public function testTrimWithInvalidType()
|
||||||
|
{
|
||||||
|
$stringy = S::create('test');
|
||||||
|
$stringy->trim(' test ', 'aa');
|
||||||
|
$stringy->trim('btest ', 'Trim');
|
||||||
|
$stringy->trim(' btest', 'RTrim');
|
||||||
|
$this->fail('Expecting exception when the first argument passed is not a string');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider longestCommonPrefixProvider()
|
* @dataProvider longestCommonPrefixProvider()
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user