1
0
mirror of https://github.com/danielstjules/Stringy.git synced 2025-08-17 10:40:44 +02:00

Merge pull request #25 from BastianHofmann/patch-1

DRY underscored and dasherize methods
This commit is contained in:
Daniel St. Jules
2014-03-05 19:24:34 -05:00

View File

@@ -262,17 +262,7 @@ class Stringy implements \Countable, \IteratorAggregate, \ArrayAccess
*/ */
public function dasherize() public function dasherize()
{ {
// Save current regex encoding so we can reset it after return $this->slug('-');
$regexEncoding = mb_regex_encoding();
mb_regex_encoding($this->encoding);
$str = mb_ereg_replace('\B([A-Z])', '-\1', trim($this->str));
$str = mb_ereg_replace('[-_\s]+', '-', $str);
$str = mb_strtolower($str, $this->encoding);
mb_regex_encoding($regexEncoding);
return self::create($str, $this->encoding);
} }
/** /**
@@ -284,13 +274,24 @@ class Stringy implements \Countable, \IteratorAggregate, \ArrayAccess
* @return Stringy Object with an underscored $str * @return Stringy Object with an underscored $str
*/ */
public function underscored() public function underscored()
{
return $this->slug('_');
}
/**
* Returns a lowercase and trimmed string separated by a suplied
* seperator.
*
* @return Stringy Object with a dasherized $str
*/
protected function slug($seperator)
{ {
// Save current regex encoding so we can reset it after // Save current regex encoding so we can reset it after
$regexEncoding = mb_regex_encoding(); $regexEncoding = mb_regex_encoding();
mb_regex_encoding($this->encoding); mb_regex_encoding($this->encoding);
$str = mb_ereg_replace('\B([A-Z])', '_\1', trim($this->str)); $str = mb_ereg_replace('\B([A-Z])', $seperator .'\1', trim($this->str));
$str = mb_ereg_replace('[-_\s]+', '_', $str); $str = mb_ereg_replace('[-_\s]+', $seperator, $str);
$str = mb_strtolower($str, $this->encoding); $str = mb_strtolower($str, $this->encoding);
mb_regex_encoding($regexEncoding); mb_regex_encoding($regexEncoding);