Files
app
assets
public
vendor
alexgarrett
composer
danielstjules
doctrine
hassankhan
illuminate
container
contracts
database
support
Debug
Facades
Traits
AggregateServiceProvider.php
Arr.php
ClassLoader.php
Collection.php
Fluent.php
Manager.php
MessageBag.php
NamespacedItemResolver.php
Pluralizer.php
ServiceProvider.php
Str.php
ViewErrorBag.php
composer.json
helpers.php
nesbot
slim
symfony
twig
autoload.php
.gitignore
README.md
composer.json
composer.lock
composer.phar
mode.php
website/vendor/illuminate/support/Pluralizer.php

104 lines
1.7 KiB
PHP
Executable File

<?php namespace Illuminate\Support;
use Doctrine\Common\Inflector\Inflector;
class Pluralizer {
/**
* Uncountable word forms.
*
* @var array
*/
public static $uncountable = array(
'audio',
'bison',
'chassis',
'compensation',
'coreopsis',
'data',
'deer',
'education',
'equipment',
'fish',
'gold',
'information',
'money',
'moose',
'offspring',
'plankton',
'police',
'rice',
'series',
'sheep',
'species',
'swine',
'traffic',
);
/**
* Get the plural form of an English word.
*
* @param string $value
* @param int $count
* @return string
*/
public static function plural($value, $count = 2)
{
if ($count === 1 || static::uncountable($value))
{
return $value;
}
$plural = Inflector::pluralize($value);
return static::matchCase($plural, $value);
}
/**
* Get the singular form of an English word.
*
* @param string $value
* @return string
*/
public static function singular($value)
{
$singular = Inflector::singularize($value);
return static::matchCase($singular, $value);
}
/**
* Determine if the given value is uncountable.
*
* @param string $value
* @return bool
*/
protected static function uncountable($value)
{
return in_array(strtolower($value), static::$uncountable);
}
/**
* Attempt to match the case on two strings.
*
* @param string $value
* @param string $comparison
* @return string
*/
protected static function matchCase($value, $comparison)
{
$functions = array('mb_strtolower', 'mb_strtoupper', 'ucfirst', 'ucwords');
foreach ($functions as $function)
{
if (call_user_func($function, $comparison) === $comparison)
{
return call_user_func($function, $value);
}
}
return $value;
}
}