Clear Up
SharpKit Reference

Inflector Class

General purpose inflector class that pluralizes, singularizes and 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.

Namespace: Ext.util

Base Types

Methods

Name Description
callOverridden(object) Call the original method that was previously overridden with override
  Ext.define('My.Cat', {
            constructor: function() {
            alert("I'm a cat!");
            }
            });
            My.Cat.override({
            constructor: function() {
            alert("I'm going to be a cat!");
            this.callOverridden();
            alert("Meeeeoooowwww");
            }
            });
            var kitty = new My.Cat(); // alerts "I'm going to be a cat!"
            // alerts "I'm a cat!"
            // alerts "Meeeeoooowwww"
            

This method has been deprecated

as of 4.1. Use callParent instead.

callParent(object) Call the "parent" method of the current method. That is the method previously overridden by derivation or by an override (see Ext.define).
  Ext.define('My.Base', {
            constructor: function (x) {
            this.x = x;
            },
            statics: {
            method: function (x) {
            return x;
            }
            }
            });
            Ext.define('My.Derived', {
            extend: 'My.Base',
            constructor: function () {
            this.callParent([21]);
            }
            });
            var obj = new My.Derived();
            alert(obj.x);  // alerts 21
            
This can be used with an override as follows:
  Ext.define('My.DerivedOverride', {
            override: 'My.Derived',
            constructor: function (x) {
            this.callParent([x*2]); // calls original My.Derived constructor
            }
            });
            var obj = new My.Derived();
            alert(obj.x);  // now alerts 42
            
This also works with static methods.
  Ext.define('My.Derived2', {
            extend: 'My.Base',
            statics: {
            method: function (x) {
            return this.callParent([x*2]); // calls My.Base.method
            }
            }
            });
            alert(My.Base.method(10);     // alerts 10
            alert(My.Derived2.method(10); // alerts 20
            
Lastly, it also works with overridden static methods.
  Ext.define('My.Derived2Override', {
            override: 'My.Derived2',
            statics: {
            method: function (x) {
            return this.callParent([x*2]); // calls My.Derived2.method
            }
            }
            });
            alert(My.Derived2.method(10); // now alerts 40
            
classify(JsString) Returns the correct Model name for a given string. Mostly used internally by the data package
clearPlurals() Removes all registered pluralization rules
clearSingulars() Removes all registered singularization rules
getInitialConfig(object) Returns the initial configuration passed to constructor when instantiating this class.
initConfig(object) Initialize configuration for this class. a typical example:
  Ext.define('My.awesome.Class', {
            // The default config
            config: {
            name: 'Awesome',
            isAwesome: true
            },
            constructor: function(config) {
            this.initConfig(config);
            }
            });
            var awesome = new My.awesome.Class({
            name: 'Super Awesome'
            });
            alert(awesome.getName()); // 'Super Awesome'
            
isTransnumeral(JsString) Returns true if the given word is transnumeral (the word is its own singular and plural form - e.g. sheep, fish)
ordinalize(JsNumber) 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
plural(JsRegExp, JsString) Adds a new pluralization rule to the Inflector. See the intro docs for more information
pluralize(JsString) Returns the pluralized form of a word (e.g. Ext.util.Inflector.pluralize('word') returns 'words')
singular(JsRegExp, JsString) Adds a new singularization rule to the Inflector. See the intro docs for more information
singularize(JsString) Returns the singularized form of a word (e.g. Ext.util.Inflector.singularize('words') returns 'word')
statics() Get the reference to the class from which this object was instantiated. Note that unlike self, this.statics() is scope-independent and it always returns the class from which it was called, regardless of what this points to during run-time
  Ext.define('My.Cat', {
            statics: {
            totalCreated: 0,
            speciesName: 'Cat' // My.Cat.speciesName = 'Cat'
            },
            constructor: function() {
            var statics = this.statics();
            alert(statics.speciesName);     // always equals to 'Cat' no matter what 'this' refers to
            // equivalent to: My.Cat.speciesName
            alert(this.self.speciesName);   // dependent on 'this'
            statics.totalCreated++;
            },
            clone: function() {
            var cloned = new this.self;                      // dependent on 'this'
            cloned.groupName = this.statics().speciesName;   // equivalent to: My.Cat.speciesName
            return cloned;
            }
            });
            Ext.define('My.SnowLeopard', {
            extend: 'My.Cat',
            statics: {
            speciesName: 'Snow Leopard'     // My.SnowLeopard.speciesName = 'Snow Leopard'
            },
            constructor: function() {
            this.callParent();
            }
            });
            var cat = new My.Cat();                 // alerts 'Cat', then alerts 'Cat'
            var snowLeopard = new My.SnowLeopard(); // alerts 'Cat', then alerts 'Snow Leopard'
            var clone = snowLeopard.clone();
            alert(Ext.getClassName(clone));         // alerts 'My.SnowLeopard'
            alert(clone.groupName);                 // alerts 'Cat'
            alert(My.Cat.totalCreated);             // alerts 3
            
© Copyright 2005-2011 SharpKit. All rights reserved.