1
0
mirror of https://github.com/danielstjules/Stringy.git synced 2025-09-01 09:03:03 +02:00

38 Commits
1.1.0 ... 1.3.0

Author SHA1 Message Date
Daniel St. Jules
9f930262af Update changelog for 1.3.0 2013-12-16 21:04:30 -05:00
Daniel St. Jules
c230885a13 Require objects to have a __toString method, update readme 2013-12-15 01:08:23 -05:00
Daniel St. Jules
1f25d0c793 Merge Pull Request #18 2013-12-15 00:15:34 -05:00
Daniel St. Jules
0e70d72352 Merge pull request #16 from ivank/patch-2
Support Bulgarian in toAscii
2013-12-13 06:32:34 -08:00
Ivan Kerin
d54628e6ae Support Bulgarian in toAscii
The “proper” bulgarian translitaration should encode ь to y [1],
However, since its not really that important to understand the actual
word, very rearly used and breaks compatibility with Russian, it might
be best to just leave it be, since Russian is a much larger torget.

[1] http://en.wikipedia.org/wiki/Romanization_of_Bulgarian
2013-12-13 11:05:23 +00:00
gotterdemarung
7335ee5c88 fixed T_OBJECT_OPERATOR issue in PHP 5.3 2013-12-10 23:10:44 +02:00
gotterdemarung
5e01d895db titleize refactoring to avoid visibility problems in PHP 5.3 2013-12-10 22:59:10 +02:00
gotterdemarung
3458fd79fd Stringy->$str became private to ensure its sting content and guarantee zero-exception __toString() execution 2013-12-10 22:34:19 +02:00
gotterdemarung
6e5e5e055f primitives check in constructor & toString 2013-12-10 22:19:42 +02:00
gotterdemarung
88d5973701 Implicit cast argument to string in constructor 2013-12-10 22:15:58 +02:00
gotterdemarung
75404a0338 Stringy must correctly handle non-string arguments and implicitly cast to string to avoid problems in __toString() method 2013-12-10 22:15:28 +02:00
Daniel St. Jules
bc96cdad0c Merge pull request #17 from floriansemm/master
fix typo in pad function call
2013-12-09 20:55:26 -08:00
Florian Semm
6014ff52df fix typo in pad function call 2013-12-09 15:15:45 +01:00
Daniel St. Jules
6ba29637b2 Updated changelog for 1.2.2 2013-12-04 23:36:17 -05:00
Daniel St. Jules
2ada00ff62 Add logo 2013-12-01 15:43:03 -05:00
Daniel St. Jules
2a197244a5 Update readme and comments for new slugify param 2013-11-27 01:14:09 -05:00
Daniel St. Jules
8b1a91fe0c Merge pull request #15 from glynnforrest/slug
Adding optional $replacement parameter to slugify.
2013-11-26 22:03:02 -08:00
Glynn Forrest
906f217dc1 Adding optional $replacement parameter to slugify. 2013-11-26 14:11:41 +00:00
Daniel St. Jules
d4baab7583 Merge pull request #14 from sergebezborodov/master
Use late static bindings in Stringy::create
2013-11-05 20:00:18 -08:00
Serge Bezborodov
0c8f0e9083 changes in create function 2013-11-01 09:55:38 +02:00
Daniel St. Jules
2155447ce8 Updated changelog for 1.2.1 2013-10-11 01:19:53 -04:00
Daniel St. Jules
77efce3a38 Added homepage to composer.json 2013-10-11 01:17:17 -04:00
Daniel St. Jules
f6085ed2cb Cleanup tests a bit
Getting over my irrational fear of multi-line return statements
2013-09-27 20:13:04 -04:00
Daniel St. Jules
fa36291254 Updated changelog for 1.2.0 2013-09-15 00:17:51 -04:00
Daniel St. Jules
88145e83e8 Update replace() to correctly apply preg_quote to pattern and replacement 2013-09-14 23:59:46 -04:00
Daniel St. Jules
9bd5a9c0c8 Added regexReplace() 2013-09-14 23:45:18 -04:00
Daniel St. Jules
41ea0277b2 Added $caseSensitive to count() 2013-09-14 14:58:11 -04:00
Daniel St. Jules
d862f9c24c Fix toUpperCase and toLowerCase not being static in StaticStringy 2013-09-14 11:31:51 -04:00
Daniel St. Jules
61cd5f5f4d Added toLowerCase() and toUpperCase() 2013-09-14 11:22:52 -04:00
Daniel St. Jules
ea20aebc91 Added $caseSensitive to contains() 2013-09-14 01:32:52 -04:00
Daniel St. Jules
49e1c5ad2a Merge pull request #13 from pborreli/typos
Closes Issue 13: Fixed typo in PHPDoc
2013-09-06 05:18:22 -07:00
Pascal Borreli
90913d39bc Fixed typos/PHPDoc 2013-09-06 08:44:42 +01:00
Daniel St. Jules
02da00c433 Merge branch 'pr/12' 2013-09-05 22:41:19 -04:00
Borales
07f23d6165 Adding cyrillic letters 2013-09-04 18:23:50 +03:00
Daniel St. Jules
d27683b570 Merge pull request #10 from ChristianGaertner/patch-2
Issue 10: Fixed Exception in pad() and added test coverage
2013-09-04 05:38:41 -07:00
ChristianGaertner
bc175f0e12 Added test to cover 100% + fixed fatal error 2013-09-04 08:02:56 +02:00
Daniel St. Jules
a6964e4561 Merge pull request #9 from ChristianGaertner/patch-1
Wrapped some things into code blocks
2013-09-03 14:13:28 -07:00
ChristianGaertner
5fff1a4124 Added codeblocks 2013-09-03 22:51:50 +02:00
8 changed files with 869 additions and 532 deletions

View File

@@ -1,3 +1,32 @@
### 1.3.0 (2013-12-16)
* Additional Bulgarian support for toAscii
* str property made private
* Constructor casts first argument to string
* Constructor throws an InvalidArgumentException when given an array
* Constructor throws an InvalidArgumentException when given an object without
a __toString method
### 1.2.2 (2013-12-04)
* Updated create function to use late static binding
* Added optional $replacement param to slugify
### 1.2.1 (2013-10-11)
* Cleaned up tests
* Added homepage to composer.json
### 1.2.0 (2013-09-15)
* Fixed pad's use of InvalidArgumentException
* Fixed replace(). It now correctly treats regex special chars as normal chars
* Added additional Cyrillic letters to toAscii
* Added $caseSensitive to contains() and count()
* Added toLowerCase()
* Added toUpperCase()
* Added regexReplace()
### 1.1.0 (2013-08-31)
* Fix for collapseWhitespace()

114
README.md
View File

@@ -1,4 +1,4 @@
# Stringy
![Stringy](http://danielstjules.com/stringy/logo.png)
A PHP library with a variety of string manipulation functions with multibyte support. Offers both OO method chaining and a procedural-style static wrapper. Compatible with PHP 5.3+. Inspired by underscore.string.js.
@@ -38,6 +38,7 @@ A PHP library with a variety of string manipulation functions with multibyte sup
* [padBoth](#padboth)
* [padLeft](#padleft)
* [padRight](#padright)
* [regexReplace](#regexreplace)
* [removeLeft](#removeleft)
* [removeRight](#removeright)
* [replace](#replace)
@@ -52,8 +53,10 @@ A PHP library with a variety of string manipulation functions with multibyte sup
* [tidy](#tidy)
* [titleize](#titleize)
* [toAscii](#toascii)
* [toLowerCase](#tolowercase)
* [toSpaces](#tospaces)
* [toTabs](#totabs)
* [toUpperCase](#touppercase)
* [trim](#trim)
* [truncate](#truncate)
* [underscored](#underscored)
@@ -64,13 +67,15 @@ A PHP library with a variety of string manipulation functions with multibyte sup
## Requiring/Loading
If you're using Composer to manage dependencies, you can include the following in your composer.json file:
If you're using Composer to manage dependencies, you can include the following
in your composer.json file:
"require": {
"danielstjules/stringy": "dev-master"
}
Then, after running `composer update` or `php composer.phar update`, you can load the class using Composer's autoloading:
Then, after running `composer update` or `php composer.phar update`, you can
load the class using Composer's autoloading:
```php
require 'vendor/autoload.php';
@@ -103,9 +108,9 @@ use Stringy\Stringy as S;
echo S::create('Fòô Bàř', 'UTF-8')->collapseWhitespace()->swapCase(); // 'fÒÔ bÀŘ'
```
`Stringy\Stringy` contains a __toString() method, which returns the current
string when the object is used in a string context. Its $str property is also
public, and can be accessed directly if required, ie: `S::create('foo')->str // 'foo'`
`Stringy\Stringy` has a __toString() method, which returns the current string
when the object is used in a string context, ie:
`(string) S::create('foo') // 'foo'`
Using the static wrapper, an alternative is the following:
@@ -117,10 +122,12 @@ echo S::swapCase($string, 'UTF-8'); // 'fÒÔ bÀŘ'
## Methods
In the list below, any static method other than S::create refers to a
method in Stringy\StaticStringy. For all others, they're found in Stringy\Stringy. Furthermore, all methods that return a Stringy object or string do not modify the original.
In the list below, any static method other than S::create refers to a method in
`Stringy\StaticStringy`. For all others, they're found in `Stringy\Stringy`.
Furthermore, all methods that return a Stringy object or string do not modify
the original.
*Note: If $encoding is not given, it defaults to mb_internal_encoding().*
*Note: If `$encoding` is not given, it defaults to `mb_internal_encoding()`.*
#### at
@@ -167,11 +174,13 @@ S::collapseWhitespace(' Ο συγγραφέας '); // 'Ο συγγρα
#### contains
$stringy->contains(string $needle)
$stringy->contains(string $needle [, boolean $caseSensitive = true ])
S::contains(string $haystack, string $needle [, string $encoding ])
S::contains(string $haystack, string $needle [, boolean $caseSensitive = true [, string $encoding ]])
Returns true if the string contains $needle, false otherwise.
Returns true if the string contains $needle, false otherwise. By default,
the comparison is case-sensitive, but can be made insensitive
by setting $caseSensitive to false.
```php
S::create('Ο συγγραφέας είπε', 'UTF-8')->contains('συγγραφέας');
@@ -180,12 +189,13 @@ S::contains('Ο συγγραφέας είπε', 'συγγραφέας', 'UTF-8')
#### count
$stringy->count(string $substring)
$stringy->count(string $substring [, boolean $caseSensitive = true ])
S::count(string $str, string $substring [, string $encoding ])
S::count(string $str, string $substring [, boolean $caseSensitive = true [, string $encoding ]])
Returns the number of occurrences of $substring in the given string. An alias for
mb_substr_count()
Returns the number of occurrences of $substring in the given string.
By default, the comparison is case-sensitive, but can be made insensitive
by setting $caseSensitive to false.
```php
S::create('Ο συγγραφέας είπε', 'UTF-8')->count('α');
@@ -194,11 +204,13 @@ S::count('Ο συγγραφέας είπε', 'α', 'UTF-8'); // 2
#### create
S::create(string $str, [, $encoding ])
S::create(mixed $str, [, $encoding ])
Creates a Stringy object and assigns both str and encoding properties
the supplied values. If $encoding is not specified, it defaults to
mb_internal_encoding(). It then returns the initialized object.
the supplied values. $str is cast to a string prior to assignment, and if
$encoding is not specified, it defaults to mb_internal_encoding(). It
then returns the initialized object. Throws an InvalidArgumentException
if the first argument is an array or object without a __toString method.
```php
$stringy = S::create('fòô bàř', 'UTF-8'); // 'fòô bàř'
@@ -497,7 +509,7 @@ string used for padding is a space, and the default type (one of 'left',
$padType isn't one of those 3 values.
```php
S::create('fòô bàř', 'UTF-8')->pad( 10, '¬ø', 'left',);
S::create('fòô bàř', 'UTF-8')->pad( 10, '¬ø', 'left');
S::pad('fòô bàř', 10, '¬ø', 'left', 'UTF-8'); // '¬ø¬fòô bàř'
```
@@ -543,6 +555,22 @@ S::create('foo bar')->padRight(10, '_*');
S::padRight('foo bar', 10, '_*'); // 'foo bar_*_'
```
#### regexReplace
$stringy->regexReplace(string $pattern, string $replacement [, string $options = 'msr'])
S::regexReplace(string $str, string $pattern, string $replacement [, string $options = 'msr' [, string $encoding ]])
Replaces all occurrences of $pattern in $str by $replacement. An alias
for mb_ereg_replace(). Note that the 'i' option with multibyte patterns
in mb_ereg_replace() requires PHP 5.4+. This is due to a lack of support
in the bundled version of Oniguruma in PHP 5.3.
```php
S::create('fòô ', 'UTF-8')->regexReplace('f[òô]+\s', 'bàř', 'msr');
S::regexReplace('fòô ', 'f[òô]+\s', 'bàř', 'msr', 'UTF-8'); // 'bàř'
```
#### removeLeft
$stringy->removeLeft(string $substring)
@@ -571,11 +599,11 @@ S::removeRight('fòô bàř', ' bàř', 'UTF-8'); // 'fòô'
#### replace
$stringy->replace(string $search, string $replace)
$stringy->replace(string $search, string $replacement)
S::replace(string $str, string $search, string $replace [, string $encoding ])
S::replace(string $str, string $search, string $replacement [, string $encoding ])
Returns a string with all occurrences of $search replaced with $replace.
Replaces all occurrences of $search in $str by $replacement.
```php
S::create('fòô bàř fòô bàř', 'UTF-8')->replace('fòô ', '');
@@ -617,7 +645,8 @@ $stringy->shuffle()
S::shuffle(string $str [, string $encoding ])
A multibyte str_shuffle() function. It returns a string with its characters in random order.
A multibyte str_shuffle() function. It returns a string with its characters in
random order.
```php
S::create('fòô bàř', 'UTF-8')->shuffle();
@@ -626,14 +655,15 @@ S::shuffle('fòô bàř', 'UTF-8'); // 'àôřb òf'
#### slugify
$stringy->slugify()
$stringy->slugify([ string $replacement = '-' ])
S::slugify(string $str)
S::slugify(string $str [, string $replacement = '-' ])
Converts the string into an URL slug. This includes replacing non-ASCII
characters with their closest ASCII equivalents, removing non-alphanumeric
and non-ASCII characters, and replacing whitespace with dashes. The string
is also converted to lowercase.
and non-ASCII characters, and replacing whitespace with $replacement.
The replacement defaults to a single dash, and the string is also
converted to lowercase.
```php
S::create('Using strings like fòô bàř')->slugify();
@@ -742,6 +772,20 @@ S::create('fòô bàř')->toAscii();
S::toAscii('fòô bàř'); // 'foo bar'
```
#### toLowerCase
$stringy->toLowerCase()
S::toLowerCase(string $str [, string $encoding ])
Converts all characters in the string to lowercase. An alias for PHP's
mb_strtolower().
```php
S::create('FÒÔ BÀŘ', 'UTF-8')->toLowerCase();
S::toLowerCase('FÒÔ BÀŘ', 'UTF-8'); // 'fòô bàř'
```
#### toSpaces
$stringy->toSpaces([ tabLength = 4 ])
@@ -771,6 +815,20 @@ S::create(' fòô bàř')->toTabs();
S::toTabs(' fòô bàř'); // ' fòô bàř'
```
#### toUpperCase
$stringy->toUpperCase()
S::toUpperCase(string $str [, string $encoding ])
Converts all characters in the string to uppercase. An alias for PHP's
mb_strtoupper().
```php
S::create('fòô bàř', 'UTF-8')->toUpperCase();
S::toUpperCase('fòô bàř', 'UTF-8'); // 'FÒÔ BÀŘ'
```
#### trim
$stringy->trim()

View File

@@ -5,6 +5,7 @@
"multibyte", "string", "manipulation", "utility", "methods", "utf-8",
"helpers", "utils", "utf"
],
"homepage": "https://github.com/danielstjules/Stringy",
"license": "MIT",
"authors": [
{

View File

@@ -13,7 +13,7 @@ class StaticStringy
*/
public static function upperCaseFirst($str, $encoding = null)
{
return Stringy::create($str, $encoding)->upperCaseFirst()->str;
return (string) Stringy::create($str, $encoding)->upperCaseFirst();
}
/**
@@ -25,7 +25,7 @@ class StaticStringy
*/
public static function lowerCaseFirst($str, $encoding = null)
{
return Stringy::create($str, $encoding)->lowerCaseFirst()->str;
return (string) Stringy::create($str, $encoding)->lowerCaseFirst();
}
/**
@@ -39,7 +39,7 @@ class StaticStringy
*/
public static function camelize($str, $encoding = null)
{
return Stringy::create($str, $encoding)->camelize()->str;
return (string) Stringy::create($str, $encoding)->camelize();
}
/**
@@ -53,7 +53,7 @@ class StaticStringy
*/
public static function upperCamelize($str, $encoding = null)
{
return Stringy::create($str, $encoding)->upperCamelize()->str;
return (string) Stringy::create($str, $encoding)->upperCamelize();
}
/**
@@ -67,7 +67,7 @@ class StaticStringy
*/
public static function dasherize($str, $encoding = null)
{
return Stringy::create($str, $encoding)->dasherize()->str;
return (string) Stringy::create($str, $encoding)->dasherize();
}
/**
@@ -82,7 +82,7 @@ class StaticStringy
*/
public static function underscored($str, $encoding = null)
{
return $result = Stringy::create($str, $encoding)->underscored()->str;
return (string) Stringy::create($str, $encoding)->underscored();
}
/**
@@ -94,7 +94,7 @@ class StaticStringy
*/
public static function swapCase($str, $encoding = null)
{
return $result = Stringy::create($str, $encoding)->swapCase()->str;
return (string) Stringy::create($str, $encoding)->swapCase();
}
/**
@@ -110,7 +110,7 @@ class StaticStringy
*/
public static function titleize($str, $ignore = null, $encoding = null)
{
return $result = Stringy::create($str, $encoding)->titleize($ignore)->str;
return (string) Stringy::create($str, $encoding)->titleize($ignore);
}
/**
@@ -123,7 +123,7 @@ class StaticStringy
*/
public static function humanize($str, $encoding = null)
{
return $result = Stringy::create($str, $encoding)->humanize()->str;
return (string) Stringy::create($str, $encoding)->humanize();
}
/**
@@ -132,12 +132,11 @@ class StaticStringy
* equivalents.
*
* @param string $str String to remove special chars
* @param string $encoding The character encoding
* @return string String with those characters removed
*/
public static function tidy($str)
{
return $result = Stringy::create($str)->tidy()->str;
return (string) Stringy::create($str)->tidy();
}
/**
@@ -145,12 +144,13 @@ class StaticStringy
* single space. This includes tabs and newline characters, as well as
* multibyte whitespace such as the thin space and ideographic space.
*
* @param string $str The string to cleanup whitespace
* @param string $str The string to cleanup whitespace
* @param string $encoding The character encoding
* @return string The trimmed string with condensed whitespace
*/
public static function collapseWhitespace($str, $encoding = null)
{
return $result = Stringy::create($str, $encoding)->collapseWhitespace()->str;
return (string) Stringy::create($str, $encoding)->collapseWhitespace();
}
/**
@@ -162,7 +162,7 @@ class StaticStringy
*/
public static function toAscii($str)
{
return $result = Stringy::create($str)->toAscii()->str;
return (string) Stringy::create($str)->toAscii();
}
/**
@@ -178,14 +178,14 @@ class StaticStringy
* @param string $padType One of 'left', 'right', 'both'
* @param string $encoding The character encoding
* @return string The padded string
* @throws InvalidArgumentException If $padType isn't one of 'right',
* @throws \InvalidArgumentException If $padType isn't one of 'right',
* 'left' or 'both'
*/
public static function pad($str, $length, $padStr = ' ', $padType = 'right',
$encoding = null)
{
return $result = Stringy::create($str, $encoding)
->pad($length, $padStr, $padType)->str;
return (string) Stringy::create($str, $encoding)
->pad($length, $padStr, $padType);
}
/**
@@ -200,7 +200,7 @@ class StaticStringy
*/
public static function padLeft($str, $length, $padStr = ' ', $encoding = null)
{
return Stringy::create($str, $encoding)->padLeft($length, $padStr)->str;
return (string) Stringy::create($str, $encoding)->padLeft($length, $padStr);
}
/**
@@ -215,7 +215,7 @@ class StaticStringy
*/
public static function padRight($str, $length, $padStr = ' ', $encoding = null)
{
return Stringy::create($str, $encoding)->padRight($length, $padStr)->str;
return (string) Stringy::create($str, $encoding)->padRight($length, $padStr);
}
/**
@@ -230,7 +230,7 @@ class StaticStringy
*/
public static function padBoth($str, $length, $padStr = ' ', $encoding = null)
{
return Stringy::create($str, $encoding)->padBoth($length, $padStr)->str;
return (string) Stringy::create($str, $encoding)->padBoth($length, $padStr);
}
/**
@@ -279,7 +279,7 @@ class StaticStringy
*/
public static function toSpaces($str, $tabLength = 4)
{
return Stringy::create($str)->toSpaces($tabLength)->str;
return (string) Stringy::create($str)->toSpaces($tabLength);
}
/**
@@ -293,34 +293,66 @@ class StaticStringy
*/
public static function toTabs($str, $tabLength = 4)
{
return Stringy::create($str)->toTabs($tabLength)->str;
return (string) Stringy::create($str)->toTabs($tabLength);
}
/**
* Converts all characters in the string to lowercase. An alias for PHP's
* mb_strtolower().
*
* @param string $str String to convert case
* @param string $encoding The character encoding
* @return string The lowercase string
*/
public static function toLowerCase($str, $encoding = null)
{
return (string) Stringy::create($str, $encoding)->toLowerCase();
}
/**
* Converts all characters in the string to uppercase. An alias for PHP's
* mb_strtoupper().
*
* @param string $str String to convert case
* @param string $encoding The character encoding
* @return string The uppercase string
*/
public static function toUpperCase($str, $encoding = null)
{
return (string) Stringy::create($str, $encoding)->toUpperCase();
}
/**
* Converts the string into an URL slug. This includes replacing non-ASCII
* characters with their closest ASCII equivalents, removing non-alphanumeric
* and non-ASCII characters, and replacing whitespace with dashes. The string
* is also converted to lowercase.
* and non-ASCII characters, and replacing whitespace with $replacement.
* The replacement defaults to a single dash, and the string is also
* converted to lowercase.
*
* @param string $str Text to transform into an URL slug
* @param string $str Text to transform into an URL slug
* @param string $replacement The string used to replace whitespace
* @return string The corresponding URL slug
*/
public static function slugify($str)
public static function slugify($str, $replacement = '-')
{
return Stringy::create($str)->slugify()->str;
return (string) Stringy::create($str)->slugify($replacement);
}
/**
* Returns true if the string contains $needle, false otherwise.
* Returns true if the string contains $needle, false otherwise. By default,
* the comparison is case-sensitive, but can be made insensitive by setting
* $caseSensitive to false.
*
* @param string $haystack String being checked
* @param string $needle Substring to look for
* @param string $encoding The character encoding
* @param string $haystack String being checked
* @param string $needle Substring to look for
* @param bool $caseSensitive Whether or not to enforce case-sensitivity
* @param string $encoding The character encoding
* @return bool Whether or not $haystack contains $needle
*/
public static function contains($haystack, $needle, $encoding = null)
public static function contains($haystack, $needle, $caseSensitive = true,
$encoding = null)
{
return Stringy::create($haystack, $encoding)->contains($needle);
return Stringy::create($haystack, $encoding)->contains($needle, $caseSensitive);
}
/**
@@ -332,7 +364,7 @@ class StaticStringy
*/
public static function surround($str, $substring)
{
return Stringy::create($str)->surround($substring)->str;
return (string) Stringy::create($str)->surround($substring);
}
/**
@@ -346,7 +378,7 @@ class StaticStringy
*/
public static function insert($str, $substring, $index, $encoding = null)
{
return Stringy::create($str, $encoding)->insert($substring, $index)->str;
return (string) Stringy::create($str, $encoding)->insert($substring, $index);
}
/**
@@ -363,8 +395,8 @@ class StaticStringy
public static function truncate($str, $length, $substring = '',
$encoding = null)
{
return Stringy::create($str, $encoding)
->truncate($length, $substring)->str;
return (string) Stringy::create($str, $encoding)
->truncate($length, $substring);
}
/**
@@ -382,8 +414,8 @@ class StaticStringy
public static function safeTruncate($str, $length, $substring = '',
$encoding = null)
{
return Stringy::create($str, $encoding)
->safeTruncate($length, $substring)->str;
return (string) Stringy::create($str, $encoding)
->safeTruncate($length, $substring);
}
/**
@@ -395,7 +427,7 @@ class StaticStringy
*/
public static function reverse($str, $encoding = null)
{
return Stringy::create($str, $encoding)->reverse()->str;
return (string) Stringy::create($str, $encoding)->reverse();
}
/**
@@ -408,7 +440,7 @@ class StaticStringy
*/
public static function shuffle($str, $encoding = null)
{
return Stringy::create($str, $encoding)->shuffle()->str;
return (string) Stringy::create($str, $encoding)->shuffle();
}
/**
@@ -432,8 +464,8 @@ class StaticStringy
*/
public static function longestCommonPrefix($str, $otherStr, $encoding = null)
{
return Stringy::create($str, $encoding)
->longestCommonPrefix($otherStr)->str;
return (string) Stringy::create($str, $encoding)
->longestCommonPrefix($otherStr);
}
/**
@@ -446,8 +478,8 @@ class StaticStringy
*/
public static function longestCommonSuffix($str, $otherStr, $encoding = null)
{
return Stringy::create($str, $encoding)
->longestCommonSuffix($otherStr)->str;
return (string) Stringy::create($str, $encoding)
->longestCommonSuffix($otherStr);
}
/**
@@ -462,8 +494,8 @@ class StaticStringy
public static function longestCommonSubstring($str, $otherStr,
$encoding = null)
{
return Stringy::create($str, $encoding)
->longestCommonSubstring($otherStr)->str;
return (string) Stringy::create($str, $encoding)
->longestCommonSubstring($otherStr);
}
/**
@@ -491,7 +523,7 @@ class StaticStringy
*/
public static function substr($str, $start, $length = null, $encoding = null)
{
return Stringy::create($str, $encoding)->substr($start, $length)->str;
return (string) Stringy::create($str, $encoding)->substr($start, $length);
}
/**
@@ -504,7 +536,7 @@ class StaticStringy
*/
public static function at($str, $index, $encoding = null)
{
return Stringy::create($str, $encoding)->at($index)->str;
return (string) Stringy::create($str, $encoding)->at($index);
}
/**
@@ -517,7 +549,7 @@ class StaticStringy
*/
public static function first($str, $n, $encoding = null)
{
return Stringy::create($str, $encoding)->first($n)->str;
return (string) Stringy::create($str, $encoding)->first($n);
}
/**
@@ -530,7 +562,7 @@ class StaticStringy
*/
public static function last($str, $n, $encoding = null)
{
return Stringy::create($str, $encoding)->last($n)->str;
return (string) Stringy::create($str, $encoding)->last($n);
}
/**
@@ -544,7 +576,7 @@ class StaticStringy
*/
public static function ensureLeft($str, $substring, $encoding = null)
{
return Stringy::create($str, $encoding)->ensureLeft($substring)->str;
return (string) Stringy::create($str, $encoding)->ensureLeft($substring);
}
/**
@@ -558,7 +590,7 @@ class StaticStringy
*/
public static function ensureRight($str, $substring, $encoding = null)
{
return Stringy::create($str, $encoding)->ensureRight($substring)->str;
return (string) Stringy::create($str, $encoding)->ensureRight($substring);
}
/**
@@ -571,7 +603,7 @@ class StaticStringy
*/
public static function removeLeft($str, $substring, $encoding = null)
{
return Stringy::create($str, $encoding)->removeLeft($substring)->str;
return (string) Stringy::create($str, $encoding)->removeLeft($substring);
}
/**
@@ -584,7 +616,7 @@ class StaticStringy
*/
public static function removeRight($str, $substring, $encoding = null)
{
return Stringy::create($str, $encoding)->removeRight($substring)->str;
return (string) Stringy::create($str, $encoding)->removeRight($substring);
}
/**
@@ -686,29 +718,52 @@ class StaticStringy
/**
* Returns the number of occurrences of $substring in the given string.
* An alias for mb_substr_count()
* By default, the comparison is case-sensitive, but can be made insensitive
* by setting $caseSensitive to false.
*
* @param string $str The string to search through
* @param string $substring The substring to search for
* @param string $encoding The character encoding
* @param string $str The string to search through
* @param string $substring The substring to search for
* @param bool $caseSensitive Whether or not to enforce case-sensitivity
* @param string $encoding The character encoding
* @return int The number of $substring occurrences
*/
public static function count($str, $substring, $encoding = null)
public static function count($str, $substring, $caseSensitive = true,
$encoding = null)
{
return Stringy::create($str, $encoding)->count($substring);
return Stringy::create($str, $encoding)->count($substring, $caseSensitive);
}
/**
* Returns a string with all occurrences of $search replaced with $replace.
* Replaces all occurrences of $search in $str by $replacement.
*
* @param string $str The haystack to search through
* @param string $search The needle to search for
* @param string $replace The string to replace with
* @param string $encoding The character encoding
* @param string $str The haystack to search through
* @param string $search The needle to search for
* @param string $replacement The string to replace with
* @param string $encoding The character encoding
* @return string The resulting string after the replacements
*/
public static function replace($str, $search, $replace, $encoding = null)
public static function replace($str, $search, $replacement, $encoding = null)
{
return Stringy::create($str, $encoding)->replace($search, $replace)->str;
return (string) Stringy::create($str, $encoding)->replace($search, $replacement);
}
/**
* Replaces all occurrences of $pattern in $str by $replacement. An alias
* for mb_ereg_replace(). Note that the 'i' option with multibyte patterns
* in mb_ereg_replace() requires PHP 5.4+. This is due to a lack of support
* in the bundled version of Oniguruma in PHP 5.3.
*
* @param string $str The haystack to search through
* @param string $pattern The regular expression pattern
* @param string $replacement The string to replace with
* @param string $options Matching conditions to be used
* @param string $encoding The character encoding
* @return string The resulting string after the replacements
*/
public static function regexReplace($str, $pattern, $replacement,
$options = 'msr', $encoding = null)
{
return (string) Stringy::create($str, $encoding)->regexReplace($pattern,
$replacement, $options, $encoding);
}
}

View File

@@ -4,36 +4,54 @@ namespace Stringy;
class Stringy
{
public $str;
private $str;
public $encoding;
/**
* Initializes a Stringy object and assigns both str and encoding properties
* the supplied values. If $encoding is not specified, it defaults to
* mb_internal_encoding().
* the supplied values. $str is cast to a string prior to assignment, and if
* $encoding is not specified, it defaults to mb_internal_encoding(). Throws
* an InvalidArgumentException if the first argument is an array or object
* without a __toString method.
*
* @param string $str String to modify
* @param string $encoding The character encoding
* @param mixed $str Value to modify, after being cast to string
* @param string $encoding The character encoding
* @throws \InvalidArgumentException if an array or object without a
* __toString method is passed as the first argument
*/
public function __construct($str, $encoding = null)
{
$this->str = $str;
if (is_array($str)) {
throw new \InvalidArgumentException(
'Passed value cannot be an array'
);
} else if (is_object($str) && !method_exists($str, '__toString')) {
throw new \InvalidArgumentException(
'Passed object must have a __toString method'
);
}
$this->str = (string) $str;
$this->encoding = $encoding ?: mb_internal_encoding();
}
/**
* Creates a Stringy object and assigns both str and encoding properties
* the supplied values. If $encoding is not specified, it defaults to
* mb_internal_encoding(). It then returns the initialized object.
* the supplied values. $str is cast to a string prior to assignment, and if
* $encoding is not specified, it defaults to mb_internal_encoding(). It
* then returns the initialized object. Throws an InvalidArgumentException
* if the first argument is an array or object without a __toString method.
*
* @param string $str String to modify
* @param mixed $str Value to modify, after being cast to string
* @param string $encoding The character encoding
* @return Stringy A Stringy object
* @throws \InvalidArgumentException if an array or object without a
* __toString method is passed as the first argument
*/
public static function create($str, $encoding = null)
{
return new self($str, $encoding);
return new static($str, $encoding);
}
/**
@@ -203,21 +221,23 @@ class Stringy
*/
public function titleize($ignore = null)
{
$stringy = self::create($this->str, $this->encoding)->trim();
$encoding = $stringy->encoding;
$buffer = $this->trim();
$encoding = $this->encoding;
$stringy->str = preg_replace_callback(
$buffer = preg_replace_callback(
'/([\S]+)/u',
function ($match) use (&$encoding, &$ignore, &$stringy) {
if ($ignore && in_array($match[0], $ignore))
function ($match) use (&$encoding, &$ignore) {
if ($ignore && in_array($match[0], $ignore)) {
return $match[0];
$stringy->str = $match[0];
return $stringy->upperCaseFirst();
} else {
$stringy = new Stringy($match[0], $encoding);
return (string) $stringy->upperCaseFirst();
}
},
$stringy->str
$buffer
);
return $stringy;
return new Stringy($buffer, $encoding);
}
/**
@@ -284,55 +304,81 @@ class Stringy
{
$stringy = self::create($this->str, $this->encoding);
$charsArray = array(
'a' => array('à', 'á', 'â', 'ã', 'ā', 'ą', 'ă', 'å', 'α', 'ά', 'ἀ',
'ἁ', 'ἂ', 'ἃ', 'ἄ', 'ἅ', 'ἆ', 'ἇ', 'ᾀ', 'ᾁ', 'ᾂ', 'ᾃ',
'ᾄ', 'ᾅ', 'ᾆ', 'ᾇ', 'ὰ', 'ά', 'ᾰ', 'ᾱ', 'ᾲ', 'ᾳ', 'ᾴ',
'ᾶ', 'ᾷ'),
'b' => array('б', 'β'),
'c' => array('ç', 'ć', 'č', 'ĉ', 'ċ'),
'd' => array('ď', 'ð', 'đ', 'ƌ', 'ȡ', 'ɖ', 'ɗ', 'ᵭ', 'ᶁ', 'ᶑ'),
'e' => array('è', 'é', 'ê', 'ë', 'ē', 'ę', 'ě', 'ĕ', 'ė', 'ε', 'έ',
'ἐ', 'ἑ', 'ἒ', 'ἓ', 'ἔ', 'ἕ', 'ὲ', 'έ', 'е', 'ё', 'э'),
'g' => array('ĝ', 'ğ', 'ġ', '),
'h' => array('ĥ', 'ħ'),
'i' => array('ì', 'í', 'î', 'ï', 'ī', ', 'ĭ', 'į', 'ı', 'ι', 'ί',
'ϊ', 'ΐ', '', '', '', '', '', '', '', '', '',
', '', '', '', 'ΐ', '', ''),
'j' => array('ĵ'),
'k' => array('ķ', '),
'l' => array('ł', 'ľ', ', 'ļ', 'ŀ'),
'n' => array('ñ', 'ń', 'ň', 'ņ', 'ʼn', 'ŋ', 'ν'),
'o' => array('ò', 'ó', 'ô', 'õ', 'ø', 'ō', 'ő', 'ŏ', 'ο', 'ό', 'ὀ',
'', '', '', '', '', '', 'ό', 'ö'),
'r' => array('ŕ', 'ř', 'ŗ'),
's' => array('ś', 'š', 'ş'),
't' => array('ť', '),
'u' => array('ü', 'ù', ', 'û', 'ū', 'ů', 'ű', 'ŭ', 'ũ', 'ų', '),
'w' => array('ŵ'),
'y' => array('ÿ', 'ý', 'ŷ'),
'z' => array('ź', 'ž', 'ż'),
'oe' => array('œ'),
'A' => array('Á', 'Â', 'Ã', 'Å', 'Ā', 'Ą', 'Ă', 'Α', 'Ά', 'Ἀ', 'Ἁ',
'', 'Ἃ', 'Ἄ', 'Ἅ', 'Ἆ', 'Ἇ', '', '', '', '', '',
'', 'ᾎ', 'ᾏ', 'Ᾰ', '', '', 'Ά', ''),
'B' => array('Б'),
'C' => array('Ć', 'Č', 'Ĉ', '),
'D' => array('Ď', 'Ð', 'Đ', 'Ɖ', 'Ɗ', 'Ƌ', 'ᴅ', 'ᴆ'),
'E' => array('É', 'Ê', 'Ë', 'Ē', 'Ę', 'Ě', 'Ĕ', 'Ė', 'Ε', 'Έ', 'Ἐ',
'Ἑ', 'Ἒ', 'Ἓ', 'Ἔ', 'Ἕ', 'Έ', 'Ὲ', 'Е', 'Ё', '),
'G' => array('Ğ', 'Ġ', '),
'I' => array('Í', 'Î', 'Ï', 'Ī', 'Ĩ', 'Ĭ', 'Į', 'İ', 'Ι', 'Ί', 'Ϊ',
'Ἰ', 'Ἱ', 'Ἳ', 'Ἴ', 'Ἵ', 'Ἶ', 'Ἷ', 'Ῐ', 'Ῑ', 'Ὶ', 'Ί'),
'L' => array('Ĺ', '),
'N' => array('Ń', 'Ñ', 'Ň', 'Ņ', 'Ŋ',),
'O' => array('Ó', 'Ô', 'Õ', 'Ø', 'Ō', 'Ő', 'Ŏ', 'Ο', 'Ό', '', '',
'Ὂ', '', '', '', '', 'Ό'),
'R' => array('Ř', '),
'S' => array('Ş', 'Ŝ', 'Ș', 'Š', '),
'T' => array('Ť', 'Ţ', 'Ŧ', 'Ț'),
'U' => array('Ù', 'Ú', 'Û', 'Ū', 'Ů', 'Ű', 'Ŭ', 'Ũ', 'Ų'),
'Y' => array('Ý', 'Ÿ', '', '', '', 'Ύ'),
'Z' => array('Ź', 'Ž', 'Ż')
'a' => array('à', 'á', 'â', 'ã', 'ā', 'ą', 'ă', 'å', 'α', 'ά', 'ἀ',
'ἁ', 'ἂ', 'ἃ', 'ἄ', 'ἅ', 'ἆ', 'ἇ', 'ᾀ', 'ᾁ', 'ᾂ', 'ᾃ',
'ᾄ', 'ᾅ', 'ᾆ', 'ᾇ', 'ὰ', 'ά', 'ᾰ', 'ᾱ', 'ᾲ', 'ᾳ', 'ᾴ',
'ᾶ', 'ᾷ', 'а', 'ъ'),
'b' => array('б', 'β'),
'c' => array('ç', 'ć', 'č', 'ĉ', 'ċ'),
'd' => array('ď', 'ð', 'đ', 'ƌ', 'ȡ', 'ɖ', 'ɗ', 'ᵭ', 'ᶁ', 'ᶑ', 'д'),
'e' => array('è', 'é', 'ê', 'ë', 'ē', 'ę', 'ě', 'ĕ', 'ė', 'ε', 'έ',
'ἐ', 'ἑ', 'ἒ', 'ἓ', 'ἔ', 'ἕ', 'ὲ', 'έ', 'е', 'ё', 'э', 'є'),
'f' => array('ф'),
'g' => array('ĝ', 'ğ', 'ġ', 'ģ', 'г', '),
'h' => array('ĥ', 'ħ'),
'i' => array('ì', 'í', 'î', 'ï', 'ī', 'ĩ', 'ĭ', 'į', 'ı', 'ι', 'ί',
'ϊ', 'ΐ', 'ἰ', 'ἱ', '', '', '', '', '', 'ἷ', 'ὶ',
'ί', 'ῐ', 'ῑ', 'ῒ', 'ΐ', 'ῖ', 'ῗ', 'і', 'ї', 'и'),
'j' => array('ĵ'),
'k' => array('ķ', 'ĸ', 'к'),
'l' => array('ł', 'ľ', 'ĺ', 'ļ', 'ŀ', 'л'),
'm' => array('м'),
'n' => array('ñ', 'ń', 'ň', 'ņ', 'ʼn', 'ŋ', 'ν', 'н'),
'o' => array('ò', 'ó', 'ô', 'õ', 'ø', 'ō', 'ő', ', 'ο', 'ό', 'ὀ',
'', 'ὂ', 'ὃ', 'ὄ', '', '', 'ό', 'ö', 'о'),
'p' => array('п'),
'r' => array('ŕ', 'ř', 'ŗ', 'р'),
's' => array('ś', 'š', 'ş', 'с'),
't' => array('ť', 'ţ', 'т'),
'u' => array('ü', 'ù', 'ú', 'û', 'ū', 'ů', 'ű', 'ŭ', ', 'ų', 'µ', 'у'),
'v' => array('в'),
'w' => array('ŵ'),
'y' => array('ÿ', 'ý', 'ŷ', 'й', 'ы'),
'z' => array('ź', 'ž', 'ż', 'з'),
'ch' => array('ч'),
'kh' => array('х'),
'oe' => array('œ'),
'sh' => array('ш'),
'shch' => array('),
'ts' => array('ц'),
'ya' => array('я'),
'yu' => array('ю'),
'zh' => array('ж'),
'A' => array('Á', 'Â', 'Ã', 'Å', 'Ā', 'Ą', 'Ă', 'Α', 'Ά', 'Ἀ', 'Ἁ',
'', '', '', '', '', '', '', '', '', '', '',
'ᾍ', 'ᾎ', '', '', '', '', 'Ά', 'ᾼ', 'А', '),
'B' => array('Б'),
'C' => array('Ć', 'Č', 'Ĉ', 'Ċ'),
'D' => array('Ď', 'Ð', 'Đ', ', 'Ɗ', 'Ƌ', 'ᴅ', 'ᴆ', '),
'E' => array('É', 'Ê', ', 'Ē', 'Ę', 'Ě', 'Ĕ', 'Ė', 'Ε', 'Έ', '',
'', 'Ἒ', 'Ἓ', 'Ἔ', 'Ἕ', 'Έ', '', 'Е', 'Ё', 'Э', 'Є'),
'F' => array('Ф'),
'G' => array('Ğ', 'Ġ', 'Ģ', 'Г', 'Ґ'),
'I' => array('Í', 'Î', 'Ï', 'Ī', 'Ĩ', 'Ĭ', 'Į', 'İ', 'Ι', 'Ί', 'Ϊ',
'Ἰ', 'Ἱ', 'Ἳ', 'Ἴ', 'Ἵ', 'Ἶ', 'Ἷ', 'Ῐ', 'Ῑ', 'Ὶ', 'Ί',
'И', 'І', 'Ї'),
'K' => array('К'),
'L' => array('Ĺ', 'Ł', 'Л'),
'M' => array('М'),
'N' => array('Ń', 'Ñ', 'Ň', 'Ņ', 'Ŋ', 'Н'),
'O' => array('Ó', 'Ô', 'Õ', 'Ø', 'Ō', 'Ő', 'Ŏ', 'Ο', 'Ό', 'Ὀ', 'Ὁ',
'Ὂ', 'Ὃ', 'Ὄ', 'Ὅ', 'Ὸ', 'Ό', 'О'),
'P' => array('П'),
'R' => array('Ř', 'Ŕ', 'Р'),
'S' => array('Ş', 'Ŝ', 'Ș', 'Š', 'Ś', 'С'),
'T' => array('Ť', 'Ţ', 'Ŧ', 'Ț', 'Т'),
'U' => array('Ù', 'Ú', 'Û', 'Ū', 'Ů', 'Ű', 'Ŭ', 'Ũ', 'Ų', 'У'),
'V' => array('В'),
'Y' => array('Ý', 'Ÿ', 'Ῠ', 'Ῡ', 'Ὺ', 'Ύ', 'Ы', 'Й'),
'Z' => array('Ź', 'Ž', 'Ż', 'З'),
'CH' => array('Ч'),
'KH' => array('Х'),
'SH' => array('Ш'),
'SHCH' => array('Щ'),
'TS' => array('Ц'),
'YA' => array('Я'),
'YU' => array('Ю'),
'ZH' => array('Ж')
);
foreach ($charsArray as $key => $value) {
@@ -359,7 +405,7 @@ class Stringy
public function pad($length, $padStr = ' ', $padType = 'right')
{
if (!in_array($padType, array('left', 'right', 'both'))) {
throw new InvalidArgumentException('Pad expects $padType ' .
throw new \InvalidArgumentException('Pad expects $padType ' .
"to be one of 'left', 'right' or 'both'");
}
@@ -418,9 +464,9 @@ class Stringy
* Returns a new string of a given length such that the end of the string is
* padded. Alias for pad() with a $padType of 'right'.
*
* @param int $length Desired string length after padding
* @param string $padStr String used to pad, defaults to space
* @return string Object with a right padded $str
* @param int $length Desired string length after padding
* @param string $padStr String used to pad, defaults to space
* @return Stringy Object with a right padded $str
*/
public function padRight($length, $padStr = ' ')
{
@@ -522,37 +568,68 @@ class Stringy
return $stringy;
}
/**
* Converts all characters in the string to lowercase. An alias for PHP's
* mb_strtolower().
*
* @return Stringy Object with all characters of $str being lowercase
*/
public function toLowerCase()
{
$str = mb_strtolower($this->str, $this->encoding);
return self::create($str, $this->encoding);
}
/**
* Converts all characters in the string to uppercase. An alias for PHP's
* mb_strtoupper().
*
* @return Stringy Object with all characters of $str being uppercase
*/
public function toUpperCase()
{
$str = mb_strtoupper($this->str, $this->encoding);
return self::create($str, $this->encoding);
}
/**
* Converts the string into an URL slug. This includes replacing non-ASCII
* characters with their closest ASCII equivalents, removing non-alphanumeric
* and non-ASCII characters, and replacing whitespace with dashes. The string
* is also converted to lowercase.
* and non-ASCII characters, and replacing whitespace with $replacement.
* The replacement defaults to a single dash, and the string is also
* converted to lowercase.
*
* @param string $replacement The string used to replace whitespace
* @return Stringy Object whose $str has been converted to an URL slug
*/
public function slugify()
public function slugify($replacement = '-')
{
$stringy = self::create($this->str, $this->encoding);
$stringy->str = preg_replace('/[^a-zA-Z\d -]/u', '', $stringy->toAscii());
$stringy->str = preg_replace("/[^a-zA-Z\d $replacement]/u", '', $stringy->toAscii());
$stringy->str = $stringy->collapseWhitespace()->str;
$stringy->str = str_replace(' ', '-', strtolower($stringy->str));
$stringy->str = str_replace(' ', $replacement, strtolower($stringy->str));
return $stringy;
}
/**
* Returns true if the string contains $needle, false otherwise.
* Returns true if the string contains $needle, false otherwise. By default
* the comparison is case-sensitive, but can be made insensitive by setting
* $caseSensitive to false.
*
* @param string $needle Substring to look for
* @param string $needle Substring to look for
* @param bool $caseSensitive Whether or not to enforce case-sensitivity
* @return bool Whether or not $str contains $needle
*/
public function contains($needle)
public function contains($needle, $caseSensitive = true)
{
if (mb_strpos($this->str, $needle, 0, $this->encoding) !== false)
return true;
return false;
if ($caseSensitive)
return (mb_strpos($this->str, $needle, 0, $this->encoding) !== false);
else
return (mb_stripos($this->str, $needle, 0, $this->encoding) !== false);
}
/**
@@ -639,7 +716,7 @@ class Stringy
// If the last word was truncated
if (mb_strpos($stringy->str, ' ', $length - 1, $stringy->encoding) != $length) {
// Find pos of the last occurence of a space, and get everything up until
// Find pos of the last occurrence of a space, and get everything up until
$lastPos = mb_strrpos($truncated, ' ', 0, $stringy->encoding);
$truncated = mb_substr($truncated, 0, $lastPos, $stringy->encoding);
}
@@ -947,7 +1024,7 @@ class Stringy
/**
* Returns true if $str matches the supplied pattern, false otherwise.
*
* @param string Regex pattern to match against
* @param string $pattern Regex pattern to match against
* @return bool Whether or not $str matches the pattern
*/
private function matchesPattern($pattern)
@@ -1049,37 +1126,66 @@ class Stringy
/**
* Returns the number of occurrences of $substring in the given string.
* An alias for mb_substr_count()
* By default, the comparison is case-sensitive, but can be made insensitive
* by setting $caseSensitive to false.
*
* @param string $substring The substring to search for
* @param string $substring The substring to search for
* @param bool $caseSensitive Whether or not to enforce case-sensitivity
* @return int The number of $substring occurrences
*/
public function count($substring)
public function count($substring, $caseSensitive = true)
{
if (!$caseSensitive) {
$str = mb_strtoupper($this->str, $this->encoding);
$substring = mb_strtoupper($substring, $this->encoding);
return mb_substr_count($str, $substring, $this->encoding);
}
return mb_substr_count($this->str, $substring, $this->encoding);
}
/**
* Returns a string with all occurrences of $search replaced with $replace.
* Replaces all occurrences of $search in $str by $replacement.
*
* @param string $search The needle to search for
* @param string $replace The string to replace with
* @param string $search The needle to search for
* @param string $replacement The string to replace with
* @return Stringy Object with the resulting $str after the replacements
*/
public function replace($search, $replace)
public function replace($search, $replacement)
{
$stringy = self::create($this->str, $this->encoding);
$regexEncoding = mb_regex_encoding();
mb_regex_encoding($stringy->encoding);
mb_regex_encoding($this->encoding);
// Don't want the args accidentally being parsed as regex
$quotedSearch = preg_quote($search);
$quotedReplace = preg_quote($replace);
// Don't want the args being parsed as regex
$search = preg_quote($search);
$replacement = preg_quote($replacement);
$stringy->str = mb_ereg_replace($search, $replace, $stringy->str);
$str = mb_ereg_replace($search, $replacement, $this->str);
mb_regex_encoding($regexEncoding);
return $stringy;
return self::create($str, $this->encoding);
}
/**
* Replaces all occurrences of $pattern in $str by $replacement. An alias
* for mb_ereg_replace(). Note that the 'i' option with multibyte patterns
* in mb_ereg_replace() requires PHP 5.4+. This is due to a lack of support
* in the bundled version of Oniguruma in PHP 5.3.
*
* @param string $pattern The regular expression pattern
* @param string $replacement The string to replace with
* @param string $options Matching conditions to be used
* @return Stringy Object with the resulting $str after the replacements
*/
public function regexReplace($pattern, $replacement, $options = 'msr')
{
$regexEncoding = mb_regex_encoding();
mb_regex_encoding($this->encoding);
$str = mb_ereg_replace($pattern, $replacement, $this->str, $options);
mb_regex_encoding($regexEncoding);
return self::create($str, $this->encoding);
}
}

View File

@@ -2,35 +2,31 @@
abstract class CommonTest extends PHPUnit_Framework_TestCase
{
public function stringsForUpperCaseFirst()
public function upperCaseFirstProvider()
{
$testData = array(
return array(
array('Test', 'Test'),
array('Test', 'test'),
array('1a', '1a'),
array('Σ test', 'σ test', 'UTF-8'),
array(' σ test', ' σ test', 'UTF-8')
);
return $testData;
}
public function stringsForLowerCaseFirst()
public function lowerCaseFirstProvider()
{
$testData = array(
return array(
array('test', 'Test'),
array('test', 'test'),
array('1a', '1a'),
array('σ test', 'Σ test', 'UTF-8'),
array(' Σ test', ' Σ test', 'UTF-8')
);
return $testData;
}
public function stringsForCamelize()
public function camelizeProvider()
{
$testData = array(
return array(
array('camelCase', 'CamelCase'),
array('camelCase', 'Camel-Case'),
array('camelCase', 'camel case'),
@@ -45,13 +41,11 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array('στανιλCase', 'Στανιλ case', 'UTF-8'),
array('σamelCase', 'σamel Case', 'UTF-8')
);
return $testData;
}
public function stringsForUpperCamelize()
public function upperCamelizeProvider()
{
$testData = array(
return array(
array('CamelCase', 'camelCase'),
array('CamelCase', 'Camel-Case'),
array('CamelCase', 'camel case'),
@@ -66,13 +60,11 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array('ΣτανιλCase', 'στανιλ case', 'UTF-8'),
array('ΣamelCase', 'Σamel Case', 'UTF-8')
);
return $testData;
}
public function stringsForDasherize()
public function dasherizeProvider()
{
$testData = array(
return array(
array('test-case', 'testCase'),
array('test-case', 'Test-Case'),
array('test-case', 'test case'),
@@ -89,13 +81,11 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array('στανιλ-case', 'Στανιλ case', 'UTF-8'),
array('σash-case', 'Σash Case', 'UTF-8')
);
return $testData;
}
public function stringsForUnderscored()
public function underscoredProvider()
{
$testData = array(
return array(
array('test_case', 'testCase'),
array('test_case', 'Test-Case'),
array('test_case', 'test case'),
@@ -112,63 +102,53 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array('στανιλ_case', 'Στανιλ case', 'UTF-8'),
array('σash_case', 'Σash Case', 'UTF-8')
);
return $testData;
}
public function stringsForSwapCase()
public function swapCaseProvider()
{
$testData = array(
return array(
array('TESTcASE', 'testCase'),
array('tEST-cASE', 'Test-Case'),
array(' - σASH cASE', ' - Σash Case', 'UTF-8'),
array('νΤΑΝΙΛ', 'Ντανιλ', 'UTF-8')
);
return $testData;
}
public function stringsForTitleize()
public function titleizeProvider()
{
$ignore = array('at', 'by', 'for', 'in', 'of', 'on', 'out', 'to', 'the');
$testData = array(
return array(
array('Testing The Method', 'testing the method'),
array('Testing the Method', 'testing the method', $ignore, 'UTF-8'),
array('I Like to Watch DVDs at Home', 'i like to watch DVDs at home',
$ignore, 'UTF-8'),
array('Θα Ήθελα Να Φύγει', ' Θα ήθελα να φύγει ', null, 'UTF-8')
);
return $testData;
}
public function stringsForHumanize()
public function humanizeProvider()
{
$testData = array(
return array(
array('Author', 'author_id'),
array('Test user', ' _test_user_'),
array('Συγγραφέας', ' συγγραφέας_id ', 'UTF-8')
);
return $testData;
}
public function stringsForTidy()
public function tidyProvider()
{
$testData = array(
return array(
array('"I see..."', '“I see…”'),
array("'This too'", "This too"),
array('test-dash', 'test—dash'),
array('Ο συγγραφέας είπε...', 'Ο συγγραφέας είπε…')
);
return $testData;
}
public function stringsForCollapseWhitespace()
public function collapseWhitespaceProvider()
{
$testData = array(
return array(
array('foo bar', ' foo bar '),
array('test string', 'test string'),
array('Ο συγγραφέας', ' Ο συγγραφέας '),
@@ -178,24 +158,23 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array('', ' '),
array('', ''),
);
return $testData;
}
public function stringsForToAscii()
public function toAsciiProvider()
{
$testData = array(
return array(
array('foo bar', 'fòô bàř'),
array(' TEST ', ' ŤÉŚŢ '),
array('φ = z = 3', 'φ = ź = 3')
array('φ = z = 3', 'φ = ź = 3'),
array('perevirka', 'перевірка'),
array('lysaya gora', 'лысая гора'),
array('shchuka', 'щука')
);
return $testData;
}
public function stringsForPad()
public function padProvider()
{
$testData = array(
return array(
// $length <= $str
array('foo bar', 'foo bar', -1),
array('foo bar', 'foo bar', 7),
@@ -232,47 +211,39 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array('¬øfòô bàř¬ø', 'fòô bàř', 11, '¬øÿ', 'both', 'UTF-8'),
array('¬øfòô bàř¬øÿ', 'fòô bàř', 12, '¬øÿ', 'both', 'UTF-8')
);
return $testData;
}
public function stringsForPadLeft()
public function padLeftProvider()
{
$testData = array(
return array(
array(' foo bar', 'foo bar', 9),
array('_*_foo bar', 'foo bar', 10, '_*'),
array('¬ø¬øfòô bàř', 'fòô bàř', 11, '¬ø', 'UTF-8'),
);
return $testData;
}
public function stringsForPadRight()
public function padRightProvider()
{
$testData = array(
return array(
array('foo bar ', 'foo bar', 9),
array('foo bar_*_', 'foo bar', 10, '_*'),
array('fòô bàř¬ø¬ø', 'fòô bàř', 11, '¬ø', 'UTF-8'),
);
return $testData;
}
public function stringsForPadBoth()
public function padBothProvider()
{
$testData = array(
return array(
array('foo bar ', 'foo bar', 8),
array(' foo bar ', 'foo bar', 9, ' '),
array('¬fòô bàř¬ø', 'fòô bàř', 10, '¬øÿ', 'UTF-8'),
array('¬øfòô bàř¬øÿ', 'fòô bàř', 12, '¬øÿ', 'UTF-8')
);
return $testData;
}
public function stringsForStartsWith()
public function startsWithProvider()
{
$testData = array(
return array(
array(true, 'foo bars', 'foo bar'),
array(true, 'FOO bars', 'foo bar', false),
array(true, 'FOO bars', 'foo BAR', false),
@@ -285,13 +256,11 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array(false, 'FÒÔ bàřs', 'fòô bàř', true, 'UTF-8'),
array(false, 'fòô bàřs', 'fòô BÀŘ', true, 'UTF-8'),
);
return $testData;
}
public function stringsForEndsWith()
public function endsWithProvider()
{
$testData = array(
return array(
array(true, 'foo bars', 'o bars'),
array(true, 'FOO bars', 'o bars', false),
array(true, 'FOO bars', 'o BARs', false),
@@ -304,13 +273,11 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array(false, 'FÒÔ bàřs', 'fòô bàřs', true, 'UTF-8'),
array(false, 'fòô bàřs', 'fòô BÀŘS', true, 'UTF-8'),
);
return $testData;
}
public function stringsForToSpaces()
public function toSpacesProvider()
{
$testData = array(
return array(
array(' foo bar ', ' foo bar '),
array(' foo bar ', ' foo bar ', 5),
array(' foo bar ', ' foo bar ', 2),
@@ -318,72 +285,99 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array(" foo\n bar", " foo\n bar"),
array(" fòô\n bàř", " fòô\n bàř")
);
return $testData;
}
public function stringsForToTabs()
public function toTabsProvider()
{
$testData = array(
return array(
array(' foo bar ', ' foo bar '),
array(' foo bar ', ' foo bar ', 5),
array(' foo bar ', ' foo bar ', 2),
array(" foo\n bar", " foo\n bar"),
array(" fòô\n bàř", " fòô\n bàř")
);
return $testData;
}
public function stringsForSlugify()
public function toLowerCaseProvider()
{
$testData = array(
return array(
array('foo bar', 'FOO BAR'),
array(' foo_bar ', ' FOO_bar '),
array('fòô bàř', 'FÒÔ BÀŘ', 'UTF-8'),
array(' fòô_bàř ', ' FÒÔ_bàř ', 'UTF-8'),
array('αυτοκίνητο', 'ΑΥΤΟΚΊΝΗΤΟ', 'UTF-8'),
);
}
public function toUpperCaseProvider()
{
return array(
array('FOO BAR', 'foo bar'),
array(' FOO_BAR ', ' FOO_bar '),
array('FÒÔ BÀŘ', 'fòô bàř', 'UTF-8'),
array(' FÒÔ_BÀŘ ', ' FÒÔ_bàř ', 'UTF-8'),
array('ΑΥΤΟΚΊΝΗΤΟ', 'αυτοκίνητο', 'UTF-8'),
);
}
public function slugifyProvider()
{
return array(
array('foo-bar', ' foo bar '),
array('foo-dbar', " Foo d'Bar "),
array('a-string-with-dashes', 'A string-with-dashes'),
array('using-strings-like-foo-bar', 'Using strings like fòô bàř'),
array('unrecognized-chars-like', 'unrecognized chars like συγγρ'),
array('numbers-1234', 'numbers 1234')
array('numbers-1234', 'numbers 1234'),
array('perevirka-ryadka', 'перевірка рядка'),
array('bukvar-s-bukvoy-y', 'букварь с буквой ы'),
array('barzi-i-yarostni', 'бързи и яростни'),
array('foo:bar:baz', 'Foo bar baz', ':'),
array('a_string_with_underscores', 'A_string with_underscores', '_')
);
return $testData;
}
public function stringsForContains()
public function containsProvider()
{
$testData = array(
return array(
array(true, 'This string contains foo bar', 'foo bar'),
array(true, '12398!@(*%!@# @!%#*&^%', ' @!%#*&^%'),
array(true, 'Ο συγγραφέας είπε', 'συγγραφέας', 'UTF-8'),
array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', 'å´¥©', 'UTF-8'),
array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', 'å˚ ∆', 'UTF-8'),
array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', 'øœ¬', 'UTF-8'),
array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', 'å´¥©', true, 'UTF-8'),
array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', 'å˚ ∆', true, 'UTF-8'),
array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', 'øœ¬', true, 'UTF-8'),
array(false, 'This string contains foo bar', 'Foo bar'),
array(false, 'This string contains foo bar', 'foobar'),
array(false, 'This string contains foo bar', 'foo bar '),
array(false, 'Ο συγγραφέας είπε', ' συγγραφέας ', 'UTF-8'),
array(false, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', ' ßå˚', 'UTF-8')
array(false, 'Ο συγγραφέας είπε', ' συγγραφέας ', true, 'UTF-8'),
array(false, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', ' ßå˚', true, 'UTF-8'),
array(true, 'This string contains foo bar', 'Foo bar', false),
array(true, '12398!@(*%!@# @!%#*&^%', ' @!%#*&^%', false),
array(true, 'Ο συγγραφέας είπε', 'ΣΥΓΓΡΑΦΈΑΣ', false, 'UTF-8'),
array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', 'Å´¥©', false, 'UTF-8'),
array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', 'Å˚ ∆', false, 'UTF-8'),
array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', 'ØŒ¬', false, 'UTF-8'),
array(false, 'This string contains foo bar', 'foobar', false),
array(false, 'This string contains foo bar', 'foo bar ', false),
array(false, 'Ο συγγραφέας είπε', ' συγγραφέας ', false, 'UTF-8'),
array(false, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', ' ßÅ˚', false, 'UTF-8')
);
return $testData;
}
public function stringsForSurround()
public function surroundProvider()
{
$testData = array(
return array(
array('__foobar__', 'foobar', '__'),
array('test', 'test', ''),
array('**', '', '*'),
array('¬fòô bàř¬', 'fòô bàř', '¬'),
array('ßå∆˚ test ßå∆˚', ' test ', 'ßå∆˚')
);
return $testData;
}
public function stringsForInsert()
public function insertProvider()
{
$testData = array(
return array(
array('foo bar', 'oo bar', 'f', 0),
array('foo bar', 'f bar', 'oo', 1),
array('f bar', 'f bar', 'oo', 20),
@@ -392,13 +386,11 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array('fòô bàř', 'f bàř', 'òô', 1, 'UTF-8'),
array('fòô bàř', 'fòô bà', 'ř', 6, 'UTF-8')
);
return $testData;
}
public function stringsForTruncate()
public function truncateProvider()
{
$testData = array(
return array(
array('Test foo bar', 'Test foo bar', 12),
array('Test foo ba', 'Test foo bar', 11),
array('Test foo', 'Test foo bar', 8),
@@ -422,13 +414,11 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array('Teϰϰ', 'Test fòô bàř', 4, 'ϰϰ', 'UTF-8'),
array('What are your pl...', 'What are your plans today?', 19, '...')
);
return $testData;
}
public function stringsForSafeTruncate()
public function safeTruncateProvider()
{
$testData = array(
return array(
array('Test foo bar', 'Test foo bar', 12),
array('Test foo', 'Test foo bar', 11),
array('Test foo', 'Test foo bar', 8),
@@ -452,37 +442,31 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array('ϰϰ', 'Test fòô bàř', 4, 'ϰϰ', 'UTF-8'),
array('What are your plans...', 'What are your plans today?', 22, '...')
);
return $testData;
}
public function stringsForReverse()
public function reverseProvider()
{
$testData = array(
return array(
array('', ''),
array('raboof', 'foobar'),
array('řàbôòf', 'fòôbàř', 'UTF-8'),
array('řàb ôòf', 'fòô bàř', 'UTF-8'),
array('∂∆ ˚åß', 'ßå˚ ∆∂', 'UTF-8')
);
return $testData;
}
public function stringsForShuffle()
public function shuffleProvider()
{
$testData = array(
return array(
array('foo bar'),
array('∂∆ ˚åß', 'UTF-8'),
array('å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', 'UTF-8')
);
return $testData;
}
public function stringsForTrim()
public function trimProvider()
{
$testData = array(
return array(
array('foo bar', ' foo bar '),
array('foo bar', ' foo bar'),
array('foo bar', 'foo bar '),
@@ -492,13 +476,11 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array('fòô bàř', 'fòô bàř '),
array('fòô bàř', "\n\t fòô bàř \n\t")
);
return $testData;
}
public function stringsForLongestCommonPrefix()
public function longestCommonPrefixProvider()
{
$testData = array(
return array(
array('foo', 'foobar', 'foo bar'),
array('foo bar', 'foo bar', 'foo bar'),
array('f', 'foo bar', 'far boo'),
@@ -510,13 +492,11 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array('', 'toy car', 'fòô bar', 'UTF-8'),
array('', 'fòô bar', '', 'UTF-8'),
);
return $testData;
}
public function stringsForLongestCommonSuffix()
public function longestCommonSuffixProvider()
{
$testData = array(
return array(
array('bar', 'foobar', 'foo bar'),
array('foo bar', 'foo bar', 'foo bar'),
array('ar', 'foo bar', 'boo far'),
@@ -528,13 +508,11 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array('', 'toy car', 'fòô bàř', 'UTF-8'),
array('', 'fòô bàř', '', 'UTF-8'),
);
return $testData;
}
public function stringsForLongestCommonSubstring()
public function longestCommonSubstringProvider()
{
$testData = array(
return array(
array('foo', 'foobar', 'foo bar'),
array('foo bar', 'foo bar', 'foo bar'),
array('oo ', 'foo bar', 'boo far'),
@@ -546,25 +524,21 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array(' ', 'toy car', 'fòô bàř', 'UTF-8'),
array('', 'fòô bàř', '', 'UTF-8'),
);
return $testData;
}
public function stringsForLength()
public function lengthProvider()
{
$testData = array(
return array(
array(11, ' foo bar '),
array(1, 'f'),
array(0, ''),
array(7, 'fòô bàř', 'UTF-8')
);
return $testData;
}
public function stringsForSubstr()
public function substrProvider()
{
$testData = array(
return array(
array('foo bar', 'foo bar', 0),
array('bar', 'foo bar', 4),
array('bar', 'foo bar', 4, null),
@@ -575,13 +549,11 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array('ô b', 'fòô bàř', 2, 3, 'UTF-8'),
array('', 'fòô bàř', 4, 0, 'UTF-8')
);
return $testData;
}
public function stringsForAt()
public function atProvider()
{
$testData = array(
return array(
array('f', 'foo bar', 0),
array('o', 'foo bar', 1),
array('r', 'foo bar', 6),
@@ -591,13 +563,11 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array('ř', 'fòô bàř', 6, 'UTF-8'),
array('', 'fòô bàř', 7, 'UTF-8'),
);
return $testData;
}
public function stringsForFirst()
public function firstProvider()
{
$testData = array(
return array(
array('', 'foo bar', -5),
array('', 'foo bar', 0),
array('f', 'foo bar', 1),
@@ -611,13 +581,11 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array('fòô bàř', 'fòô bàř', 7, 'UTF-8'),
array('fòô bàř', 'fòô bàř', 8, 'UTF-8'),
);
return $testData;
}
public function stringsForLast()
public function lastProvider()
{
$testData = array(
return array(
array('', 'foo bar', -5),
array('', 'foo bar', 0),
array('r', 'foo bar', 1),
@@ -631,13 +599,11 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array('fòô bàř', 'fòô bàř', 7, 'UTF-8'),
array('fòô bàř', 'fòô bàř', 8, 'UTF-8'),
);
return $testData;
}
public function stringsForEnsureLeft()
public function ensureLeftProvider()
{
$testData = array(
return array(
array('foobar', 'foobar', 'f'),
array('foobar', 'foobar', 'foo'),
array('foo/foobar', 'foobar', 'foo/'),
@@ -649,13 +615,11 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array('http://fòôbàř', 'fòôbàř', 'http://', 'UTF-8'),
array('http://fòôbàř', 'http://fòôbàř', 'http://', 'UTF-8'),
);
return $testData;
}
public function stringsForEnsureRight()
public function ensureRightProvider()
{
$testData = array(
return array(
array('foobar', 'foobar', 'r'),
array('foobar', 'foobar', 'bar'),
array('foobar/bar', 'foobar', '/bar'),
@@ -667,13 +631,11 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array('fòôbàř.com/', 'fòôbàř', '.com/', 'UTF-8'),
array('fòôbàř.com/', 'fòôbàř.com/', '.com/', 'UTF-8'),
);
return $testData;
}
public function stringsForRemoveLeft()
public function removeLeftProvider()
{
$testData = array(
return array(
array('foo bar', 'foo bar', ''),
array('oo bar', 'foo bar', 'f'),
array('bar', 'foo bar', 'foo '),
@@ -685,13 +647,11 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array('fòô bàř', 'fòô bàř', 'òô', 'UTF-8'),
array('fòô bàř', 'fòô bàř', 'òô bàř', 'UTF-8')
);
return $testData;
}
public function stringsForRemoveRight()
public function removeRightProvider()
{
$testData = array(
return array(
array('foo bar', 'foo bar', ''),
array('foo ba', 'foo bar', 'r'),
array('foo', 'foo bar', ' bar'),
@@ -703,13 +663,11 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array('fòô bàř', 'fòô bàř', 'bà', 'UTF-8'),
array('fòô bàř', 'fòô bàř', 'fòô bà', 'UTF-8')
);
return $testData;
}
public function stringsForIsAlpha()
public function isAlphaProvider()
{
$testData = array(
return array(
array(true, ''),
array(true, 'foobar'),
array(false, 'foo bar'),
@@ -721,13 +679,11 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array(false, 'ҠѨњ¨ˆфгШ', 'UTF-8'),
array(true, '丹尼爾', 'UTF-8')
);
return $testData;
}
public function stringsForIsAlphanumeric()
public function isAlphanumericProvider()
{
$testData = array(
return array(
array(true, ''),
array(true, 'foobar1'),
array(false, 'foo bar'),
@@ -742,13 +698,11 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array(true, انيال1', 'UTF-8'),
array(false, انيال1 ', 'UTF-8')
);
return $testData;
}
public function stringsForIsBlank()
public function isBlankProvider()
{
$testData = array(
return array(
array(true, ''),
array(true, ' '),
array(true, "\n\t "),
@@ -762,13 +716,11 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array(false, ' z', 'UTF-8'),
array(false, ' 1', 'UTF-8'),
);
return $testData;
}
public function stringsForIsJson()
public function isJsonProvider()
{
$testData = array(
return array(
array(false, ''),
array(false, '123'),
array(true, '{"foo": "bar"}'),
@@ -784,13 +736,11 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array(true, '["fòô"]', 'UTF-8'),
array(false, '{"fòô": "bàř"]', 'UTF-8'),
);
return $testData;
}
public function stringsForIsLowerCase()
public function isLowerCaseProvider()
{
$testData = array(
return array(
array(true, ''),
array(true, 'foobar'),
array(false, 'foo bar'),
@@ -800,13 +750,11 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array(false, 'fòô bàř', 'UTF-8'),
array(false, 'fòôbÀŘ', 'UTF-8'),
);
return $testData;
}
public function stringsForIsSerialized()
public function isSerializedProvider()
{
$testData = array(
return array(
array(false, ''),
array(true, 'a:1:{s:3:"foo";s:3:"bar";}'),
array(false, 'a:1:{s:3:"foo";s:3:"bar"}'),
@@ -815,13 +763,11 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array(false, 'a:1:{s:5:"fòô";s:5:"bàř"}', 'UTF-8'),
array(true, serialize(array('fòô' => 'bár')), 'UTF-8'),
);
return $testData;
}
public function stringsForIsUpperCase()
public function isUpperCaseProvider()
{
$testData = array(
return array(
array(true, ''),
array(true, 'FOOBAR'),
array(false, 'FOO BAR'),
@@ -831,13 +777,11 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array(false, 'FÒÔ BÀŘ', 'UTF-8'),
array(false, 'FÒÔBàř', 'UTF-8'),
);
return $testData;
}
public function stringsForIsHexadecimal()
public function isHexadecimalProvider()
{
$testData = array(
return array(
array(true, ''),
array(true, 'abcdef'),
array(true, 'ABCDEF'),
@@ -852,13 +796,11 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array(false, '0123456789x', 'UTF-8'),
array(false, 'ABCDEFx', 'UTF-8'),
);
return $testData;
}
public function stringsForCount()
public function countProvider()
{
$testData = array(
return array(
array(0, '', 'foo'),
array(0, 'foo', 'bar'),
array(1, 'foo bar', 'foo'),
@@ -866,29 +808,47 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array(0, '', 'fòô', 'UTF-8'),
array(0, 'fòô', 'bàř', 'UTF-8'),
array(1, 'fòô bàř', 'fòô', 'UTF-8'),
array(2, 'fôòô bàř', 'ô', 'UTF-8')
array(2, 'fôòô bàř', 'ô', 'UTF-8'),
array(0, 'fÔÒÔ bàř', 'ô', 'UTF-8'),
array(0, 'foo', 'BAR', false),
array(1, 'foo bar', 'FOo', false),
array(2, 'foo bar', 'O', false),
array(1, 'fòô bàř', 'fÒÔ', false, 'UTF-8'),
array(2, 'fôòô bàř', 'Ô', false, 'UTF-8'),
array(2, 'συγγραφέας', 'Σ', false, 'UTF-8')
);
return $testData;
}
public function stringsForReplace()
public function replaceProvider()
{
$testData = array(
return array(
array('', '', '', ''),
array('foo', '', '', 'foo'),
array('foo', '\s', '\s', 'foo'),
array('foo bar', 'foo bar', '', ''),
array('bar', 'foo bar', 'foo ', ''),
array('far bar', 'foo bar', 'foo', 'far'),
array('bar bar', 'foo bar foo bar', 'foo ', ''),
array('', '', '', '', 'UTF-8'),
array('fòô', '', '', 'fòô', 'UTF-8'),
array('fòô', '\s', '\s', 'fòô', 'UTF-8'),
array('fòô bàř', 'fòô bàř', '', '', 'UTF-8'),
array('bàř', 'fòô bàř', 'fòô ', '', 'UTF-8'),
array('far bàř', 'fòô bàř', 'fòô', 'far', 'UTF-8'),
array('bàř bàř', 'fòô bàř fòô bàř', 'fòô ', '', 'UTF-8'),
);
}
return $testData;
public function regexReplaceProvider()
{
return array(
array('', '', '', ''),
array('bar', 'foo', 'f[o]+', 'bar'),
array('bar', 'foo bar', 'f[O]+\s', '', 'i'),
array('foo', 'bar', '[[:alpha:]]{3}', 'foo'),
array('', '', '', '', 'msr', 'UTF-8'),
array('bàř', 'fòô ', 'f[òô]+\s', 'bàř', 'msr', 'UTF-8'),
array('fòô', 'bàř', '[[:alpha:]]{3}', 'fòô', 'msr', 'UTF-8')
);
}
}

View File

@@ -8,7 +8,7 @@ use Stringy\StaticStringy as S;
class StaticStringyTestCase extends CommonTest
{
/**
* @dataProvider stringsForUpperCaseFirst
* @dataProvider upperCaseFirstProvider()
*/
public function testUpperCaseFirst($expected, $str, $encoding = null)
{
@@ -18,7 +18,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForLowerCaseFirst
* @dataProvider lowerCaseFirstProvider()
*/
public function testLowerCaseFirst($expected, $str, $encoding = null)
{
@@ -28,7 +28,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForCamelize
* @dataProvider camelizeProvider()
*/
public function testCamelize($expected, $str, $encoding = null)
{
@@ -38,7 +38,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForUpperCamelize
* @dataProvider upperCamelizeProvider()
*/
public function testUpperCamelize($expected, $str, $encoding = null)
{
@@ -48,7 +48,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForDasherize
* @dataProvider dasherizeProvider()
*/
public function testDasherize($expected, $str, $encoding = null)
{
@@ -58,7 +58,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForUnderscored
* @dataProvider underscoredProvider()
*/
public function testUnderscored($expected, $str, $encoding = null)
{
@@ -68,7 +68,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForSwapCase
* @dataProvider swapCaseProvider()
*/
public function testSwapCase($expected, $str, $encoding = null)
{
@@ -78,7 +78,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForTitleize
* @dataProvider titleizeProvider()
*/
public function testTitleize($expected, $str, $ignore = null,
$encoding = null)
@@ -89,7 +89,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForHumanize
* @dataProvider humanizeProvider()
*/
public function testHumanize($expected, $str, $encoding = null)
{
@@ -99,7 +99,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForTidy
* @dataProvider tidyProvider()
*/
public function testTidy($expected, $str)
{
@@ -109,7 +109,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForCollapseWhitespace
* @dataProvider collapseWhitespaceProvider()
*/
public function testCollapseWhitespace($expected, $str, $encoding = null)
{
@@ -119,7 +119,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForToAscii
* @dataProvider toAsciiProvider()
*/
public function testToAscii($expected, $str)
{
@@ -129,7 +129,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForPad
* @dataProvider padProvider()
*/
public function testPad($expected, $str, $length, $padStr = ' ',
$padType = 'right', $encoding = null)
@@ -140,7 +140,15 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForPadLeft
* @expectedException \InvalidArgumentException
*/
public function testPadException()
{
$result = S::pad('string', 5, 'foo', 'bar');
}
/**
* @dataProvider padLeftProvider()
*/
public function testPadLeft($expected, $str, $length, $padStr = ' ',
$encoding = null)
@@ -151,7 +159,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForPadRight
* @dataProvider padRightProvider()
*/
public function testPadRight($expected, $str, $length, $padStr = ' ',
$encoding = null)
@@ -162,7 +170,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForPadBoth
* @dataProvider padBothProvider()
*/
public function testPadBoth($expected, $str, $length, $padStr = ' ',
$encoding = null)
@@ -173,10 +181,10 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForStartsWith
* @dataProvider startsWithProvider()
*/
public function testStartsWith($expected, $str, $substring,
$caseSensitive = true, $encoding = null)
$caseSensitive = true, $encoding = null)
{
$result = S::startsWith($str, $substring, $caseSensitive, $encoding);
$this->assertInternalType('boolean', $result);
@@ -184,10 +192,10 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForEndsWith
* @dataProvider endsWithProvider()
*/
public function testEndsWith($expected, $str, $substring,
$caseSensitive = true, $encoding = null)
$caseSensitive = true, $encoding = null)
{
$result = S::endsWith($str, $substring, $caseSensitive, $encoding);
$this->assertInternalType('boolean', $result);
@@ -195,7 +203,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForToSpaces
* @dataProvider toSpacesProvider()
*/
public function testToSpaces($expected, $str, $tabLength = 4)
{
@@ -205,7 +213,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForToTabs
* @dataProvider toTabsProvider()
*/
public function testToTabs($expected, $str, $tabLength = 4)
{
@@ -215,27 +223,48 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForSlugify
* @dataProvider toLowerCaseProvider()
*/
public function testSlugify($expected, $str)
public function testToLowerCase($expected, $str, $encoding = null)
{
$result = S::slugify($str);
$result = S::toLowerCase($str, $encoding);
$this->assertInternalType('string', $result);
$this->assertEquals($expected, $result);
}
/**
* @dataProvider stringsForContains
* @dataProvider toUpperCaseProvider()
*/
public function testContains($expected, $haystack, $needle, $encoding = null)
public function testToUpperCase($expected, $str, $encoding = null)
{
$result = S::contains($haystack, $needle, $encoding);
$result = S::toUpperCase($str, $encoding);
$this->assertInternalType('string', $result);
$this->assertEquals($expected, $result);
}
/**
* @dataProvider slugifyProvider()
*/
public function testSlugify($expected, $str, $replacement = '-')
{
$result = S::slugify($str, $replacement);
$this->assertInternalType('string', $result);
$this->assertEquals($expected, $result);
}
/**
* @dataProvider containsProvider()
*/
public function testContains($expected, $haystack, $needle,
$caseSensitive = true, $encoding = null)
{
$result = S::contains($haystack, $needle, $caseSensitive, $encoding);
$this->assertInternalType('boolean', $result);
$this->assertEquals($expected, $result);
}
/**
* @dataProvider stringsForSurround
* @dataProvider surroundProvider()
*/
public function testSurround($expected, $str, $substring)
{
@@ -245,7 +274,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForInsert
* @dataProvider insertProvider()
*/
public function testInsert($expected, $str, $substring, $index,
$encoding = null)
@@ -256,7 +285,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForTruncate
* @dataProvider truncateProvider()
*/
public function testTruncate($expected, $str, $length, $substring = '',
$encoding = null)
@@ -267,7 +296,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForSafeTruncate
* @dataProvider safeTruncateProvider()
*/
public function testSafeTruncate($expected, $str, $length, $substring = '',
$encoding = null)
@@ -278,7 +307,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForReverse
* @dataProvider reverseProvider()
*/
public function testReverse($expected, $str, $encoding = null)
{
@@ -288,7 +317,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForShuffle
* @dataProvider shuffleProvider()
*/
public function testShuffle($str, $encoding = null)
{
@@ -309,7 +338,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForTrim
* @dataProvider trimProvider()
*/
public function testTrim($expected, $str)
{
@@ -319,7 +348,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForLongestCommonPrefix
* @dataProvider longestCommonPrefixProvider()
*/
public function testLongestCommonPrefix($expected, $str, $otherStr,
$encoding = null)
@@ -330,7 +359,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForLongestCommonSuffix
* @dataProvider longestCommonSuffixProvider()
*/
public function testLongestCommonSuffix($expected, $str, $otherStr,
$encoding = null)
@@ -341,7 +370,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForLongestCommonSubstring
* @dataProvider longestCommonSubstringProvider()
*/
public function testLongestCommonSubstring($expected, $str, $otherStr,
$encoding = null)
@@ -352,7 +381,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForLength
* @dataProvider lengthProvider()
*/
public function testLength($expected, $str, $encoding = null)
{
@@ -362,7 +391,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForSubstr
* @dataProvider substrProvider()
*/
public function testSubstr($expected, $str, $start, $length = null,
$encoding = null)
@@ -373,7 +402,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForAt
* @dataProvider atProvider()
*/
public function testAt($expected, $str, $index, $encoding = null)
{
@@ -383,7 +412,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForFirst
* @dataProvider firstProvider()
*/
public function testFirst($expected, $str, $n, $encoding = null)
{
@@ -393,7 +422,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForLast
* @dataProvider lastProvider()
*/
public function testLast($expected, $str, $n, $encoding = null)
{
@@ -403,7 +432,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForEnsureLeft
* @dataProvider ensureLeftProvider()
*/
public function testEnsureLeft($expected, $str, $substring, $encoding = null)
{
@@ -413,7 +442,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForEnsureRight
* @dataProvider ensureRightProvider()
*/
public function testEnsureRight($expected, $str, $substring, $encoding = null)
{
@@ -423,7 +452,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForRemoveLeft
* @dataProvider removeLeftProvider()
*/
public function testRemoveLeft($expected, $str, $substring, $encoding = null)
{
@@ -433,7 +462,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForRemoveRight
* @dataProvider removeRightProvider()
*/
public function testRemoveRight($expected, $str, $substring, $encoding = null)
{
@@ -443,7 +472,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForIsAlpha
* @dataProvider isAlphaProvider()
*/
public function testIsAlpha($expected, $str, $encoding = null)
{
@@ -453,7 +482,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForIsAlphanumeric
* @dataProvider isAlphanumericProvider()
*/
public function testIsAlphanumeric($expected, $str, $encoding = null)
{
@@ -463,7 +492,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForIsBlank
* @dataProvider isBlankProvider()
*/
public function testIsBlank($expected, $str, $encoding = null)
{
@@ -471,9 +500,9 @@ class StaticStringyTestCase extends CommonTest
$this->assertInternalType('boolean', $result);
$this->assertEquals($expected, $result);
}
/**
* @dataProvider stringsForIsJson
* @dataProvider isJsonProvider()
*/
public function testIsJson($expected, $str, $encoding = null)
{
@@ -483,7 +512,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForIsLowerCase
* @dataProvider isLowerCaseProvider()
*/
public function testIsLowerCase($expected, $str, $encoding = null)
{
@@ -493,7 +522,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForIsSerialized
* @dataProvider isSerializedProvider()
*/
public function testIsSerialized($expected, $str, $encoding = null)
{
@@ -503,7 +532,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForIsUpperCase
* @dataProvider isUpperCaseProvider()
*/
public function testIsUpperCase($expected, $str, $encoding = null)
{
@@ -513,7 +542,7 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForIsHexadecimal
* @dataProvider isHexadecimalProvider()
*/
public function testIsHexadecimal($expected, $str, $encoding = null)
{
@@ -523,22 +552,34 @@ class StaticStringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForCount
* @dataProvider countProvider()
*/
public function testCount($expected, $str, $substring, $encoding = null)
public function testCount($expected, $str, $substring, $caseSensitive = true,
$encoding = null)
{
$result = S::count($str, $substring, $encoding);
$result = S::count($str, $substring, $caseSensitive, $encoding);
$this->assertInternalType('int', $result);
$this->assertEquals($expected, $result);
}
/**
* @dataProvider stringsForReplace
* @dataProvider replaceProvider()
*/
public function testReplace($expected, $str, $search, $replace,
public function testReplace($expected, $str, $search, $replacement,
$encoding = null)
{
$result = S::replace($str, $search, $replace, $encoding);
$result = S::replace($str, $search, $replacement, $encoding);
$this->assertInternalType('string', $result);
$this->assertEquals($expected, $result);
}
/**
* @dataProvider regexReplaceProvider()
*/
public function testRegexReplace($expected, $str, $pattern, $replacement,
$options = 'msr', $encoding = null)
{
$result = S::regexReplace($str, $pattern, $replacement, $options, $encoding);
$this->assertInternalType('string', $result);
$this->assertEquals($expected, $result);
}

View File

@@ -11,15 +11,54 @@ class StringyTestCase extends CommonTest
{
$stringy = new S('foo bar', 'UTF-8');
$this->assertInstanceOf('Stringy\Stringy', $stringy);
$this->assertEquals('foo bar', $stringy->str);
$this->assertEquals('foo bar', (string) $stringy);
$this->assertEquals('UTF-8', $stringy->encoding);
}
/**
* @expectedException InvalidArgumentException
*/
public function testConstructWithArray()
{
(string) new S(array());
$this->fail('Expecting exception when the constructor is passed an array');
}
/**
* @expectedException InvalidArgumentException
*/
public function testMissingToString()
{
(string) new S(new stdClass());
$this->fail('Expecting exception when the constructor is passed an ' .
'object without a __toString method');
}
/**
* @dataProvider toStringProvider()
*/
public function testToString($expected, $str)
{
$this->assertEquals($expected, (string) new S($str));
}
public function toStringProvider()
{
return array(
array('', null),
array('', false),
array('1', true),
array('-9', -9),
array('1.18', 1.18),
array(' string ', ' string ')
);
}
public function testCreate()
{
$stringy = S::create('foo bar', 'UTF-8');
$this->assertInstanceOf('Stringy\Stringy', $stringy);
$this->assertEquals('foo bar', $stringy->str);
$this->assertEquals('foo bar', (string) $stringy);
$this->assertEquals('UTF-8', $stringy->encoding);
}
@@ -32,7 +71,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForUpperCaseFirst
* @dataProvider upperCaseFirstProvider()
*/
public function testUpperCaseFirst($expected, $str, $encoding = null)
{
@@ -42,7 +81,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForLowerCaseFirst
* @dataProvider lowerCaseFirstProvider()
*/
public function testLowerCaseFirst($expected, $str, $encoding = null)
{
@@ -54,7 +93,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForCamelize
* @dataProvider camelizeProvider()
*/
public function testCamelize($expected, $str, $encoding = null)
{
@@ -66,7 +105,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForUpperCamelize
* @dataProvider upperCamelizeProvider()
*/
public function testUpperCamelize($expected, $str, $encoding = null)
{
@@ -78,7 +117,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForDasherize
* @dataProvider dasherizeProvider()
*/
public function testDasherize($expected, $str, $encoding = null)
{
@@ -90,7 +129,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForUnderscored
* @dataProvider underscoredProvider()
*/
public function testUnderscored($expected, $str, $encoding = null)
{
@@ -102,7 +141,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForSwapCase
* @dataProvider swapCaseProvider()
*/
public function testSwapCase($expected, $str, $encoding = null)
{
@@ -114,7 +153,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForTitleize
* @dataProvider titleizeProvider()
*/
public function testTitleize($expected, $str, $ignore = null,
$encoding = null)
@@ -127,7 +166,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForHumanize
* @dataProvider humanizeProvider()
*/
public function testHumanize($expected, $str, $encoding = null)
{
@@ -139,7 +178,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForTidy
* @dataProvider tidyProvider()
*/
public function testTidy($expected, $str)
{
@@ -151,7 +190,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForCollapseWhitespace
* @dataProvider collapseWhitespaceProvider()
*/
public function testCollapseWhitespace($expected, $str, $encoding = null)
{
@@ -163,7 +202,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForToAscii
* @dataProvider toAsciiProvider()
*/
public function testToAscii($expected, $str)
{
@@ -175,7 +214,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForPad
* @dataProvider padProvider()
*/
public function testPad($expected, $str, $length, $padStr = ' ',
$padType = 'right', $encoding = null)
@@ -188,7 +227,16 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForPadLeft
* @expectedException \InvalidArgumentException
*/
public function testPadException()
{
$stringy = S::create('foo');
$result = $stringy->pad(5, 'foo', 'bar');
}
/**
* @dataProvider padLeftProvider()
*/
public function testPadLeft($expected, $str, $length, $padStr = ' ',
$encoding = null)
@@ -201,7 +249,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForPadRight
* @dataProvider padRightProvider()
*/
public function testPadRight($expected, $str, $length, $padStr = ' ',
$encoding = null)
@@ -214,7 +262,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForPadBoth
* @dataProvider padBothProvider()
*/
public function testPadBoth($expected, $str, $length, $padStr = ' ',
$encoding = null)
@@ -227,10 +275,10 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForStartsWith
* @dataProvider startsWithProvider()
*/
public function testStartsWith($expected, $str, $substring,
$caseSensitive = true, $encoding = null)
$caseSensitive = true, $encoding = null)
{
$stringy = S::create($str, $encoding);
$result = $stringy->startsWith($substring, $caseSensitive);
@@ -240,10 +288,10 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForEndsWith
* @dataProvider endsWithProvider()
*/
public function testEndsWith($expected, $str, $substring,
$caseSensitive = true, $encoding = null)
$caseSensitive = true, $encoding = null)
{
$stringy = S::create($str, $encoding);
$result = $stringy->endsWith($substring, $caseSensitive);
@@ -253,7 +301,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForToSpaces
* @dataProvider toSpacesProvider()
*/
public function testToSpaces($expected, $str, $tabLength = 4)
{
@@ -265,7 +313,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForToTabs
* @dataProvider toTabsProvider()
*/
public function testToTabs($expected, $str, $tabLength = 4)
{
@@ -277,31 +325,56 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForSlugify
* @dataProvider toLowerCaseProvider()
*/
public function testSlugify($expected, $str)
public function testToLowerCase($expected, $str, $encoding = null)
{
$stringy = S::create($str);
$result = $stringy->slugify();
$stringy = S::create($str, $encoding);
$result = $stringy->toLowerCase();
$this->assertInstanceOf('Stringy\Stringy', $result);
$this->assertEquals($expected, $result);
$this->assertEquals($str, $stringy);
}
/**
* @dataProvider stringsForContains
* @dataProvider toUpperCaseProvider()
*/
public function testContains($expected, $haystack, $needle, $encoding = null)
public function testToUpperCase($expected, $str, $encoding = null)
{
$stringy = S::create($str, $encoding);
$result = $stringy->toUpperCase();
$this->assertInstanceOf('Stringy\Stringy', $result);
$this->assertEquals($expected, $result);
$this->assertEquals($str, $stringy);
}
/**
* @dataProvider slugifyProvider()
*/
public function testSlugify($expected, $str, $replacement = '-')
{
$stringy = S::create($str);
$result = $stringy->slugify($replacement);
$this->assertInstanceOf('Stringy\Stringy', $result);
$this->assertEquals($expected, $result);
$this->assertEquals($str, $stringy);
}
/**
* @dataProvider containsProvider()
*/
public function testContains($expected, $haystack, $needle,
$caseSensitive = true, $encoding = null)
{
$stringy = S::create($haystack, $encoding);
$result = $stringy->contains($needle);
$result = $stringy->contains($needle, $caseSensitive);
$this->assertInternalType('boolean', $result);
$this->assertEquals($expected, $result);
$this->assertEquals($haystack, $stringy);
}
/**
* @dataProvider stringsForSurround
* @dataProvider surroundProvider()
*/
public function testSurround($expected, $str, $substring)
{
@@ -313,7 +386,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForInsert
* @dataProvider insertProvider()
*/
public function testInsert($expected, $str, $substring, $index,
$encoding = null)
@@ -326,7 +399,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForTruncate
* @dataProvider truncateProvider()
*/
public function testTruncate($expected, $str, $length, $substring = '',
$encoding = null)
@@ -339,7 +412,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForReverse
* @dataProvider reverseProvider()
*/
public function testReverse($expected, $str, $encoding = null)
{
@@ -351,7 +424,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForShuffle
* @dataProvider shuffleProvider()
*/
public function testShuffle($str, $encoding = null)
{
@@ -374,7 +447,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForTrim
* @dataProvider trimProvider()
*/
public function testTrim($expected, $str)
{
@@ -386,7 +459,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForLongestCommonPrefix
* @dataProvider longestCommonPrefixProvider()
*/
public function testLongestCommonPrefix($expected, $str, $otherStr,
$encoding = null)
@@ -399,7 +472,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForLongestCommonSubstring
* @dataProvider longestCommonSubstringProvider()
*/
public function testLongestCommonSubstring($expected, $str, $otherStr,
$encoding = null)
@@ -412,7 +485,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForLength
* @dataProvider lengthProvider()
*/
public function testLength($expected, $str, $encoding = null)
{
@@ -424,7 +497,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForSubstr
* @dataProvider substrProvider()
*/
public function testSubstr($expected, $str, $start, $length = null,
$encoding = null)
@@ -437,7 +510,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForAt
* @dataProvider atProvider()
*/
public function testAt($expected, $str, $index, $encoding = null)
{
@@ -449,7 +522,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForFirst
* @dataProvider firstProvider()
*/
public function testFirst($expected, $str, $n, $encoding = null)
{
@@ -461,7 +534,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForLast
* @dataProvider lastProvider()
*/
public function testLast($expected, $str, $n, $encoding = null)
{
@@ -473,7 +546,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForEnsureLeft
* @dataProvider ensureLeftProvider()
*/
public function testEnsureLeft($expected, $str, $substring, $encoding = null)
{
@@ -485,7 +558,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForEnsureRight
* @dataProvider ensureRightProvider()
*/
public function testEnsureRight($expected, $str, $substring, $encoding = null)
{
@@ -497,7 +570,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForRemoveLeft
* @dataProvider removeLeftProvider()
*/
public function testRemoveLeft($expected, $str, $substring, $encoding = null)
{
@@ -509,7 +582,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForRemoveRight
* @dataProvider removeRightProvider()
*/
public function testRemoveRight($expected, $str, $substring, $encoding = null)
{
@@ -521,7 +594,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForIsAlpha
* @dataProvider isAlphaProvider()
*/
public function testIsAlpha($expected, $str, $encoding = null)
{
@@ -533,7 +606,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForIsAlphanumeric
* @dataProvider isAlphanumericProvider()
*/
public function testIsAlphanumeric($expected, $str, $encoding = null)
{
@@ -545,7 +618,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForIsBlank
* @dataProvider isBlankProvider()
*/
public function testIsBlank($expected, $str, $encoding = null)
{
@@ -557,7 +630,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForIsJson
* @dataProvider isJsonProvider()
*/
public function testIsJson($expected, $str, $encoding = null)
{
@@ -569,7 +642,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForIsLowerCase
* @dataProvider isLowerCaseProvider()
*/
public function testIsLowerCase($expected, $str, $encoding = null)
{
@@ -581,7 +654,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForIsSerialized
* @dataProvider isSerializedProvider()
*/
public function testIsSerialized($expected, $str, $encoding = null)
{
@@ -593,7 +666,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForIsUpperCase
* @dataProvider isUpperCaseProvider()
*/
public function testIsUpperCase($expected, $str, $encoding = null)
{
@@ -605,7 +678,7 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForIsHexadecimal
* @dataProvider isHexadecimalProvider()
*/
public function testIsHexadecimal($expected, $str, $encoding = null)
{
@@ -617,25 +690,39 @@ class StringyTestCase extends CommonTest
}
/**
* @dataProvider stringsForCount
* @dataProvider countProvider()
*/
public function testCount($expected, $str, $substring, $encoding = null)
public function testCount($expected, $str, $substring, $caseSensitive = true,
$encoding = null)
{
$stringy = S::create($str, $encoding);
$result = $stringy->count($substring);
$result = $stringy->count($substring, $caseSensitive);
$this->assertInternalType('int', $result);
$this->assertEquals($expected, $result);
$this->assertEquals($str, $stringy);
}
/**
* @dataProvider stringsForReplace
* @dataProvider replaceProvider()
*/
public function testReplace($expected, $str, $search, $replace,
public function testReplace($expected, $str, $search, $replacement,
$encoding = null)
{
$stringy = S::create($str, $encoding);
$result = $stringy->replace($search, $replace);
$result = $stringy->replace($search, $replacement);
$this->assertInstanceOf('Stringy\Stringy', $result);
$this->assertEquals($expected, $result);
$this->assertEquals($str, $stringy);
}
/**
* @dataProvider regexReplaceProvider()
*/
public function testregexReplace($expected, $str, $pattern, $replacement,
$options = 'msr', $encoding = null)
{
$stringy = S::create($str, $encoding);
$result = $stringy->regexReplace($pattern, $replacement, $options);
$this->assertInstanceOf('Stringy\Stringy', $result);
$this->assertEquals($expected, $result);
$this->assertEquals($str, $stringy);