Файл: Form Generator/Project Files/system/helpers/inflector_helper.php
Строк: 122
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
 * CodeIgniter
 *
 * An open source application development framework for PHP 5.1.6 or newer
 *
 * @package        CodeIgniter
 * @author        ExpressionEngine Dev Team
 * @copyright    Copyright (c) 2008 - 2011, EllisLab, Inc.
 * @license        http://codeigniter.com/user_guide/license.html
 * @link        http://codeigniter.com
 * @since        Version 1.0
 * @filesource
 */
// ------------------------------------------------------------------------
/**
 * CodeIgniter Inflector Helpers
 *
 * @package        CodeIgniter
 * @subpackage    Helpers
 * @category    Helpers
 * @author        ExpressionEngine Dev Team
 * @link        http://codeigniter.com/user_guide/helpers/directory_helper.html
 */
// --------------------------------------------------------------------
/**
 * Singular
 *
 * Takes a plural word and makes it singular
 *
 * @access    public
 * @param    string
 * @return    str
 */
if ( ! function_exists('singular'))
{
    function singular($str)
    {
        $result = strval($str);
        $singular_rules = array(
            '/(matr)ices$/'         => '1ix',
            '/(vert|ind)ices$/'     => '1ex',
            '/^(ox)en/'             => '1',
            '/(alias)es$/'          => '1',
            '/([octop|vir])i$/'     => '1us',
            '/(cris|ax|test)es$/'   => '1is',
            '/(shoe)s$/'            => '1',
            '/(o)es$/'              => '1',
            '/(bus|campus)es$/'     => '1',
            '/([m|l])ice$/'         => '1ouse',
            '/(x|ch|ss|sh)es$/'     => '1',
            '/(m)ovies$/'           => '12ovie',
            '/(s)eries$/'           => '12eries',
            '/([^aeiouy]|qu)ies$/'  => '1y',
            '/([lr])ves$/'          => '1f',
            '/(tive)s$/'            => '1',
            '/(hive)s$/'            => '1',
            '/([^f])ves$/'          => '1fe',
            '/(^analy)ses$/'        => '1sis',
            '/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/' => '12sis',
            '/([ti])a$/'            => '1um',
            '/(p)eople$/'           => '12erson',
            '/(m)en$/'              => '1an',
            '/(s)tatuses$/'         => '12tatus',
            '/(c)hildren$/'         => '12hild',
            '/(n)ews$/'             => '12ews',
            '/([^u])s$/'            => '1',
        );
        
        foreach ($singular_rules as $rule => $replacement)
        {
            if (preg_match($rule, $result))
            {
                $result = preg_replace($rule, $replacement, $result);
                break;
            }
        }
        return $result;
    }
}
// --------------------------------------------------------------------
/**
 * Plural
 *
 * Takes a singular word and makes it plural
 *
 * @access    public
 * @param    string
 * @param    bool
 * @return    str
 */
if ( ! function_exists('plural'))
{
    function plural($str, $force = FALSE)
    {
        $result = strval($str);
    
        $plural_rules = array(
            '/^(ox)$/'                 => '12en',     // ox
            '/([m|l])ouse$/'           => '1ice',      // mouse, louse
            '/(matr|vert|ind)ix|ex$/'  => '1ices',     // matrix, vertex, index
            '/(x|ch|ss|sh)$/'          => '1es',       // search, switch, fix, box, process, address
            '/([^aeiouy]|qu)y$/'       => '1ies',      // query, ability, agency
            '/(hive)$/'                => '1s',        // archive, hive
            '/(?:([^f])fe|([lr])f)$/'  => '12ves',    // half, safe, wife
            '/sis$/'                   => 'ses',        // basis, diagnosis
            '/([ti])um$/'              => '1a',        // datum, medium
            '/(p)erson$/'              => '1eople',    // person, salesperson
            '/(m)an$/'                 => '1en',       // man, woman, spokesman
            '/(c)hild$/'               => '1hildren',  // child
            '/(buffal|tomat)o$/'       => '12oes',    // buffalo, tomato
            '/(bu|campu)s$/'           => '12ses',    // bus, campus
            '/(alias|status|virus)/'   => '1es',       // alias
            '/(octop)us$/'             => '1i',        // octopus
            '/(ax|cris|test)is$/'      => '1es',       // axis, crisis
            '/s$/'                     => 's',          // no change (compatibility)
            '/$/'                      => 's',
        );
        foreach ($plural_rules as $rule => $replacement)
        {
            if (preg_match($rule, $result))
            {
                $result = preg_replace($rule, $replacement, $result);
                break;
            }
        }
        return $result;
    }
}
// --------------------------------------------------------------------
/**
 * Camelize
 *
 * Takes multiple words separated by spaces or underscores and camelizes them
 *
 * @access    public
 * @param    string
 * @return    str
 */
if ( ! function_exists('camelize'))
{
    function camelize($str)
    {
        $str = 'x'.strtolower(trim($str));
        $str = ucwords(preg_replace('/[s_]+/', ' ', $str));
        return substr(str_replace(' ', '', $str), 1);
    }
}
// --------------------------------------------------------------------
/**
 * Underscore
 *
 * Takes multiple words separated by spaces and underscores them
 *
 * @access    public
 * @param    string
 * @return    str
 */
if ( ! function_exists('underscore'))
{
    function underscore($str)
    {
        return preg_replace('/[s]+/', '_', strtolower(trim($str)));
    }
}
// --------------------------------------------------------------------
/**
 * Humanize
 *
 * Takes multiple words separated by underscores and changes them to spaces
 *
 * @access    public
 * @param    string
 * @return    str
 */
if ( ! function_exists('humanize'))
{
    function humanize($str)
    {
        return ucwords(preg_replace('/[_]+/', ' ', strtolower(trim($str))));
    }
}
/* End of file inflector_helper.php */
/* Location: ./system/helpers/inflector_helper.php */