| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316 | 
							- <!DOCTYPE html>
 
- <html>
 
- <head>
 
-   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
-   <title>The source code</title>
 
-   <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
 
-   <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
 
-   <style type="text/css">
 
-     .highlight { display: block; background-color: #ddd; }
 
-   </style>
 
-   <script type="text/javascript">
 
-     function highlight() {
 
-       document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
 
-     }
 
-   </script>
 
- </head>
 
- <body onload="prettyPrint(); highlight();">
 
-   <pre class="prettyprint lang-js"><span id='Ext-util-Inflector'>/**
 
- </span> * General purpose inflector class that {@link #pluralize pluralizes}, {@link #singularize singularizes} and
 
-  * {@link #ordinalize ordinalizes} words. Sample usage:
 
-  *
 
-  *     //turning singular words into plurals
 
-  *     Ext.util.Inflector.pluralize('word'); //'words'
 
-  *     Ext.util.Inflector.pluralize('person'); //'people'
 
-  *     Ext.util.Inflector.pluralize('sheep'); //'sheep'
 
-  *
 
-  *     //turning plurals into singulars
 
-  *     Ext.util.Inflector.singularize('words'); //'word'
 
-  *     Ext.util.Inflector.singularize('people'); //'person'
 
-  *     Ext.util.Inflector.singularize('sheep'); //'sheep'
 
-  *
 
-  *     //ordinalizing numbers
 
-  *     Ext.util.Inflector.ordinalize(11); //"11th"
 
-  *     Ext.util.Inflector.ordinalize(21); //"21st"
 
-  *     Ext.util.Inflector.ordinalize(1043); //"1043rd"
 
-  *
 
-  * # Customization
 
-  *
 
-  * The Inflector comes with a default set of US English pluralization rules. These can be augmented with additional
 
-  * rules if the default rules do not meet your application's requirements, or swapped out entirely for other languages.
 
-  * Here is how we might add a rule that pluralizes "ox" to "oxen":
 
-  *
 
-  *     Ext.util.Inflector.plural(/^(ox)$/i, "$1en");
 
-  *
 
-  * Each rule consists of two items - a regular expression that matches one or more rules, and a replacement string. In
 
-  * this case, the regular expression will only match the string "ox", and will replace that match with "oxen". Here's
 
-  * how we could add the inverse rule:
 
-  *
 
-  *     Ext.util.Inflector.singular(/^(ox)en$/i, "$1");
 
-  *
 
-  * Note that the ox/oxen rules are present by default.
 
-  */
 
- Ext.define('Ext.util.Inflector', {
 
-     /* Begin Definitions */
 
-     singleton: true,
 
-     /* End Definitions */
 
- <span id='Ext-util-Inflector-property-plurals'>    /**
 
- </span>     * @private
 
-      * The registered plural tuples. Each item in the array should contain two items - the first must be a regular
 
-      * expression that matchers the singular form of a word, the second must be a String that replaces the matched
 
-      * part of the regular expression. This is managed by the {@link #plural} method.
 
-      * @property {Array} plurals
 
-      */
 
-     plurals: [
 
-         [(/(quiz)$/i),                "$1zes"  ],
 
-         [(/^(ox)$/i),                 "$1en"   ],
 
-         [(/([m|l])ouse$/i),           "$1ice"  ],
 
-         [(/(matr|vert|ind)ix|ex$/i),  "$1ices" ],
 
-         [(/(x|ch|ss|sh)$/i),          "$1es"   ],
 
-         [(/([^aeiouy]|qu)y$/i),       "$1ies"  ],
 
-         [(/(hive)$/i),                "$1s"    ],
 
-         [(/(?:([^f])fe|([lr])f)$/i),  "$1$2ves"],
 
-         [(/sis$/i),                   "ses"    ],
 
-         [(/([ti])um$/i),              "$1a"    ],
 
-         [(/(buffal|tomat|potat)o$/i), "$1oes"  ],
 
-         [(/(bu)s$/i),                 "$1ses"  ],
 
-         [(/(alias|status|sex)$/i),    "$1es"   ],
 
-         [(/(octop|vir)us$/i),         "$1i"    ],
 
-         [(/(ax|test)is$/i),           "$1es"   ],
 
-         [(/^person$/),                "people" ],
 
-         [(/^man$/),                   "men"    ],
 
-         [(/^(child)$/),               "$1ren"  ],
 
-         [(/s$/i),                     "s"      ],
 
-         [(/$/),                       "s"      ]
 
-     ],
 
- <span id='Ext-util-Inflector-property-singulars'>    /**
 
- </span>     * @private
 
-      * The set of registered singular matchers. Each item in the array should contain two items - the first must be a
 
-      * regular expression that matches the plural form of a word, the second must be a String that replaces the
 
-      * matched part of the regular expression. This is managed by the {@link #singular} method.
 
-      * @property {Array} singulars
 
-      */
 
-     singulars: [
 
-       [(/(quiz)zes$/i),                                                    "$1"     ],
 
-       [(/(matr)ices$/i),                                                   "$1ix"   ],
 
-       [(/(vert|ind)ices$/i),                                               "$1ex"   ],
 
-       [(/^(ox)en/i),                                                       "$1"     ],
 
-       [(/(alias|status)es$/i),                                             "$1"     ],
 
-       [(/(octop|vir)i$/i),                                                 "$1us"   ],
 
-       [(/(cris|ax|test)es$/i),                                             "$1is"   ],
 
-       [(/(shoe)s$/i),                                                      "$1"     ],
 
-       [(/(o)es$/i),                                                        "$1"     ],
 
-       [(/(bus)es$/i),                                                      "$1"     ],
 
-       [(/([m|l])ice$/i),                                                   "$1ouse" ],
 
-       [(/(x|ch|ss|sh)es$/i),                                               "$1"     ],
 
-       [(/(m)ovies$/i),                                                     "$1ovie" ],
 
-       [(/(s)eries$/i),                                                     "$1eries"],
 
-       [(/([^aeiouy]|qu)ies$/i),                                            "$1y"    ],
 
-       [(/([lr])ves$/i),                                                    "$1f"    ],
 
-       [(/(tive)s$/i),                                                      "$1"     ],
 
-       [(/(hive)s$/i),                                                      "$1"     ],
 
-       [(/([^f])ves$/i),                                                    "$1fe"   ],
 
-       [(/(^analy)ses$/i),                                                  "$1sis"  ],
 
-       [(/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i), "$1$2sis"],
 
-       [(/([ti])a$/i),                                                      "$1um"   ],
 
-       [(/(n)ews$/i),                                                       "$1ews"  ],
 
-       [(/people$/i),                                                       "person" ],
 
-       [(/s$/i),                                                            ""       ]
 
-     ],
 
- <span id='Ext-util-Inflector-property-uncountable'>    /**
 
- </span>     * @private
 
-      * The registered uncountable words
 
-      * @property {String[]} uncountable
 
-      */
 
-      uncountable: [
 
-         "sheep",
 
-         "fish",
 
-         "series",
 
-         "species",
 
-         "money",
 
-         "rice",
 
-         "information",
 
-         "equipment",
 
-         "grass",
 
-         "mud",
 
-         "offspring",
 
-         "deer",
 
-         "means"
 
-     ],
 
- <span id='Ext-util-Inflector-method-singular'>    /**
 
- </span>     * Adds a new singularization rule to the Inflector. See the intro docs for more information
 
-      * @param {RegExp} matcher The matcher regex
 
-      * @param {String} replacer The replacement string, which can reference matches from the matcher argument
 
-      */
 
-     singular: function(matcher, replacer) {
 
-         this.singulars.unshift([matcher, replacer]);
 
-     },
 
- <span id='Ext-util-Inflector-method-plural'>    /**
 
- </span>     * Adds a new pluralization rule to the Inflector. See the intro docs for more information
 
-      * @param {RegExp} matcher The matcher regex
 
-      * @param {String} replacer The replacement string, which can reference matches from the matcher argument
 
-      */
 
-     plural: function(matcher, replacer) {
 
-         this.plurals.unshift([matcher, replacer]);
 
-     },
 
- <span id='Ext-util-Inflector-method-clearSingulars'>    /**
 
- </span>     * Removes all registered singularization rules
 
-      */
 
-     clearSingulars: function() {
 
-         this.singulars = [];
 
-     },
 
- <span id='Ext-util-Inflector-method-clearPlurals'>    /**
 
- </span>     * Removes all registered pluralization rules
 
-      */
 
-     clearPlurals: function() {
 
-         this.plurals = [];
 
-     },
 
- <span id='Ext-util-Inflector-method-isTransnumeral'>    /**
 
- </span>     * Returns true if the given word is transnumeral (the word is its own singular and plural form - e.g. sheep, fish)
 
-      * @param {String} word The word to test
 
-      * @return {Boolean} True if the word is transnumeral
 
-      */
 
-     isTransnumeral: function(word) {
 
-         return Ext.Array.indexOf(this.uncountable, word) != -1;
 
-     },
 
- <span id='Ext-util-Inflector-method-pluralize'>    /**
 
- </span>     * Returns the pluralized form of a word (e.g. Ext.util.Inflector.pluralize('word') returns 'words')
 
-      * @param {String} word The word to pluralize
 
-      * @return {String} The pluralized form of the word
 
-      */
 
-     pluralize: function(word) {
 
-         if (this.isTransnumeral(word)) {
 
-             return word;
 
-         }
 
-         var plurals = this.plurals,
 
-             length  = plurals.length,
 
-             tuple, regex, i;
 
-         for (i = 0; i < length; i++) {
 
-             tuple = plurals[i];
 
-             regex = tuple[0];
 
-             if (regex == word || (regex.test && regex.test(word))) {
 
-                 return word.replace(regex, tuple[1]);
 
-             }
 
-         }
 
-         return word;
 
-     },
 
- <span id='Ext-util-Inflector-method-singularize'>    /**
 
- </span>     * Returns the singularized form of a word (e.g. Ext.util.Inflector.singularize('words') returns 'word')
 
-      * @param {String} word The word to singularize
 
-      * @return {String} The singularized form of the word
 
-      */
 
-     singularize: function(word) {
 
-         if (this.isTransnumeral(word)) {
 
-             return word;
 
-         }
 
-         var singulars = this.singulars,
 
-             length    = singulars.length,
 
-             tuple, regex, i;
 
-         for (i = 0; i < length; i++) {
 
-             tuple = singulars[i];
 
-             regex = tuple[0];
 
-             if (regex == word || (regex.test && regex.test(word))) {
 
-                 return word.replace(regex, tuple[1]);
 
-             }
 
-         }
 
-         return word;
 
-     },
 
- <span id='Ext-util-Inflector-method-classify'>    /**
 
- </span>     * Returns the correct {@link Ext.data.Model Model} name for a given string. Mostly used internally by the data
 
-      * package
 
-      * @param {String} word The word to classify
 
-      * @return {String} The classified version of the word
 
-      */
 
-     classify: function(word) {
 
-         return Ext.String.capitalize(this.singularize(word));
 
-     },
 
- <span id='Ext-util-Inflector-method-ordinalize'>    /**
 
- </span>     * Ordinalizes a given number by adding a prefix such as 'st', 'nd', 'rd' or 'th' based on the last digit of the
 
-      * number. 21 -> 21st, 22 -> 22nd, 23 -> 23rd, 24 -> 24th etc
 
-      * @param {Number} number The number to ordinalize
 
-      * @return {String} The ordinalized number
 
-      */
 
-     ordinalize: function(number) {
 
-         var parsed = parseInt(number, 10),
 
-             mod10  = parsed % 10,
 
-             mod100 = parsed % 100;
 
-         //11 through 13 are a special case
 
-         if (11 <= mod100 && mod100 <= 13) {
 
-             return number + "th";
 
-         } else {
 
-             switch(mod10) {
 
-                 case 1 : return number + "st";
 
-                 case 2 : return number + "nd";
 
-                 case 3 : return number + "rd";
 
-                 default: return number + "th";
 
-             }
 
-         }
 
-     }
 
- }, function() {
 
-     //aside from the rules above, there are a number of words that have irregular pluralization so we add them here
 
-     var irregulars = {
 
-             alumnus: 'alumni',
 
-             cactus : 'cacti',
 
-             focus  : 'foci',
 
-             nucleus: 'nuclei',
 
-             radius: 'radii',
 
-             stimulus: 'stimuli',
 
-             ellipsis: 'ellipses',
 
-             paralysis: 'paralyses',
 
-             oasis: 'oases',
 
-             appendix: 'appendices',
 
-             index: 'indexes',
 
-             beau: 'beaux',
 
-             bureau: 'bureaux',
 
-             tableau: 'tableaux',
 
-             woman: 'women',
 
-             child: 'children',
 
-             man: 'men',
 
-             corpus:	'corpora',
 
-             criterion: 'criteria',
 
-             curriculum:	'curricula',
 
-             genus: 'genera',
 
-             memorandum:	'memoranda',
 
-             phenomenon:	'phenomena',
 
-             foot: 'feet',
 
-             goose: 'geese',
 
-             tooth: 'teeth',
 
-             antenna: 'antennae',
 
-             formula: 'formulae',
 
-             nebula: 'nebulae',
 
-             vertebra: 'vertebrae',
 
-             vita: 'vitae'
 
-         },
 
-         singular;
 
-     for (singular in irregulars) {
 
-         this.plural(singular, irregulars[singular]);
 
-         this.singular(irregulars[singular], singular);
 
-     }
 
- });</pre>
 
- </body>
 
- </html>
 
 
  |