From f5a519822db2201b98f822ad4f8659bad2ce9bcd Mon Sep 17 00:00:00 2001 From: Derek Allard Date: Wed, 11 Jul 2007 19:35:09 +0000 Subject: inflector helper changes to account for words ending in "s" --- system/helpers/inflector_helper.php | 78 +++++++++++++++++++------------- user_guide/changelog.html | 3 +- user_guide/helpers/inflector_helper.html | 5 +- 3 files changed, 52 insertions(+), 34 deletions(-) diff --git a/system/helpers/inflector_helper.php b/system/helpers/inflector_helper.php index fbe851f3b..28ecf5201 100644 --- a/system/helpers/inflector_helper.php +++ b/system/helpers/inflector_helper.php @@ -39,26 +39,31 @@ */ function singular($str) { - $str = strtolower(trim($str)); - $end = substr($str, -3); - - if ($end == 'ies') - { - $str = substr($str, 0, strlen($str)-3).'y'; - } - else - { - $end = substr($str, -1); - - if ($end == 's') - { - $str = substr($str, 0, strlen($str)-1); - } - } - - return $str; + $str = strtolower(trim($str)); + $end = substr($str, -3); + + if ($end == 'ies') + { + $str = substr($str, 0, strlen($str)-3).'y'; + } + elseif ($end == 'ses') + { + $str = substr($str, 0, strlen($str)-2); + } + else + { + $end = substr($str, -1); + + if ($end == 's') + { + $str = substr($str, 0, strlen($str)-1); + } + } + + return $str; } + // -------------------------------------------------------------------- /** @@ -68,25 +73,34 @@ function singular($str) * * @access public * @param string + * @param bool * @return str */ -function plural($str) +function plural($str, $force = FALSE) { - $str = strtolower(trim($str)); - $end = substr($str, -1); - - if ($end == 'y') - { - $str = substr($str, 0, strlen($str)-1).'ies'; - } - elseif ($end != 's') - { - $str .= 's'; - } - - return $str; + $str = strtolower(trim($str)); + $end = substr($str, -1); + + if ($end == 'y') + { + $str = substr($str, 0, strlen($str)-1).'ies'; + } + elseif ($end == 's') + { + if ($force == TRUE) + { + $str .= 'es'; + } + } + else + { + $str .= 's'; + } + + return $str; } + // -------------------------------------------------------------------- /** diff --git a/user_guide/changelog.html b/user_guide/changelog.html index c8ad1a9b0..5435864d4 100644 --- a/user_guide/changelog.html +++ b/user_guide/changelog.html @@ -69,6 +69,7 @@ Change Log
  • Added array to string into the profiler
  • Added some additional mime types in application/config/mimes.php
  • Added filename_security() method to Input library
  • +
  • Added some additional arguements to the Inflection helper singular() to compensate for words ending in "s". Also added a force parameter to pluralize()
  • Fixed MSSQL insert_id().
  • Fixed a logic error in the DB trans_status() function. It was incorrectly returning TRUE on failure and FALSE on success.
  • Fixed a bug that was allowing multiple load attempts on extended classes.
  • @@ -80,7 +81,7 @@ Change Log
  • Fixed a bug in router that was ignoring the scaffolding route for optimization
  • Fixed an IP validation bug.
  • Fixed various doc typos.
  • -
  • Docs now validate to XHTML 1 transitional
  • +
  • Docs now validate to XHTML 1 transitional
  • Fixed a bug where one could unset certain PHP superglobals by setting them via GET or POST data
  • Updated the XSS Filtering to take into account the IE expression() ability and improved certain deletions to prevent possible exploits
  • Modified the Router so that when Query Strings are Enabled, the controller trigger and function trigger values are sanitized for filename include security.
  • diff --git a/user_guide/helpers/inflector_helper.html b/user_guide/helpers/inflector_helper.html index 2a4ee559f..91de2e20f 100644 --- a/user_guide/helpers/inflector_helper.html +++ b/user_guide/helpers/inflector_helper.html @@ -94,8 +94,11 @@ echo plural($word); // Returns "dogs" -

    camelize()

    +

    To force a word to end with "es" use a second "true" argument.

    + $word = "pass";
    +echo plural($word); // Returns "passes"
    +

    camelize()

    Changes a string of words separated by spaces or underscores to camel case. Example:

    -- cgit v1.2.3-24-g4f1b